diff options
194 files changed, 38439 insertions, 2922 deletions
diff --git a/.github/workflows/godot_cpp_test.yml b/.github/workflows/godot_cpp_test.yml index 57114dacfc..e1c37bbc1e 100644 --- a/.github/workflows/godot_cpp_test.yml +++ b/.github/workflows/godot_cpp_test.yml @@ -7,7 +7,7 @@ env: # Used for the cache key. Add version suffix to force clean build. GODOT_BASE_BRANCH: master # Used for the godot-cpp checkout. - GODOT_CPP_BRANCH: '4.2' + GODOT_CPP_BRANCH: '4.3' concurrency: group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-cpp-tests @@ -26,10 +26,13 @@ ChibiDenDen <pdaniq@gmail.com> Chris Bradfield <chris@kidscancode.org> <cb@scribe.net> Clay John <claynjohn@gmail.com> Clay John <claynjohn@gmail.com> <clayjohn@shaw.ca> +CookieBadger <emil.dobetsberger@gmail.com> Dana Olson <dana@shineuponthee.com> <adolson@gmail.com> dankan1890 <mewuidev2@gmail.com> Daniel J. Ramirez <djrmuv@gmail.com> David Cambré <david.cambre@gmail.com> <David.Cambre@gmail.com> +DmitriySalnikov <salnikov.mine@yandex.ru> +DmitriySalnikov <salnikov.mine@yandex.ru> <dimokgamer@gmail.com> Dominik 'dreamsComeTrue' Jasiński <dominikjasinski@o2.pl> DeeJayLSP <djlsplays@gmail.com> <60024671+DeeJayLSP@users.noreply.github.com> Emmanuel Barroga <emmanuelbarroga@gmail.com> @@ -66,6 +69,8 @@ Ignacio Etcheverry <ignalfonsore@gmail.com> <neikeq@users.noreply.github.com> Ilaria Cislaghi <cislaghi.ilaria@gmail.com> Ilaria Cislaghi <cislaghi.ilaria@gmail.com> <ilaria.cislaghi@simedis.com> Indah Sylvia <ISylvox@yahoo.com> +Ivan Shakhov <ivan.shakhov@jetbrains.com> <Ivan.Shakhov@jetbrains.com> +Ivan Shakhov <ivan.shakhov@jetbrains.com> <van800@gmail.com> iwek <miwanczuk7@gmail.com> J08nY <johny@neuromancer.sk> <jancar.jj@gmail.com> J08nY <johny@neuromancer.sk> <J08nY@users.noreply.github.com> @@ -108,6 +113,7 @@ Marcin Zawiejski <dragmz@gmail.com> Marcus Elg <marcusaccounts@yahoo.se> Mariano Javier Suligoy <marianognu.easyrpg@gmail.com> Mario Schlack <m4r10.5ch14ck@gmail.com> +Mark DiBarry <markdibarry@protonmail.com> marxin <mliska@suse.cz> marynate <mary.w.nate@gmail.com> <marynate@github.com> Mateo Kuruk Miccino <mateomiccino@gmail.com> diff --git a/AUTHORS.md b/AUTHORS.md index 0f000a1a75..76d78dcefa 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -28,8 +28,10 @@ name is available. (in alphabetical order, with over 10 commits excluding merges) Aaron Franke (aaronfranke) + Aaron Pagano (aaronp64) Aaron Record (LightningAA) Adam Scott (adamscott) + Alexander Hartmann (Alex2782) Alexander Holland (AlexHolly) Alex Drozd (brno32) Alexey Khoroshavin (allkhor) @@ -58,8 +60,8 @@ name is available. Bernhard Liebl (poke1024) Bhuvan Vemula (Bhu1-V) bitsawer - BlueCube3310 Błażej Szczygieł (zaps166) + BlueCube3310 Bojidar Marinov (bojidar-bg) Brian Semrau (briansemrau) Bruno Lourenço (MadEqua) @@ -70,8 +72,10 @@ name is available. Carter Anderson (cart) ChibiDenDen Chris Bradfield (cbscribe) + Christian Kaiser (ckaiser) Clay John (clayjohn) ConteZero + CookieBadger Dana Olson (adolson) Daniel J. Ramirez (djrm) Daniel Rakos (aqnuep) @@ -89,6 +93,7 @@ name is available. Douglas Leão (DeeJayLSP) DualMatrix Ellen Poe (ellenhp) + Emilio Coppola (coppolaemilio) Emmanuel Barroga (codecustard) Emmanuel Leblond (touilleMan) Eoin O'Neill (Eoin-ONeill-Yokai) @@ -120,6 +125,7 @@ name is available. Haoyu Qiu (timothyqiu) Hein-Pieter van Braam-Stewart (hpvb) Hendrik Brucker (Geometror) + Hilderin hilfazer Hiroshi Ogawa (hi-ogawa) HolonProduction @@ -128,10 +134,11 @@ name is available. Hugo Locurcio (Calinou) Ian Bishop (ianb96) Ibrahn Sahir (ibrahn) - Ignacio Etcheverry (neikeq) + Ignacio Roldán Etcheverry (neikeq) Igor Kordiukiewicz (IgorKordiukiewicz) Ilaria Cislaghi (QbieShay) Indah Sylvia (ISylvox) + Ivan Šachov (van800) J08nY Jake Young (Duroxxigar) Jakub Grzesik (kubecz3k) @@ -167,6 +174,8 @@ name is available. Lucien Menassol (Kanabenki) Lyuma Maganty Rushyendra (mrushyendra) + Magian (magian1127) + Mai Lavelle (maiself) Malcolm Nixon (Malcolmnixon) Manuele Finocchiaro (m4nu3lf) Marcel Admiraal (madmiraal) @@ -179,6 +188,7 @@ name is available. Mario Schlack (hurikhan) Marios Staikopoulos (marstaik) Marius Hanl (Maran23) + Mark DiBarry (markdibarry) Mark Riedesel (klowner) Markus Sauermann (Sauermann) Martin Capitanio (capnm) @@ -206,6 +216,7 @@ name is available. Muhammad Huri (CakHuri) muiroc myaaaaaaaaa + Nathalie Galla (MurderVeggie) Nathan Franke (nathanfranke) Nathan Lovato (NathanLovato) Nathan Warden (NathanWarden) @@ -235,8 +246,8 @@ name is available. Poommetee Ketson (Noshyaar) Przemysław Gołąb (n-pigeon) Rafael M. G. (rafallus) - Raffaele Picca (RPicster) Rafał Mikrut (qarmin) + Raffaele Picca (RPicster) Ralf Hölzemer (rollenrolm) Ramesh Ravone (RameshRavone) Raphael2048 @@ -304,5 +315,7 @@ name is available. Zher Huei Lee (leezh) Zi Ye (MajorMcDoom) ZuBsPaCe + Дмитрий Сальников (DmitriySalnikov) + 忘忧の (Daylily-Zeleen) 谢天 (jsjtxietian) 风青山 (Rindbee) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4d95412f7..9bc9173813 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,12 @@ previous feature release. It is equivalent to the listings on our Changelogs for earlier feature releases are available in their respective Git branches, and linked at the [end of this file](#Past-releases). -## 4.2 - 2023-11-30 +## 4.3 - 2024-08-15 -- [Release announcement](https://godotengine.org/article/godot-4-2-arrives-in-style) -- [Migration guide](https://docs.godotengine.org/en/latest/tutorials/migrating/upgrading_to_godot_4.2.html) -- [Interactive changelog](https://godotengine.github.io/godot-interactive-changelog/#4.2) -- [Breaking changes](https://github.com/godotengine/godot/pulls?q=is%3Apr+is%3Amerged+label%3A%22breaks+compat%22+milestone%3A4.2) +- [Release announcement](https://godotengine.org/releases/4.3/) +- [Migration guide](https://docs.godotengine.org/en/latest/tutorials/migrating/upgrading_to_godot_4.3.html) +- [Interactive changelog](https://godotengine.github.io/godot-interactive-changelog/#4.3) +- [Breaking changes](https://github.com/godotengine/godot/pulls?q=is%3Apr+is%3Amerged+label%3A%22breaks+compat%22+milestone%3A4.3) Table of contents: @@ -48,1895 +48,3473 @@ Table of contents: #### 2D -- Greatly improve Y-sort performance on TileMaps ([GH-73813](https://github.com/godotengine/godot/pull/73813)). -- Add separate editor plugin for TileMap and TileSet ([GH-74717](https://github.com/godotengine/godot/pull/74717)). -- Cleanup tiles outside the texture ([GH-77986](https://github.com/godotengine/godot/pull/77986)). -- Move TileMap layers to their own class ([GH-78328](https://github.com/godotengine/godot/pull/78328)). -- Add option to swap default Alt+scroll zooming behavior in 2D editor ([GH-78451](https://github.com/godotengine/godot/pull/78451)). -- Add white rect to TileMap selection tool ([GH-78519](https://github.com/godotengine/godot/pull/78519)). -- Improve string drawing in the tiledata editor ([GH-78522](https://github.com/godotengine/godot/pull/78522)). -- Make sure the shortcut key respects the context in `TileSetAtlasSourceEditor` ([GH-78920](https://github.com/godotengine/godot/pull/78920)). -- Fix `Camera2D.rotating` not being converted and reversed properly ([GH-79264](https://github.com/godotengine/godot/pull/79264)). -- Streamline creating tile atlas sources ([GH-79285](https://github.com/godotengine/godot/pull/79285)). -- Rework modifying tile source ID ([GH-79419](https://github.com/godotengine/godot/pull/79419)). -- Allow using floating-point bone sizes and outline widths in the 2D editor ([GH-79434](https://github.com/godotengine/godot/pull/79434)). -- Add option to expand tile polygon editors ([GH-79512](https://github.com/godotengine/godot/pull/79512)). -- Add `is_conformal` method to Basis and Transform2D ([GH-79523](https://github.com/godotengine/godot/pull/79523)). -- Improve message when no tile is selected to edit ([GH-79562](https://github.com/godotengine/godot/pull/79562)). -- Fix crash when deleting tileset terrains ([GH-79618](https://github.com/godotengine/godot/pull/79618)). -- Fix Camera2D crash when edited scene root is null ([GH-79645](https://github.com/godotengine/godot/pull/79645)). -- Auto create tile for multiple atlases ([GH-79678](https://github.com/godotengine/godot/pull/79678)). -- Fix `CanvasModulate` logic for modulating the canvas ([GH-79747](https://github.com/godotengine/godot/pull/79747)). -- Fix `get_cursor_shape()` in tile atlas editor ([GH-79837](https://github.com/godotengine/godot/pull/79837)). -- Fix crash when executing `TileMap.fix_invalid_tiles` ([GH-79851](https://github.com/godotengine/godot/pull/79851)). -- Improve atlas tile size dragging ([GH-79899](https://github.com/godotengine/godot/pull/79899)). -- Add help label about creating multiple/big tiles ([GH-79904](https://github.com/godotengine/godot/pull/79904)). -- Properly clear scene tiles ([GH-79941](https://github.com/godotengine/godot/pull/79941)). -- Edit TileSet source on double click ([GH-80037](https://github.com/godotengine/godot/pull/80037)). -- Fix "a number is required" error when printing RID ([GH-80122](https://github.com/godotengine/godot/pull/80122)). -- Ignore null "id" in tile source proxy ([GH-80135](https://github.com/godotengine/godot/pull/80135)). -- Add per-tile flipping and transposing ([GH-80144](https://github.com/godotengine/godot/pull/80144)). -- Fix multiple usability issues in the texture region editor ([GH-80435](https://github.com/godotengine/godot/pull/80435)). -- Fix TileSet with TileMap handling ([GH-80462](https://github.com/godotengine/godot/pull/80462)). -- Fix TileSet not disappearing on deselecting TileMap ([GH-80529](https://github.com/godotengine/godot/pull/80529)). -- TileMap: Check for possible scenes to be erased ([GH-80658](https://github.com/godotengine/godot/pull/80658)). -- Pass missing arguments to `TileMap::get_used_cells_by_id` ([GH-80729](https://github.com/godotengine/godot/pull/80729)). -- Improve scene tiles workflow ([GH-80754](https://github.com/godotengine/godot/pull/80754)). -- Simplify making texture nodes in 2D editor ([GH-80771](https://github.com/godotengine/godot/pull/80771)). -- Add `px` suffix for TileSet `separation` property ([GH-80934](https://github.com/godotengine/godot/pull/80934)). -- Convert TileSet Atlas Merge input images to RGBA8 to match output, if needed ([GH-80943](https://github.com/godotengine/godot/pull/80943)). -- Call `add_child` after `set_rect` to fix size bug ([GH-80968](https://github.com/godotengine/godot/pull/80968)). -- Added checks to remove meta arrays when creating and undoing guides ([GH-81011](https://github.com/godotengine/godot/pull/81011)). -- Improve TileMap performances by using quadrants only for rendering ([GH-81070](https://github.com/godotengine/godot/pull/81070)). -- Allow configuring primary line X/Ys separately ([GH-81255](https://github.com/godotengine/godot/pull/81255)). -- Fix `TileMap::get_used_rect` incorrectly handling empty layers ([GH-81423](https://github.com/godotengine/godot/pull/81423)). -- Fix rotated 2D movement gizmo ([GH-81735](https://github.com/godotengine/godot/pull/81735)). -- Incorporate min and max zoom limits into the EditorZoomWidget ([GH-81812](https://github.com/godotengine/godot/pull/81812)). -- Fix TileMap editor so that pressing control deselects cells correctly ([GH-81925](https://github.com/godotengine/godot/pull/81925)). -- Don't allow transforming scene tiles ([GH-81971](https://github.com/godotengine/godot/pull/81971)). -- Fix animated tile time-slice calculation accumulating float errors ([GH-82360](https://github.com/godotengine/godot/pull/82360)). -- Fix transform calculations for drag-moving CanvasItems in editor ([GH-82667](https://github.com/godotengine/godot/pull/82667)). -- Prioritize points in polygon editor hover ([GH-82853](https://github.com/godotengine/godot/pull/82853)). -- Fixes undo/redo in tileset polygon editor ([GH-83093](https://github.com/godotengine/godot/pull/83093)). -- Warn users when TileMap is set as Y-sorted but no layer is ([GH-83144](https://github.com/godotengine/godot/pull/83144)). -- Fix tilemap live editing while game is running ([GH-83146](https://github.com/godotengine/godot/pull/83146)). -- Update `TileMap` layer draw index when it's dirty ([GH-83151](https://github.com/godotengine/godot/pull/83151)). -- Swap TileMap and TileSet buttons ([GH-83244](https://github.com/godotengine/godot/pull/83244)). -- Allow disabling the built-in tilemap navigation ([GH-83273](https://github.com/godotengine/godot/pull/83273)). -- Fix cannot update remote after disabling `use_global_coordinates` in `RemoteTransform2D` ([GH-83323](https://github.com/godotengine/godot/pull/83323)). -- Fix screen center position returned for rotated Camera2D ([GH-83427](https://github.com/godotengine/godot/pull/83427)). -- Fix bug where TileMap wouldn't update material correctly on assignment ([GH-83475](https://github.com/godotengine/godot/pull/83475)). -- Allow normal maps on TileMaps that use texture padding ([GH-83489](https://github.com/godotengine/godot/pull/83489)). -- Fix Polygon2D undo on transforming vertices ([GH-83659](https://github.com/godotengine/godot/pull/83659)). -- Fix TileSet painting options appear out of screen ([GH-83790](https://github.com/godotengine/godot/pull/83790)). -- Fix normals in TileSet when using CanvasTextures ([GH-83887](https://github.com/godotengine/godot/pull/83887)). -- Fix TileMap layer reverts and defaults ([GH-83888](https://github.com/godotengine/godot/pull/83888)). -- Fix `get_used_rect`, `get_used_cells` and `get_used_cells_by_id` in TileMap after a call to `clear()` ([GH-83890](https://github.com/godotengine/godot/pull/83890)). -- Fix Y-sort origin not working when set in TileMap runtime updates ([GH-84004](https://github.com/godotengine/godot/pull/84004)). -- Fix 2D bone weight editor not accounting for offset ([GH-84070](https://github.com/godotengine/godot/pull/84070)). -- Prevent crash and error spam related to Sprite2D with a region ([GH-84361](https://github.com/godotengine/godot/pull/84361)). -- TileMap: Fix compatibility code for old `cell_quadrant_size` property name ([GH-85463](https://github.com/godotengine/godot/pull/85463)). +- Add temporary pivot for rotating multiple 2D nodes ([GH-58375](https://github.com/godotengine/godot/pull/58375)). +- Reorganize some code to have 2D things grouped together ([GH-66744](https://github.com/godotengine/godot/pull/66744)). +- Add option to toggle visibility of Position gizmos in 2D editor, organize existing options ([GH-75005](https://github.com/godotengine/godot/pull/75005)). +- Changed the way the rotation of a curve at a point is evaluated to match PathFollow2D ([GH-78378](https://github.com/godotengine/godot/pull/78378)). +- Organize 2D audio, camera, and physics in Viewport ([GH-79183](https://github.com/godotengine/godot/pull/79183)). +- Extend minimum/maximum zoom level of TextureRegion editor ([GH-79436](https://github.com/godotengine/godot/pull/79436)). +- Add tooltips for tile source types ([GH-79918](https://github.com/godotengine/godot/pull/79918)). +- Add Texture2D and Texture3D icons ([GH-81169](https://github.com/godotengine/godot/pull/81169)). +- Add a button to clear curve points in the Path2D editor ([GH-81325](https://github.com/godotengine/godot/pull/81325)). +- Improve UV editor zoom behavior ([GH-83731](https://github.com/godotengine/godot/pull/83731)). +- Fix UV editor not using texture transform ([GH-84076](https://github.com/godotengine/godot/pull/84076)). +- Fix slow raycast editing ([GH-84164](https://github.com/godotengine/godot/pull/84164)). +- Add zoom controls to Sprite2DPlugin converter preview ([GH-84353](https://github.com/godotengine/godot/pull/84353)). +- Select newly added nodes on drag and drop in 2D viewport ([GH-84356](https://github.com/godotengine/godot/pull/84356)). +- Fix generating terrain icon with certain image formats ([GH-84507](https://github.com/godotengine/godot/pull/84507)). +- Move tile transforms handling cache to TileData ([GH-84660](https://github.com/godotengine/godot/pull/84660)). +- Add region rect and frames support to Sprite2DPlugin converter ([GH-84754](https://github.com/godotengine/godot/pull/84754)). +- Fix typo in TileMap editor tooltip ([GH-85452](https://github.com/godotengine/godot/pull/85452)). +- Keep scene tiles even if the TileMap is invisible ([GH-85753](https://github.com/godotengine/godot/pull/85753)). +- Move TileMapLayer to its own files ([GH-85791](https://github.com/godotengine/godot/pull/85791)). +- Add descriptions for tile properties ([GH-85868](https://github.com/godotengine/godot/pull/85868)). +- Fix TileMap occluders ([GH-85893](https://github.com/godotengine/godot/pull/85893)). +- Change suffix of SkeletonModification2DTwoBoneIK from m to px ([GH-86056](https://github.com/godotengine/godot/pull/86056)). +- Reset TileMap editor `drag_type` when the toolbar mode is not selected ([GH-86066](https://github.com/godotengine/godot/pull/86066)). +- Fix `UndoRedo history mismatch` when creating a new tile atlas ([GH-86387](https://github.com/godotengine/godot/pull/86387)). +- Fix potential infinite loop when calculating tile editor zoom level ([GH-86568](https://github.com/godotengine/godot/pull/86568)). +- Tweak tile atlas help label positions ([GH-86694](https://github.com/godotengine/godot/pull/86694)). +- Allow `ui_cancel` to unselect all nodes in all edit modes in 2D, matching 3D behavior ([GH-86805](https://github.com/godotengine/godot/pull/86805)). +- Fix `TileMap` quadrant canvas item position not being local ([GH-86847](https://github.com/godotengine/godot/pull/86847)). +- Fix 2D viewport texture drop issue with global history registration ([GH-86933](https://github.com/godotengine/godot/pull/86933)). +- Made tooltip on `TileSet` Paint Button give more information when disabled ([GH-86947](https://github.com/godotengine/godot/pull/86947)). +- Add `CanvasItem::get_canvas_layer_node()` ([GH-87095](https://github.com/godotengine/godot/pull/87095)). +- Make TileMapLayers extend Node2D and work as children of TileMap ([GH-87115](https://github.com/godotengine/godot/pull/87115)). +- Fix some `TileMap` debug drawing truncating to ints ([GH-87160](https://github.com/godotengine/godot/pull/87160)). +- Remove unnecessary `_set_global_invalid` added by mistake ([GH-87328](https://github.com/godotengine/godot/pull/87328)). +- Update the viewport if CanvasItem top level is changed ([GH-87343](https://github.com/godotengine/godot/pull/87343)). +- Change TileMapEditor to TileMapLayerEditor ([GH-87379](https://github.com/godotengine/godot/pull/87379)). +- Add new Parallax2D node ([GH-87391](https://github.com/godotengine/godot/pull/87391)). +- Editor: Fix threading problems with `TileMap` preview ([GH-87470](https://github.com/godotengine/godot/pull/87470)). +- Prevent threading problems in `TileMap` ([GH-87478](https://github.com/godotengine/godot/pull/87478)). +- Fix `Camera2D` is enabled when dragging scene files to the `CanvasItemEditor` ([GH-87743](https://github.com/godotengine/godot/pull/87743)). +- Fix `TextureRegionEditor::_pan_callback` deferred called with only one argument ([GH-87771](https://github.com/godotengine/godot/pull/87771)). +- Fix duplicating/copying `TileMap` ([GH-88105](https://github.com/godotengine/godot/pull/88105)). +- Fix `TileMap::move_layer` incorrectly moving child `TileMapLayer` nodes ([GH-88157](https://github.com/godotengine/godot/pull/88157)). +- Fix regression where a tile's custom material was ignored ([GH-88190](https://github.com/godotengine/godot/pull/88190)). +- Fix `CanvasItem`/`Node3D` editor plugin drag drop transform calculation ([GH-88279](https://github.com/godotengine/godot/pull/88279)). +- Fix TileSet sources duplication ([GH-88280](https://github.com/godotengine/godot/pull/88280)). +- Tweak TileMap editor's missing source message to use "bottom panel" term ([GH-88290](https://github.com/godotengine/godot/pull/88290)). +- Make TileMapLayers internal ([GH-88378](https://github.com/godotengine/godot/pull/88378)). +- Remember frames when selecting `SpriteFrame` frames ([GH-88413](https://github.com/godotengine/godot/pull/88413)). +- Expose pixel snapping settings add pixel-art notes ([GH-88456](https://github.com/godotengine/godot/pull/88456)). +- Fix a memory leak with TileMap runtime updates ([GH-88629](https://github.com/godotengine/godot/pull/88629)). +- Show instantiating or inherit message when using drag to instantiate in 2D ([GH-88829](https://github.com/godotengine/godot/pull/88829)). +- TileSet: Fix crash when deleting dragged polygon point ([GH-88912](https://github.com/godotengine/godot/pull/88912)). +- Remove almost all remaining dependencies of TileMapLayer on TileMap ([GH-88966](https://github.com/godotengine/godot/pull/88966)). +- Disable lock and group buttons when selected item is not CanvasItem ([GH-88997](https://github.com/godotengine/godot/pull/88997)). +- Fix editor crash when unsupported `Resource` is dropped in scene ([GH-89126](https://github.com/godotengine/godot/pull/89126)). +- Update lock and group button state when selection changed in CanvasItemEditor ([GH-89132](https://github.com/godotengine/godot/pull/89132)). +- Expose TileMapLayer ([GH-89179](https://github.com/godotengine/godot/pull/89179)). +- Make CanvasItem's "drawing outside of NOTIFICATION_DRAW" error a macro ([GH-89298](https://github.com/godotengine/godot/pull/89298)). +- Fix center view button appears outside the GenericTilePolygonEditor ([GH-89434](https://github.com/godotengine/godot/pull/89434)). +- Fix call queue problems when loading TileSet ([GH-89493](https://github.com/godotengine/godot/pull/89493)). +- Avoid passing zoom scale for ParallaxLayer mirror ([GH-89572](https://github.com/godotengine/godot/pull/89572)). +- Account for scale in scroll logic for `Parallax2D` ([GH-89627](https://github.com/godotengine/godot/pull/89627)). +- Fix Path2D's add new point's UndoRedo bug ([GH-89874](https://github.com/godotengine/godot/pull/89874)). +- TileSet: Expose `TileData.is_valid_terrain_peering_bit` ([GH-89911](https://github.com/godotengine/godot/pull/89911)). +- Replace Clipper1 library by Clipper2 library ([GH-90153](https://github.com/godotengine/godot/pull/90153)). +- Ensure `Camera2D.position_smoothing_speed` is non-negative ([GH-90167](https://github.com/godotengine/godot/pull/90167)). +- Correctly update TileMapLayer highlighting when disabling it ([GH-90204](https://github.com/godotengine/godot/pull/90204)). +- Fix "no cached rect" errors in TileMapLayer editor ([GH-90207](https://github.com/godotengine/godot/pull/90207)). +- Fix strange visual bug with camera and external change ([GH-90317](https://github.com/godotengine/godot/pull/90317)). +- TileSet: Don't save angular and linear physics velocities if they have their default values ([GH-90384](https://github.com/godotengine/godot/pull/90384)). +- Fix selection rect drawing in `TileSet` editor when create/remove tiles with separation ([GH-90709](https://github.com/godotengine/godot/pull/90709)). +- Fix rendering transform of Y-sorted branch-root ([GH-90749](https://github.com/godotengine/godot/pull/90749)). +- Fix TileMap enabling Y-sort on child nodes ([GH-90752](https://github.com/godotengine/godot/pull/90752)). +- Reuse single erase pattern in tile editor ([GH-90817](https://github.com/godotengine/godot/pull/90817)). +- Editor: Fix crash when editing TileMap ([GH-90849](https://github.com/godotengine/godot/pull/90849)). +- Don't store TileMapLayer data if empty ([GH-90907](https://github.com/godotengine/godot/pull/90907)). +- Fix typo in Camera2D node's anchor mode ([GH-91076](https://github.com/godotengine/godot/pull/91076)). +- Fix Parallax2D physics interpolation ([GH-91706](https://github.com/godotengine/godot/pull/91706)). +- Add support for AtlasTexture in `draw_polygon()` ([GH-91724](https://github.com/godotengine/godot/pull/91724)). +- Fix 2d editor selection persisting after application loses focus ([GH-91732](https://github.com/godotengine/godot/pull/91732)). +- Fix TileMap selection pattern being needlessly reorganized ([GH-91905](https://github.com/godotengine/godot/pull/91905)). +- Allow selecting TileMapLayers by clicking them ([GH-92016](https://github.com/godotengine/godot/pull/92016)). +- Fix tile polygon grid not covering whole tile ([GH-92171](https://github.com/godotengine/godot/pull/92171)). +- Remove some TileMap dependencies from TileMapLayer ([GH-92194](https://github.com/godotengine/godot/pull/92194)). +- Display custom data name instead of indices in TileData inspector ([GH-92322](https://github.com/godotengine/godot/pull/92322)). +- Fix TileSet caching wrong collision layer shapes for shapes comprising several polygons ([GH-92373](https://github.com/godotengine/godot/pull/92373)). +- Optimize usage of position icon in 2D editor ([GH-92392](https://github.com/godotengine/godot/pull/92392)). +- Fix incorrect cull boundary for scaled and repeated Parallax2D children ([GH-92763](https://github.com/godotengine/godot/pull/92763)). +- Implement X-draw-order switch in TileMapLayer ([GH-92787](https://github.com/godotengine/godot/pull/92787)). +- Make texture filtering in TileAtlasView consistent ([GH-92926](https://github.com/godotengine/godot/pull/92926)). +- Update Camera2D gizmos when screen size changes ([GH-92992](https://github.com/godotengine/godot/pull/92992)). +- Fix tile polygon editor grid and missing update ([GH-93047](https://github.com/godotengine/godot/pull/93047)). +- Allow canceling actions in Path2D editor ([GH-93087](https://github.com/godotengine/godot/pull/93087)). +- Store TileMapLayer selection in scene's history ([GH-93475](https://github.com/godotengine/godot/pull/93475)). +- Fix snapping lines don't disappearing after drag anchors ([GH-93527](https://github.com/godotengine/godot/pull/93527)). +- Fix TileSet property painter popup showing clear color ([GH-93609](https://github.com/godotengine/godot/pull/93609)). +- Prevent selecting when a CanvasItem is selected ([GH-93671](https://github.com/godotengine/godot/pull/93671)). +- Fix some TileMapLayer editing problems ([GH-93747](https://github.com/godotengine/godot/pull/93747)). +- Fix RMB erasing of tiles ([GH-93850](https://github.com/godotengine/godot/pull/93850)). +- Fix crash in tile physics editor ([GH-93971](https://github.com/godotengine/godot/pull/93971)). +- Fix crash in the TileMapLayer editor when using editable children ([GH-93974](https://github.com/godotengine/godot/pull/93974)). +- Add pixel snap for `Parallax2D` ([GH-94014](https://github.com/godotengine/godot/pull/94014)). +- Remove unused assignment in Parallax2D ([GH-94035](https://github.com/godotengine/godot/pull/94035)). +- Fixes/node configuration warning dialog text ([GH-94147](https://github.com/godotengine/godot/pull/94147)). +- Make sure that selected tile source is remembered ([GH-94356](https://github.com/godotengine/godot/pull/94356)). #### 3D -- Re-add a Camera3D icon gizmo to the 3D editor ([GH-53104](https://github.com/godotengine/godot/pull/53104)). -- Implement numeric blender-style transforms ([GH-58389](https://github.com/godotengine/godot/pull/58389)). -- Wrap mouse for blender-style transforms ([GH-59467](https://github.com/godotengine/godot/pull/59467)). -- Improve editing of box collision shapes ([GH-71092](https://github.com/godotengine/godot/pull/71092)). -- Show visual-oriented 3D node gizmos only when selected ([GH-75303](https://github.com/godotengine/godot/pull/75303)). -- Fix Camera3D `project_*` methods not accounting for frustum offset ([GH-75806](https://github.com/godotengine/godot/pull/75806)). -- Avoid reimporting lightmap textures every getter call ([GH-77788](https://github.com/godotengine/godot/pull/77788)). -- Fix 3D viewport grid disappearing on scene tab changes ([GH-78694](https://github.com/godotengine/godot/pull/78694)). -- Fix VoxelGI saving VoxelGIData as a built-in file, despite being prompted to save it to an external file ([GH-78772](https://github.com/godotengine/godot/pull/78772)). -- Expose `compute_convex_mesh_points` function to GDScript ([GH-78871](https://github.com/godotengine/godot/pull/78871)). -- Change property hint range for camera attributes exposure multiplier ([GH-79138](https://github.com/godotengine/godot/pull/79138)). -- Make CSGShape follow curve's tilt in Path mode ([GH-79355](https://github.com/godotengine/godot/pull/79355)). -- Convert some Callables to `callable_mp()` ([GH-79373](https://github.com/godotengine/godot/pull/79373)). -- Initialize View Frame Time estimates to match 120 FPS ([GH-80124](https://github.com/godotengine/godot/pull/80124)). -- Add helper for 3D gizmos and unify box ([GH-80278](https://github.com/godotengine/godot/pull/80278)). -- Add handles to control Curve3D tilt ([GH-80329](https://github.com/godotengine/godot/pull/80329)). -- Allow setting values greater than the maximum in TorusMesh inspector ([GH-80441](https://github.com/godotengine/godot/pull/80441)). -- Add `global_basis` property to `Node3D` ([GH-80512](https://github.com/godotengine/godot/pull/80512)). -- Cleanup MeshLibrary changed signals ([GH-80782](https://github.com/godotengine/godot/pull/80782)). -- Improve Path3D gizmo usability ([GH-80802](https://github.com/godotengine/godot/pull/80802)). -- GridMap: Ensure the visibility is updated when entering the tree ([GH-81106](https://github.com/godotengine/godot/pull/81106)). -- Fix some keys triggering their actions twice in GridMap ([GH-81531](https://github.com/godotengine/godot/pull/81531)). -- Add 3D editor gizmo icons for Decal, LightmapProbe and FogVolume ([GH-81554](https://github.com/godotengine/godot/pull/81554)). -- Fix local 3D translation editing ([GH-81609](https://github.com/godotengine/godot/pull/81609)). -- Fix Curve3D baking up vectors for nontrivial curves ([GH-81885](https://github.com/godotengine/godot/pull/81885)). -- Update mesh list UI immediately after setting mesh library in gridmap ([GH-81914](https://github.com/godotengine/godot/pull/81914)). -- Optimize and tweak some SVGs, improve consistency between icons, and fix broken masks in light mode ([GH-82133](https://github.com/godotengine/godot/pull/82133)). -- Fix grid snapping for box shape gizmos ([GH-82381](https://github.com/godotengine/godot/pull/82381)). -- Make 3D editor gizmos and debug shapes ignore fog ([GH-82413](https://github.com/godotengine/godot/pull/82413)). -- Tweak Camera3D `size` property hint to make dragging more useful ([GH-82604](https://github.com/godotengine/godot/pull/82604)). -- Make gizmo plugin handle `SpriteBase3D` instead of `Sprite3D` ([GH-82901](https://github.com/godotengine/godot/pull/82901)). -- Enable UV2 on primitive meshes when using the MeshInstance3D context menu ([GH-82937](https://github.com/godotengine/godot/pull/82937)). -- Add an editor tool to automatically upgrade and re-save meshes ([GH-83613](https://github.com/godotengine/godot/pull/83613)). -- Fix some `Node3DEditor` snapping issues ([GH-84049](https://github.com/godotengine/godot/pull/84049)). -- Fix PlaneMesh tangents for 'Face X' orientation ([GH-84097](https://github.com/godotengine/godot/pull/84097)). -- Hide CSGShape's `debug_collision_shape` when it is invisible ([GH-84174](https://github.com/godotengine/godot/pull/84174)). +- Fix PathFollow3D update issues ([GH-80233](https://github.com/godotengine/godot/pull/80233)). +- Make ShaderMaterial always the last option in inspector resource dropdowns ([GH-81996](https://github.com/godotengine/godot/pull/81996)). +- Prompt require editor restart to user when gizmo color changed ([GH-82872](https://github.com/godotengine/godot/pull/82872)). +- Reduce minimum capsule/cylinder mesh rings to 0 ([GH-82887](https://github.com/godotengine/godot/pull/82887)). +- Expose 3D Delaunay tetrahedralization in `Geometry3D` ([GH-83353](https://github.com/godotengine/godot/pull/83353)). +- Improve Curve3D debug drawing ([GH-83698](https://github.com/godotengine/godot/pull/83698)). +- Optimize Path3DGizmo mesh generation ([GH-83741](https://github.com/godotengine/godot/pull/83741)). +- Use screen-aligned quads for origin lines to avoid issues on NVidia ([GH-83895](https://github.com/godotengine/godot/pull/83895)). +- Select newly added nodes on drag and drop in 3D viewport ([GH-84347](https://github.com/godotengine/godot/pull/84347)). +- Fix material drag and drop ([GH-84486](https://github.com/godotengine/godot/pull/84486)). +- Fix `Node3D` children using `top_level` in different position in-editor versus runtime ([GH-84643](https://github.com/godotengine/godot/pull/84643)). +- Only allow MeshInstance3D-inherited nodes in MultiMesh Populate Surface dialog ([GH-84933](https://github.com/godotengine/godot/pull/84933)). +- Notify CSGPolygon about transform changes in Path3D ([GH-85455](https://github.com/godotengine/godot/pull/85455)). +- Prevent `Camera3D.current` from being set to `true` automatically in the editor ([GH-85594](https://github.com/godotengine/godot/pull/85594)). +- Add static body creation equivalent for all collision shape sibling creations ([GH-86627](https://github.com/godotengine/godot/pull/86627)). +- Clarify the FOV setting in the 3D editor camera is vertical FOV ([GH-86690](https://github.com/godotengine/godot/pull/86690)). +- Fix AABB Ray intersection - return inside ([GH-86755](https://github.com/godotengine/godot/pull/86755)). +- Prevent division by 0 when creating vertices of a PrismMesh ([GH-86931](https://github.com/godotengine/godot/pull/86931)). +- Use SceneStringNames in Skeleton3DEditorPlugin ([GH-87048](https://github.com/godotengine/godot/pull/87048)). +- Fix position and basis of 3D Scenes instantiated via drag and drop ([GH-87126](https://github.com/godotengine/godot/pull/87126)). +- Properly change GridMap floors while selecting ([GH-87131](https://github.com/godotengine/godot/pull/87131)). +- Do not commit transforms and handles if no changes were made ([GH-87161](https://github.com/godotengine/godot/pull/87161)). +- Rename camera `near` and `far` private members to avoid conflict with `Windows.h` defines ([GH-87164](https://github.com/godotengine/godot/pull/87164)). +- Show warning for GeometryInstance3D transparency in Mobile/Compatibility ([GH-87231](https://github.com/godotengine/godot/pull/87231)). +- Make viewport message dependent on framerate not physics step ([GH-87631](https://github.com/godotengine/godot/pull/87631)). +- Fix a regression that breaks gizmo transforming when 'View Gizmos' is off ([GH-87769](https://github.com/godotengine/godot/pull/87769)). +- Use subgizmos for Path3D position editing and declutter the UI ([GH-87901](https://github.com/godotengine/godot/pull/87901)). +- Fix a regression when multiple nodes are selected and drag transform is attempted w/o gizmo ([GH-87922](https://github.com/godotengine/godot/pull/87922)). +- Fix new region select with selection when over geometry ([GH-87948](https://github.com/godotengine/godot/pull/87948)). +- Show modifier key functionality on all the editor tools ([GH-87989](https://github.com/godotengine/godot/pull/87989)). +- Add ability to hide grid per viewport ([GH-88584](https://github.com/godotengine/godot/pull/88584)). +- Fix 3D editor project settings update ([GH-88645](https://github.com/godotengine/godot/pull/88645)). +- Show instantiating message with position when using to drag to instantiate in 3D ([GH-88774](https://github.com/godotengine/godot/pull/88774)). +- Include tangent in SurfaceTool vertex compare operator ([GH-88890](https://github.com/godotengine/godot/pull/88890)). +- Don't access Node3D/Node2D/Control global transform in `reparent` unless needed ([GH-89003](https://github.com/godotengine/godot/pull/89003)). +- Make `Label3D` obey auto translation ([GH-89056](https://github.com/godotengine/godot/pull/89056)). +- Expose PrimitiveMesh's `request_update` method ([GH-89170](https://github.com/godotengine/godot/pull/89170)). +- Match #89126 for 3D: check for `Resource` type instead of extension ([GH-89177](https://github.com/godotengine/godot/pull/89177)). +- Use 3D editor gizmo helper for FogVolume to allow dragging individual faces ([GH-89320](https://github.com/godotengine/godot/pull/89320)). +- GLTF export: Remove snapping and fix validation ([GH-89352](https://github.com/godotengine/godot/pull/89352)). +- GLTF export: Use sparse accessors for morph targets ([GH-89356](https://github.com/godotengine/godot/pull/89356)). +- Disable all 3D nodes, physics, and resources when compiling without 3D ([GH-89381](https://github.com/godotengine/godot/pull/89381)). +- Add Gizmo to display 3D custom AABB ([GH-89538](https://github.com/godotengine/godot/pull/89538)). +- UX and stability improvements for `Path3D` node ([GH-89847](https://github.com/godotengine/godot/pull/89847)). +- Fix Path3D picking working incorrectly when viewport is in half resolution ([GH-89901](https://github.com/godotengine/godot/pull/89901)). +- Support "clear points" function in Path3D topmenu bar ([GH-89933](https://github.com/godotengine/godot/pull/89933)). +- Allow wrapping for begin rotate transformation to bring it in line with Blender ([GH-90098](https://github.com/godotengine/godot/pull/90098)). +- Allow drag and dropping ShaderMaterial in 3D viewport ([GH-90102](https://github.com/godotengine/godot/pull/90102)). +- Fix gizmo on top material option having no effect ([GH-90183](https://github.com/godotengine/godot/pull/90183)). +- Fix 3d axes flickering in the negative direction when extremely zoomed out ([GH-90255](https://github.com/godotengine/godot/pull/90255)). +- Fix `Node3D.set_global_rotation()` resetting node scale ([GH-90584](https://github.com/godotengine/godot/pull/90584)). +- Fix `RayCast3D`'s debug draw transform not updating ([GH-90800](https://github.com/godotengine/godot/pull/90800)). +- Expose `create_from_arrays` in SurfaceTool and cleanup some naming ([GH-90834](https://github.com/godotengine/godot/pull/90834)). +- Subscribe to correct tracker signals ([GH-91031](https://github.com/godotengine/godot/pull/91031)). +- Fix `Path3D` tilt gizmo raycasting against local plane ([GH-91109](https://github.com/godotengine/godot/pull/91109)). +- Simplify the GPUParticles3D editor gizmo to improve readability ([GH-91226](https://github.com/godotengine/godot/pull/91226)). +- Add MultiNodeEdit support to MeshInstance3D editor ([GH-91620](https://github.com/godotengine/godot/pull/91620)). +- Disallow selection of ownerless nodes ([GH-92188](https://github.com/godotengine/godot/pull/92188)). +- Fix bounding box glitch ([GH-92275](https://github.com/godotengine/godot/pull/92275)). +- Fix null `debug_shape` being updated when `CollisionObject3D`'s transform changed ([GH-92302](https://github.com/godotengine/godot/pull/92302)). +- Make CSG shape dirty after changing Snap ([GH-93242](https://github.com/godotengine/godot/pull/93242)). +- Improve `SurfaceTool::generate_tangents` UV error message ([GH-93326](https://github.com/godotengine/godot/pull/93326)). +- Fix invalid inheritance of `OccluderInstance3D` ([GH-93354](https://github.com/godotengine/godot/pull/93354)). +- Fix Subviewport keeps using removed Camera3D child ([GH-93377](https://github.com/godotengine/godot/pull/93377)). +- Fix crash in Node3DEditorViewport selecting on empty scene ([GH-93404](https://github.com/godotengine/godot/pull/93404)). +- Improve viewport rotation gizmo drawing ([GH-93639](https://github.com/godotengine/godot/pull/93639)). +- Add alternative shortcut for Align Transform to View in the 3D editor ([GH-93675](https://github.com/godotengine/godot/pull/93675)). +- Fix "selectable nodes at position clicked" feature in 3D editor ([GH-94387](https://github.com/godotengine/godot/pull/94387)). #### Animation -- Skip keyframe creation dialog when holding Shift in the animation editor ([GH-54524](https://github.com/godotengine/godot/pull/54524)). -- Allow changing imported AnimationLibrary names in AnimationPlayer in the editor ([GH-67965](https://github.com/godotengine/godot/pull/67965)). -- Add animation playback preview to scene import settings ([GH-76367](https://github.com/godotengine/godot/pull/76367)). -- Additional cleanup of bone editors ([GH-77096](https://github.com/godotengine/godot/pull/77096)). -- Add `TileSetAtlasSource::TileAnimationMode` options and allow to shuffle tile animations ([GH-77257](https://github.com/godotengine/godot/pull/77257)). -- Include animation frames in tile atlas merge ([GH-77316](https://github.com/godotengine/godot/pull/77316)). -- Fix infinite loop state check in `AnimationStateMachine` ([GH-79141](https://github.com/godotengine/godot/pull/79141)). -- Add 3.x compatibility for animation loop mode ([GH-79155](https://github.com/godotengine/godot/pull/79155)). -- Fix `Animation::subtract_variant` for affine transforms ([GH-79279](https://github.com/godotengine/godot/pull/79279)). -- Fix `AnimationNodeTransition` with negative time scale ([GH-79403](https://github.com/godotengine/godot/pull/79403)). -- Fix `tween_property` on `Basis` to properly update its value ([GH-79426](https://github.com/godotengine/godot/pull/79426)). -- Fix the error when clicking AnimationTree in the editor ([GH-79588](https://github.com/godotengine/godot/pull/79588)). -- Make `AnimationNodeBlendTree` use `RBMap` instead `HashMap` ([GH-79595](https://github.com/godotengine/godot/pull/79595)). -- Fix rename animation in SpriteFramesEditor ([GH-79600](https://github.com/godotengine/godot/pull/79600)). -- SpriteFrames Editor: Fix FPS applied to two animations when switching animation ([GH-79692](https://github.com/godotengine/godot/pull/79692)). -- Make animation name list scroll to new animation in `SpriteEditor` ([GH-79743](https://github.com/godotengine/godot/pull/79743)). -- SpriteFrames Editor: Fix Frame Duration applied to wrong frame when switching frame ([GH-79872](https://github.com/godotengine/godot/pull/79872)). -- Improve and clarify paused Tweens ([GH-79879](https://github.com/godotengine/godot/pull/79879)). -- Avoid emitting signals if the animation is not ready to be processed ([GH-80367](https://github.com/godotengine/godot/pull/80367)). -- Fix initial value with delay in PropertyTweener ([GH-80702](https://github.com/godotengine/godot/pull/80702)). -- Ensure methods skipped by `AnimationPlayer::seek` are not called ([GH-80708](https://github.com/godotengine/godot/pull/80708)). -- Implement `AnimationMixer` as a base class of `AnimationPlayer` and `AnimationTree` ([GH-80813](https://github.com/godotengine/godot/pull/80813)). -- Revive onion skinning ([GH-80939](https://github.com/godotengine/godot/pull/80939)). -- Prevent errors if Tween callback's object is freed ([GH-81127](https://github.com/godotengine/godot/pull/81127)). -- Select node when clicked in AnimationPlayer timeline ([GH-81188](https://github.com/godotengine/godot/pull/81188)). -- Fix incorrect cast when animating `int` ([GH-81296](https://github.com/godotengine/godot/pull/81296)). -- Fix animation keyframes being skipped when played backwards ([GH-81452](https://github.com/godotengine/godot/pull/81452)). -- Check if property exists before tweening ([GH-81525](https://github.com/godotengine/godot/pull/81525)). -- Ignore method track when drawing line between keys ([GH-81563](https://github.com/godotengine/godot/pull/81563)). -- Hide animation toolbar above the viewport correctly when switching scenes ([GH-81606](https://github.com/godotengine/godot/pull/81606)). -- Defer updating the animations Tree in SpriteFramesEditor to avoid crashes ([GH-81643](https://github.com/godotengine/godot/pull/81643)). -- SceneTreeDock: Remove animation tracks with correct indices ([GH-81651](https://github.com/godotengine/godot/pull/81651)). -- Fix BoneAttachment3D signal connection ([GH-81695](https://github.com/godotengine/godot/pull/81695)). -- Fix crash when clicking on "Interpolation Mode" with nonexistent node path ([GH-81779](https://github.com/godotengine/godot/pull/81779)). -- Improve retarget auto-mapping algorithm ([GH-81843](https://github.com/godotengine/godot/pull/81843)). -- Fix theme access and improve UX in AnimationTree editor ([GH-82210](https://github.com/godotengine/godot/pull/82210)). -- Fix `SkeletonIK3D` editor preview when changing active node ([GH-82391](https://github.com/godotengine/godot/pull/82391)). -- Reimport bone attachment fixes ([GH-82471](https://github.com/godotengine/godot/pull/82471)). -- Fix "Some nodes are referenced by animation tracks" when deleting instance ([GH-82486](https://github.com/godotengine/godot/pull/82486)). -- Fix GroupedStateMachine reset ([GH-82563](https://github.com/godotengine/godot/pull/82563)). -- Fix crash when deleting the player in `AnimationPlayerEditorPlugin` ([GH-82573](https://github.com/godotengine/godot/pull/82573)). -- Limit animation audio clip inspector offset sliders to clip length ([GH-82627](https://github.com/godotengine/godot/pull/82627)). -- Tweak AnimationPlayer speed scale property hint to make dragging more useful ([GH-82641](https://github.com/godotengine/godot/pull/82641)). -- Fix `AnimationPlayer::play()` process unwanted start between the same animations ([GH-82898](https://github.com/godotengine/godot/pull/82898)). -- AnimationMixer: Fix non-numeric misc type (`Resource`, `Dictionary` & etc.) values cannot be blended with `UpdateMode.UPDATE_CONTINUOUS` ([GH-83030](https://github.com/godotengine/godot/pull/83030)). -- Move animation slice processing to `_post_fix_animations` ([GH-83036](https://github.com/godotengine/godot/pull/83036)). -- Set new SkeletonRestFixer tracks as imported ([GH-83076](https://github.com/godotengine/godot/pull/83076)). -- Fix editor crash when re-importing GLTF while animation is playing ([GH-83104](https://github.com/godotengine/godot/pull/83104)). -- Show AnimationMixer warning for non-numeric types only when relevant ([GH-83417](https://github.com/godotengine/godot/pull/83417)). -- Fix onion skinning internals activating audio/method/animation tracks ([GH-83430](https://github.com/godotengine/godot/pull/83430)). -- Remove AnimationMixer bindings only bound in the editor ([GH-83440](https://github.com/godotengine/godot/pull/83440)). -- Re-add close button for nodes in `AnimationNodeBlendTree` editor ([GH-83507](https://github.com/godotengine/godot/pull/83507)). -- Automatic reconnection of nodes in blend tree ([GH-83534](https://github.com/godotengine/godot/pull/83534)). -- Add vertical scrolling to bézier track editor ([GH-83776](https://github.com/godotengine/godot/pull/83776)). -- Ensure AnimationPlayer evaluate animations when autoplay is enabled and node becomes ready ([GH-83781](https://github.com/godotengine/godot/pull/83781)). -- Fix animation track paths updated by scene dock ([GH-83934](https://github.com/godotengine/godot/pull/83934)). -- Unpress buttons in AnimationTree when switching to read-only mode ([GH-84052](https://github.com/godotengine/godot/pull/84052)). -- Fix invalid return from some more `_get/_set` ([GH-84060](https://github.com/godotengine/godot/pull/84060)). -- Add descriptive warning for animation track hint fails ([GH-84129](https://github.com/godotengine/godot/pull/84129)). -- Fix AnimationTimeline time not updating when dragged ([GH-84170](https://github.com/godotengine/godot/pull/84170)). -- Avoid popping up dialogs excessively in the Animation editor ([GH-84208](https://github.com/godotengine/godot/pull/84208)). -- Fix perform_node_renames handling of AnimationMixers track paths ([GH-84282](https://github.com/godotengine/godot/pull/84282)). -- Unexpose internal data property of `AnimationLibrary` ([GH-84376](https://github.com/godotengine/godot/pull/84376)). -- Add `PackedArray` to the list of enforcing `Discrete` for `AnimationMixer` ([GH-84390](https://github.com/godotengine/godot/pull/84390)). -- Fix RESET not effective when saving inactive scene ([GH-84405](https://github.com/godotengine/godot/pull/84405)). -- Change AnimationLibEditor's mixer to actual Mixer ([GH-84551](https://github.com/godotengine/godot/pull/84551)). -- Remove AnimatedSprite pointer when clearing editor ([GH-84625](https://github.com/godotengine/godot/pull/84625)). -- Rework blending method in `Variant` animation for `Int`/`Array`/`String` ([GH-84815](https://github.com/godotengine/godot/pull/84815)). -- Fix ValueTrack with Resource is leaking ([GH-84942](https://github.com/godotengine/godot/pull/84942)). -- Fix seeking bug in AnimationPlayerEditor ([GH-85193](https://github.com/godotengine/godot/pull/85193)). -- Clear seeked/started flag after seeking/advancing in AnimationPlayer ([GH-85221](https://github.com/godotengine/godot/pull/85221)). -- Bind `_reset`/`_restore` in AnimationMixer ([GH-85254](https://github.com/godotengine/godot/pull/85254)). -- Fix TrackCache memory crash ([GH-85266](https://github.com/godotengine/godot/pull/85266)). -- Perform safe copies in `AnimatedValuesBackup::get_cache_copy()` ([GH-85302](https://github.com/godotengine/godot/pull/85302)). -- Fix a crash when trying to restore uncopyable animation tracks ([GH-85308](https://github.com/godotengine/godot/pull/85308)). -- Check the seeking if it is processed immediately after playback as a special case ([GH-85366](https://github.com/godotengine/godot/pull/85366)). -- Make AnimationPlaybackTrack keep state when stopping ([GH-85411](https://github.com/godotengine/godot/pull/85411)). -- AnimationMixer: Validate ObjectID before blend in case the object was freed ([GH-85461](https://github.com/godotengine/godot/pull/85461)). +- Autocomplete properties in `tween_property` ([GH-76591](https://github.com/godotengine/godot/pull/76591)). +- Add useful functions to `FilterEdit` in `AnimationBlendTreeEditor` ([GH-76654](https://github.com/godotengine/godot/pull/76654)). +- Simplify right-click track insertion code ([GH-80860](https://github.com/godotengine/godot/pull/80860)). +- Fix reset value when adding new Bezier track ([GH-82012](https://github.com/godotengine/godot/pull/82012)). +- Add `set_custom_interpolator()` to PropertyTweener ([GH-82306](https://github.com/godotengine/godot/pull/82306)). +- Refactor function `calculate_length_and_rotation()` from Skeleton2D ([GH-83397](https://github.com/godotengine/godot/pull/83397)). +- Fix setting bezier track handle mode from inspector ([GH-83533](https://github.com/godotengine/godot/pull/83533)). +- Make AnimationPlayerEditor read-only edit rules more permissive ([GH-84268](https://github.com/godotengine/godot/pull/84268)). +- Fix errors and warnings when loading Skeleton2D Modifications ([GH-84474](https://github.com/godotengine/godot/pull/84474)). +- Make AnimationTree reference AnimationPlayer instead of AnimationMixer ([GH-84583](https://github.com/godotengine/godot/pull/84583)). +- Replace memory allocation point of ValueTrack correctly in AnimationMixer ([GH-85001](https://github.com/godotengine/godot/pull/85001)). +- Fix imported track flag on sliced animations ([GH-85061](https://github.com/godotengine/godot/pull/85061)). +- Improve usability of zooming in the animation editor ([GH-85142](https://github.com/godotengine/godot/pull/85142)). +- Fix custom type icon sizes in animation tracks ([GH-85367](https://github.com/godotengine/godot/pull/85367)). +- Prevent a crash when calling `AnimationMixer::restore` with an invalid resource ([GH-85428](https://github.com/godotengine/godot/pull/85428)). +- Add multi-selection for `SpriteFramesEditor` ([GH-85494](https://github.com/godotengine/godot/pull/85494)). +- Copy track update mode when adding reset key ([GH-85540](https://github.com/godotengine/godot/pull/85540)). +- Fix AnimationPlayer seeking for Discrete keys ([GH-85569](https://github.com/godotengine/godot/pull/85569)). +- Make unstore AnimationLibrary if AnimationTree is assigned AnimationPlayer ([GH-85575](https://github.com/godotengine/godot/pull/85575)). +- Fix Tween loop initial value ([GH-85681](https://github.com/godotengine/godot/pull/85681)). +- Remove differences of the code between old AnimationTree and AnimationMixer ([GH-85794](https://github.com/godotengine/godot/pull/85794)). +- Fix linear interpolation not working with mixed (int/float) keyframes ([GH-86046](https://github.com/godotengine/godot/pull/86046)). +- Fix animated tile random start time not scaled to animation duration ([GH-86210](https://github.com/godotengine/godot/pull/86210)). +- Make default `blend_left` consider current blend amount ([GH-86221](https://github.com/godotengine/godot/pull/86221)). +- Fix discrete key retrieval method after start ([GH-86227](https://github.com/godotengine/godot/pull/86227)). +- Fix `blend_node` crash with invalid AnimationNode reference ([GH-86321](https://github.com/godotengine/godot/pull/86321)). +- Add `cubic_interpolate_in_time_variant()` to Animation ([GH-86601](https://github.com/godotengine/godot/pull/86601)). +- Add some options to Project Settings to silence warnings in AnimationMixer caching ([GH-86608](https://github.com/godotengine/godot/pull/86608)). +- Add a `CallbackModeDiscrete` property to `AnimationMixer` to handle the case of blending Continuous and Discrete tracks ([GH-86629](https://github.com/godotengine/godot/pull/86629)). +- Make default options of int value track refer to RESET animation ([GH-86630](https://github.com/godotengine/godot/pull/86630)). +- Fix some animation state corruptions on activate and reset on save ([GH-86644](https://github.com/godotengine/godot/pull/86644)). +- Fix invalid 3-to-4 renames of `add_animation` to `add_animation_library` ([GH-86647](https://github.com/godotengine/godot/pull/86647)). +- Make the retrieval of audio tracks consistent and implement trimming to AnimationTrackEditor shortcut and clean-up ([GH-86661](https://github.com/godotengine/godot/pull/86661)). +- Fix TrackCache conflict when tracks have same name but different type ([GH-86687](https://github.com/godotengine/godot/pull/86687)). +- Add `AnimationMixer::capture()` and `AnimationPlayer::play_with_capture()` as substitute of update mode capture ([GH-86715](https://github.com/godotengine/godot/pull/86715)). +- Add autocompletion options for AnimatedSprite's other play methods ([GH-86733](https://github.com/godotengine/godot/pull/86733)). +- Add icon, tooltip, rename button in AnimationLibraryEditor for clarity ([GH-86736](https://github.com/godotengine/godot/pull/86736)). +- Add autocompletion for SpriteFrames' methods ([GH-86754](https://github.com/godotengine/godot/pull/86754)). +- Add autocompletion for AnimationLibrary & AnimationMixer's methods ([GH-86799](https://github.com/godotengine/godot/pull/86799)). +- Copy InterpolationType / LoopMode for all track & UseBlend option for audio when adding reset keys ([GH-86867](https://github.com/godotengine/godot/pull/86867)). +- Add Autocompletion for AnimationNodeStateMachine & AnimationNodeBlendTree ([GH-86884](https://github.com/godotengine/godot/pull/86884)). +- Add autocompletion to AnimationNode ([GH-86888](https://github.com/godotengine/godot/pull/86888)). +- Skeleton3D: Convert 3.x skeletons ([GH-87050](https://github.com/godotengine/godot/pull/87050)). +- Add auto fit timeline and bezier scale on animation editor ([GH-87078](https://github.com/godotengine/godot/pull/87078)). +- Rework AnimationNode process for retrieving the semantic time info ([GH-87171](https://github.com/godotengine/godot/pull/87171)). +- Implement consistent functionality for select, copy, paste, and duplicate in AnimationPlayer ([GH-87250](https://github.com/godotengine/godot/pull/87250)). +- Fix passing int to tween's `from` with float property will be forced to interpolate as int ([GH-87459](https://github.com/godotengine/godot/pull/87459)). +- Allow `Node.create_tween()` outside SceneTree ([GH-87701](https://github.com/godotengine/godot/pull/87701)). +- Fix cubic interpolation wrong argument for the time ([GH-87772](https://github.com/godotengine/godot/pull/87772)). +- Fix quaternion keyframe optimization for collinear rotation over 180 degrees ([GH-87817](https://github.com/godotengine/godot/pull/87817)). +- Fix vertical zoom factor in Animation Bezier Editor ([GH-87857](https://github.com/godotengine/godot/pull/87857)). +- Fix unintentional translations in AnimationTree ([GH-87887](https://github.com/godotengine/godot/pull/87887)). +- Implement a base class `SkeletonModifier3D` as refactoring for nodes that may modify `Skeleton3D` ([GH-87888](https://github.com/godotengine/godot/pull/87888)). +- Fix converted 3.x `Skeleton3D` missing pose ([GH-88009](https://github.com/godotengine/godot/pull/88009)). +- Fix wrongly named compat binding ([GH-88110](https://github.com/godotengine/godot/pull/88110)). +- Improve AnimationMixer warnings ([GH-88247](https://github.com/godotengine/godot/pull/88247)). +- Remove unused signals in AnimationBezierTrackEdit ([GH-88302](https://github.com/godotengine/godot/pull/88302)). +- Implement Cut Selected Keys in AnimationPlayer ([GH-88350](https://github.com/godotengine/godot/pull/88350)). +- Fix Bezier Editor HandleMode UndoRedo History mismatch ([GH-88352](https://github.com/godotengine/godot/pull/88352)). +- Fix Bezier Editor throwing error when adding key with Ctrl+Click ([GH-88360](https://github.com/godotengine/godot/pull/88360)). +- Fix various bugs in Animation key right click actions ([GH-88445](https://github.com/godotengine/godot/pull/88445)). +- Fix crash with animation audio track offset ([GH-88446](https://github.com/godotengine/godot/pull/88446)). +- Fix Animation Bezier Editor key selection bugs ([GH-88459](https://github.com/godotengine/godot/pull/88459)). +- Fix some conditions for BezierTrack to distinguish between ValueTrack ([GH-88488](https://github.com/godotengine/godot/pull/88488)). +- Make `ANIMATION_CALLBACK_MODE_DISCRETE_DOMINANT` be default for AnimationPlayer ([GH-88492](https://github.com/godotengine/godot/pull/88492)). +- Fix snapping multiple keys in Animation ([GH-88498](https://github.com/godotengine/godot/pull/88498)). +- Fix AnimationMixer breaking animations with redundant check ([GH-88557](https://github.com/godotengine/godot/pull/88557)). +- Force non-numeric ValueTrack to use Discrete with Dominant ([GH-88661](https://github.com/godotengine/godot/pull/88661)). +- Make `Skeleton3D::add_bone` return the new bone index ([GH-88791](https://github.com/godotengine/godot/pull/88791)). +- Add new scene import option to import as Skeleton ([GH-88819](https://github.com/godotengine/godot/pull/88819)). +- Retargeting option to use a template for silhouette ([GH-88824](https://github.com/godotengine/godot/pull/88824)). +- Improvements to `Tween` memory management ([GH-88856](https://github.com/godotengine/godot/pull/88856)). +- Fix `BoneAttachment3D` responding to only local transform changes ([GH-88884](https://github.com/godotengine/godot/pull/88884)). +- Fix animation player error dialog focus ([GH-88926](https://github.com/godotengine/godot/pull/88926)). +- Fix wrong line of making flag to discrete in AnimationMixer ([GH-89329](https://github.com/godotengine/godot/pull/89329)). +- Make AnimationMixer consider Discrete for RESET track ([GH-89389](https://github.com/godotengine/godot/pull/89389)). +- Move the line of infinity loop checking in AnimationStateMachine ([GH-89575](https://github.com/godotengine/godot/pull/89575)). +- Add option to import skeleton rest as RESET animation ([GH-89629](https://github.com/godotengine/godot/pull/89629)). +- Fix AnimationPlayer pin behavior ([GH-89732](https://github.com/godotengine/godot/pull/89732)). +- Fix SpriteFrames editor visibility problems ([GH-89754](https://github.com/godotengine/godot/pull/89754)). +- Fix AnimationPlaybackTrack seeking behavior overall ([GH-89794](https://github.com/godotengine/godot/pull/89794)). +- Expose `SkeletonProfile.set/is_required` ([GH-89970](https://github.com/godotengine/godot/pull/89970)). +- Fix setting animation save paths on import breaking on Windows ([GH-90003](https://github.com/godotengine/godot/pull/90003)). +- Fix loop condition in bone mapping ([GH-90019](https://github.com/godotengine/godot/pull/90019)). +- Add tips detection to auto mapping in bone mapper ([GH-90050](https://github.com/godotengine/godot/pull/90050)). +- Apply "Remove Immutable Tracks" after post-import ([GH-90064](https://github.com/godotengine/godot/pull/90064)). +- Remove unavailable property binding `reset_on_save` from Skeleton3D ([GH-90231](https://github.com/godotengine/godot/pull/90231)). +- Fix Skeleton3D build error with `deprecated=no` ([GH-90308](https://github.com/godotengine/godot/pull/90308)). +- Separate value/bezier track caching process in AnimationMixer ([GH-90438](https://github.com/godotengine/godot/pull/90438)). +- Static allocation bones copy for SkeletonModifier ([GH-90517](https://github.com/godotengine/godot/pull/90517)). +- Remove `bone_pose_updated` signal and replace it with the `skeleton_updated` signal ([GH-90575](https://github.com/godotengine/godot/pull/90575)). +- Add SkeletonIK3D `get`/`set_interpolation` compat from #87888 ([GH-90780](https://github.com/godotengine/godot/pull/90780)). +- Set animation step from importers. Increase default step from 10 to 30FPS ([GH-90894](https://github.com/godotengine/godot/pull/90894)). +- Make seeking animation playback track consider internal seeking ([GH-90960](https://github.com/godotengine/godot/pull/90960)). +- Modify allocation process of the PhysicalBoneSimulator in Skeleton3D ([GH-91122](https://github.com/godotengine/godot/pull/91122)). +- Make adding track process to set interpolation type on creating RESET ([GH-91237](https://github.com/godotengine/godot/pull/91237)). +- Make activating on ready in AnimationPlayer respect the property value ([GH-91242](https://github.com/godotengine/godot/pull/91242)). +- Add `auto_capture` option to AnimationPlayer ([GH-91437](https://github.com/godotengine/godot/pull/91437)). +- Add argument options to AnimationPlayer for auto capture ([GH-91481](https://github.com/godotengine/godot/pull/91481)). +- Avoid incorrect computing anchor of Control node when reset on save with `saving` flag ([GH-91495](https://github.com/godotengine/godot/pull/91495)). +- Allow users to override `SkeletonModifier3D._process_modification` ([GH-91507](https://github.com/godotengine/godot/pull/91507)). +- Editor: Don't open `AnimationLibrary` as a scene ([GH-91522](https://github.com/godotengine/godot/pull/91522)). +- Make retarget keep global rest of unmapped bones if there are no mapped bones on the child ([GH-91560](https://github.com/godotengine/godot/pull/91560)). +- Make silhouette fixer option visibility dependent on availability ([GH-91641](https://github.com/godotengine/godot/pull/91641)). +- Invert start offset on AnimationNode custom timeline ([GH-91822](https://github.com/godotengine/godot/pull/91822)). +- Fix errors on pressing autoplay in sprite frames editor ([GH-91830](https://github.com/godotengine/godot/pull/91830)). +- Fix wrong usage of `parameters_base_path` StringName ([GH-91944](https://github.com/godotengine/godot/pull/91944)). +- Skeleton rest fixer: Apply orthonormalized scale to anims ([GH-92012](https://github.com/godotengine/godot/pull/92012)). +- Fix Deterministic blending with Dominant/Recessive doesn't have initial value even if there is no Discrete track ([GH-92126](https://github.com/godotengine/godot/pull/92126)). +- Replace List with LocalVector on Skeleton3D's bone transform update ([GH-92164](https://github.com/godotengine/godot/pull/92164)). +- Support Import As Skeleton Bones on glTF and AnimationLibrary import ([GH-92196](https://github.com/godotengine/godot/pull/92196)). +- Fix mesh instance not updated when changing blend shape values ([GH-92244](https://github.com/godotengine/godot/pull/92244)). +- Add `bake_fps` for FBXDocument, GLTFDocument and both import-export ([GH-92284](https://github.com/godotengine/godot/pull/92284)). +- Fix animation player controls being enabled when no player is selected ([GH-92473](https://github.com/godotengine/godot/pull/92473)). +- Fix error after create a new animation in an empty AnimationPlayer ([GH-92495](https://github.com/godotengine/godot/pull/92495)). +- Add blend point check to `AnimationNodeBlendSpace2D::_process()` ([GH-92636](https://github.com/godotengine/godot/pull/92636)). +- Fix unstable AnimationTrackEditor snapping value ([GH-92670](https://github.com/godotengine/godot/pull/92670)). +- Fix BlendSpace2D sync flagging line ([GH-92739](https://github.com/godotengine/godot/pull/92739)). +- Fix shader for SkeletonGizmo to follow renderer's reversed-z change ([GH-92774](https://github.com/godotengine/godot/pull/92774)). +- Fix seeking Animation immediately after playback for Discrete track ([GH-92861](https://github.com/godotengine/godot/pull/92861)). +- Don't allow creating invalid RESET keys ([GH-92870](https://github.com/godotengine/godot/pull/92870)). +- Expose `get_skeleton()` from `SkeletonModifier3D` ([GH-92896](https://github.com/godotengine/godot/pull/92896)). +- Add `get_concatenated_bone_names()` to `Skeleton3D` for `SkeletonModifier3D`'s enum hints ([GH-92925](https://github.com/godotengine/godot/pull/92925)). +- Fix unbound child bones of the PhysicalBone aren't modified ([GH-92931](https://github.com/godotengine/godot/pull/92931)). +- Restore "Confirm Insert Track" editor setting ([GH-92985](https://github.com/godotengine/godot/pull/92985)). +- Fix force continuous with un-interpolatable value is not applied correctly ([GH-93185](https://github.com/godotengine/godot/pull/93185)). +- AnimationTrackEdit: Cancel key drag when popup is shown ([GH-93257](https://github.com/godotengine/godot/pull/93257)). +- Fix displaying selected Bezier animation keys in inspector ([GH-93408](https://github.com/godotengine/godot/pull/93408)). +- Reset when disabling override pose in BoneAttachment3D ([GH-93482](https://github.com/godotengine/godot/pull/93482)). +- Fix animation Bezier editor crash when using undo after deleting AnimationPlayer ([GH-93492](https://github.com/godotengine/godot/pull/93492)). +- Optimize update flag by SkeletonModifier ([GH-93502](https://github.com/godotengine/godot/pull/93502)). +- Rework migration of `animate_physical_bones` for compatibility ([GH-93504](https://github.com/godotengine/godot/pull/93504)). +- Make AnimationTrackCaches invalid when animation is added ([GH-93505](https://github.com/godotengine/godot/pull/93505)). +- Fix `AnimatedSprite2D/3D::play` using wrong `end_frame` when playing backwards ([GH-93548](https://github.com/godotengine/godot/pull/93548)). +- Revert the default InterpolationType with angle property to Linear ([GH-93696](https://github.com/godotengine/godot/pull/93696)). +- Fix Bezier track init value on caching without RESET animation ([GH-93785](https://github.com/godotengine/godot/pull/93785)). +- Fix sprite frame editor crash with null `frames` pointer ([GH-93846](https://github.com/godotengine/godot/pull/93846)). +- Fix inconsistent behavior of Bezier editor undo operations upon selection of different animation ([GH-93860](https://github.com/godotengine/godot/pull/93860)). +- Fix AnimationPlayer `blend_times` sorting ([GH-93876](https://github.com/godotengine/godot/pull/93876)). +- Clamp bezier handle length to half the length of animation ([GH-93930](https://github.com/godotengine/godot/pull/93930)). +- Fix broken sync between animation TrackEditor and PlayerEditor ([GH-93980](https://github.com/godotengine/godot/pull/93980)). +- Fix property type of Sprite3D `frame_coords` to Vector2i from Vector2 ([GH-93982](https://github.com/godotengine/godot/pull/93982)). +- Fix focus shortcut when in the bezier curve editor ([GH-94054](https://github.com/godotengine/godot/pull/94054)). +- Re-add `Skeleton3D::animate_physical_bones` property ([GH-94291](https://github.com/godotengine/godot/pull/94291)). +- Fix the behavior of after selecting animation on AnimationPlayerEditor to reset position to `0` ([GH-94302](https://github.com/godotengine/godot/pull/94302)). +- Fix StateMachine process when transition to end & optimize StringName ([GH-94304](https://github.com/godotengine/godot/pull/94304)). +- Handle internal seek on AnimationPlayer to process discrete correctly ([GH-94420](https://github.com/godotengine/godot/pull/94420)). +- Add approximate comparing static methods to Animation and make Animation code use them ([GH-94554](https://github.com/godotengine/godot/pull/94554)). +- AnimationMixer: Fix `processed_hashes` type to `Animation::TypeHash` instead of `int` ([GH-94722](https://github.com/godotengine/godot/pull/94722)). +- Fix BlendShapeTrack insertion not working ([GH-94738](https://github.com/godotengine/godot/pull/94738)). +- Determine `break_loop_at_end` 1 frame earlier using prediction by delta ([GH-94858](https://github.com/godotengine/godot/pull/94858)). +- Make NodeTimeInfo be not stored in tscn to prevent AnimationTree version control contamination ([GH-94859](https://github.com/godotengine/godot/pull/94859)). +- Snap current position to the edge on animation finished ([GH-95023](https://github.com/godotengine/godot/pull/95023)). +- Fix crash on reimport scene with animations ([GH-95084](https://github.com/godotengine/godot/pull/95084)). +- Make `Skeleton3D` bone simulator an internal child ([GH-95239](https://github.com/godotengine/godot/pull/95239)). +- Make `Animation::capture_included` read-only ([GH-95377](https://github.com/godotengine/godot/pull/95377)). +- Editor: Fix missing bind for animation editor callback ([GH-95400](https://github.com/godotengine/godot/pull/95400)). +- Prevent to seek doubly on AnimationPlayerEditor ([GH-95405](https://github.com/godotengine/godot/pull/95405)). +- Editor: Fix `AnimationTrackEditor::timeline_changed` signal ([GH-95481](https://github.com/godotengine/godot/pull/95481)). #### Assetlib -- Fix long plugin names breaking the UI ([GH-80555](https://github.com/godotengine/godot/pull/80555)). -- Improve handling of archives when installing assets ([GH-81358](https://github.com/godotengine/godot/pull/81358)). -- Allow to specify target folder when installing assets ([GH-81620](https://github.com/godotengine/godot/pull/81620)). +- Improve error reporting in the asset library and in related types ([GH-87628](https://github.com/godotengine/godot/pull/87628)). +- Fix broken layout of asset library page ([GH-88761](https://github.com/godotengine/godot/pull/88761)). +- Rename Official support level to Featured in the editor asset library ([GH-89987](https://github.com/godotengine/godot/pull/89987)). #### Audio -- PulseAudio: Remove `get_latency()` caching ([GH-45152](https://github.com/godotengine/godot/pull/45152)). -- Context aware MIDI event printing ([GH-68820](https://github.com/godotengine/godot/pull/68820)). -- Add build option to enable MP1 and MP2 support in minimp3 ([GH-72729](https://github.com/godotengine/godot/pull/72729)). -- Add a `--audio-output-latency` command-line argument ([GH-78013](https://github.com/godotengine/godot/pull/78013)). -- Implement loading OGG files from buffer and file path ([GH-78084](https://github.com/godotengine/godot/pull/78084)). -- Simpler default values for AudioStreamRandomizer ([GH-80171](https://github.com/godotengine/godot/pull/80171)). -- Fix OGG audio loop offset pop ([GH-80452](https://github.com/godotengine/godot/pull/80452)). -- Add project settings for AVAudioSessionCategory on iOS ([GH-81196](https://github.com/godotengine/godot/pull/81196)). -- Remove some dead declarations in `audio_stream_player.h` ([GH-81485](https://github.com/godotengine/godot/pull/81485)). -- Fix audio stream generators getting freed accidentally ([GH-81508](https://github.com/godotengine/godot/pull/81508)). -- Add a `bus_renamed` AudioServer signal ([GH-81641](https://github.com/godotengine/godot/pull/81641)). -- Only warn once about OGG seeking issues ([GH-81704](https://github.com/godotengine/godot/pull/81704)). -- Tweak property order in the inspector for AudioStreamRandomizer ([GH-82411](https://github.com/godotengine/godot/pull/82411)). -- Fix `AudioStreamRandomizer.random_volume_offset_db` not working ([GH-82478](https://github.com/godotengine/godot/pull/82478)). -- Fix pausing stream on entering tree ([GH-83779](https://github.com/godotengine/godot/pull/83779)). -- Fix OGG Vorbis infinite error spam with corrupt file ([GH-84723](https://github.com/godotengine/godot/pull/84723)). +- Add interactive music support ([GH-64488](https://github.com/godotengine/godot/pull/64488)). +- Overhaul AudioStreamPlayer's documentation ([GH-81858](https://github.com/godotengine/godot/pull/81858)). +- Fix importing WAV files with odd chunk sizes ([GH-85556](https://github.com/godotengine/godot/pull/85556)). +- Fix permanently selected audio bus effects ([GH-85879](https://github.com/godotengine/godot/pull/85879)). +- Fix `OggPacketSequencePlayback::next_ogg_packet()` never returning false ([GH-85996](https://github.com/godotengine/godot/pull/85996)). +- Implement audio stream playback parameters ([GH-86473](https://github.com/godotengine/godot/pull/86473)). +- Optimize `AudioServer::_driver_process()` ([GH-86581](https://github.com/godotengine/godot/pull/86581)). +- Fix `AudioServer::start_playback_stream` does not iterate through given bus volumes ([GH-86584](https://github.com/godotengine/godot/pull/86584)). +- Add autocompletion for ClassDB & AudioServer ([GH-86777](https://github.com/godotengine/godot/pull/86777)). +- Fix playback position label update in Audio Stream Importer ([GH-86824](https://github.com/godotengine/godot/pull/86824)). +- Fix member names of `AudioFrame` to match extension ([GH-87006](https://github.com/godotengine/godot/pull/87006)). +- Fix Dummy audio driver initialization issue on WASAPI output device initialization failure ([GH-87010](https://github.com/godotengine/godot/pull/87010)). +- Add AudioStreamPlayerInternal to unify stream players ([GH-87061](https://github.com/godotengine/godot/pull/87061)). +- Fix a possible crash when importing an OGG file with zero-length packets ([GH-87246](https://github.com/godotengine/godot/pull/87246)). +- Fix AudioStreamPlayer3D autoplay and internal notifications ([GH-87732](https://github.com/godotengine/godot/pull/87732)). +- Fix wrong process method in AudioStreamPlayer ([GH-87830](https://github.com/godotengine/godot/pull/87830)). +- Fix data race regarding `prof_time` in `AudioDriver` and `AudioServer` ([GH-88005](https://github.com/godotengine/godot/pull/88005)). +- AudioEffectPitchShift: Prevent negative size memset (GCC warning) ([GH-88509](https://github.com/godotengine/godot/pull/88509)). +- AudioEffectPitchShift: Actually fix `-Wstringop-overflow warning` ([GH-88658](https://github.com/godotengine/godot/pull/88658)). +- Fix low volume sound output on iOS when Play and Record category is used ([GH-89006](https://github.com/godotengine/godot/pull/89006)). +- WAV importer: Use cubic interpolation on resampler ([GH-89071](https://github.com/godotengine/godot/pull/89071)). +- Add AudioEffectHardLimiter as a rework of audio limiter effect ([GH-89088](https://github.com/godotengine/godot/pull/89088)). +- Fix audio crackling issues due to incorrect WASAPI buffer size ([GH-89283](https://github.com/godotengine/godot/pull/89283)). +- Prevent crash in interactive playback ([GH-90481](https://github.com/godotengine/godot/pull/90481)). +- Move MIDI parsing up from ALSA driver to platform independent driver ([GH-90485](https://github.com/godotengine/godot/pull/90485)). +- Check for NaN in `set_volume_db` functions ([GH-90861](https://github.com/godotengine/godot/pull/90861)). +- Add QOA (Quite OK Audio) as a WAV compression mode ([GH-91014](https://github.com/godotengine/godot/pull/91014)). +- Don't ignore `audio/driver/output_latency.web` ([GH-91141](https://github.com/godotengine/godot/pull/91141)). +- Add sample playback support for Web exports ([GH-91382](https://github.com/godotengine/godot/pull/91382)). +- Use data length on QOA checks instead of min size ([GH-91714](https://github.com/godotengine/godot/pull/91714)). +- Fix error in AudioStreamPlayer2D ([GH-91929](https://github.com/godotengine/godot/pull/91929)). +- Use COM smart pointers in WASAPI driver ([GH-91975](https://github.com/godotengine/godot/pull/91975)). +- Fix polyphonic audio streams with id > 1 cannot be stopped or changed (MSVC mis-optimization) ([GH-93120](https://github.com/godotengine/godot/pull/93120)). +- Fix pausing issues when using Web Audio samples ([GH-93362](https://github.com/godotengine/godot/pull/93362)). +- Remove superfluous non-working sample playing check ([GH-93428](https://github.com/godotengine/godot/pull/93428)). +- Add vertical separation to audio bus ([GH-93507](https://github.com/godotengine/godot/pull/93507)). +- Fix Web samples finished missing signal ([GH-94044](https://github.com/godotengine/godot/pull/94044)). +- Fix audio samples not being able to be "finished" ([GH-94268](https://github.com/godotengine/godot/pull/94268)). +- Fix new stream types `mix()` not returning 0 when inactive ([GH-94514](https://github.com/godotengine/godot/pull/94514)). +- Fix typo that prevented samples finishing ([GH-94800](https://github.com/godotengine/godot/pull/94800)). +- Web: Gracefully handle non-finite audio volumes ([GH-94869](https://github.com/godotengine/godot/pull/94869)). +- Expand columns in the audio interactive transition editor ([GH-95134](https://github.com/godotengine/godot/pull/95134)). +- AudioStreamPolyphonic: Implement stopping with sample playback ([GH-95321](https://github.com/godotengine/godot/pull/95321)). #### Buildsystem -- SCons: Add `object_prefix` option ([GH-62652](https://github.com/godotengine/godot/pull/62652)). -- Allow unbundling OpenXR (for Linux distros) ([GH-73443](https://github.com/godotengine/godot/pull/73443)). -- Add a Linux ThreadSanitizer job to CI ([GH-73777](https://github.com/godotengine/godot/pull/73777)). -- libpng: Enable intrinsics on x86/SSE2, ppc64/VSX, and all arm/NEON ([GH-78325](https://github.com/godotengine/godot/pull/78325)). -- Add static check for overzealous .gitignores and fix an example of such ([GH-78908](https://github.com/godotengine/godot/pull/78908)). -- SCons : Add `scu_limit` argument ([GH-78959](https://github.com/godotengine/godot/pull/78959)). -- Linux: Fix build with `use_sowrap=no` and various warnings/errors ([GH-79097](https://github.com/godotengine/godot/pull/79097)). -- Linux: Allow unbundling brotli to use system library ([GH-79101](https://github.com/godotengine/godot/pull/79101)). -- Linux: Link libsquish directly when unbundling, .pc file unreliable ([GH-79105](https://github.com/godotengine/godot/pull/79105)). -- Fix build options configuration for Visual Studio projects ([GH-79238](https://github.com/godotengine/godot/pull/79238)). -- CI: Allow skipping our GHA workflows with `DISABLE_GODOT_CI` variable ([GH-79321](https://github.com/godotengine/godot/pull/79321)). -- Fix `doc_status.py` trying to get removed `version` tag from XML ([GH-79406](https://github.com/godotengine/godot/pull/79406)). -- Have `core_bind.h` Thread type syntax match `core_bind.cpp` ([GH-79466](https://github.com/godotengine/godot/pull/79466)). -- Web: Use `fvisibility=hidden` for side module when `dlink_enabled` ([GH-79578](https://github.com/godotengine/godot/pull/79578)). -- Header formatting commits to `.git-blame-ignore-revs` ([GH-79615](https://github.com/godotengine/godot/pull/79615)). -- Fix gcc builds failing on Windows ([GH-79724](https://github.com/godotengine/godot/pull/79724)). -- Windows: Try using objcopy and strip with prefix and without prefix ([GH-79871](https://github.com/godotengine/godot/pull/79871)). -- CI: Extract godot-cpp testing into its own job ([GH-80091](https://github.com/godotengine/godot/pull/80091)). -- CI: Free disk space on Linux runners ([GH-80115](https://github.com/godotengine/godot/pull/80115)). -- CI: Compare API compatibility against both 4.0 and 4.1 ([GH-80354](https://github.com/godotengine/godot/pull/80354)). -- Suppress NavigationServer race conditions ([GH-80392](https://github.com/godotengine/godot/pull/80392)). -- Fix API validation script on macOS ([GH-80471](https://github.com/godotengine/godot/pull/80471)). -- SCons: Disable misbehaving MSVC incremental linking ([GH-80482](https://github.com/godotengine/godot/pull/80482)). -- SCons: Carry over the `windows_subsystem` setting to the generated vsproj ([GH-80547](https://github.com/godotengine/godot/pull/80547)). -- SCons: Disable C++ exception handling ([GH-80612](https://github.com/godotengine/godot/pull/80612)). -- Fix GCC `-Wmaybe-uninitialized` warnings ([GH-80615](https://github.com/godotengine/godot/pull/80615)). -- SCons: Enable `/WX` on LINKFLAGS for MSVC with `werror=yes` ([GH-80711](https://github.com/godotengine/godot/pull/80711)). -- SCons: Make ktx module require basis_universal ([GH-80789](https://github.com/godotengine/godot/pull/80789)). -- Windows: Add main executable to the console wrapper dependencies to prevent simultaneous linking ([GH-80918](https://github.com/godotengine/godot/pull/80918)). -- Assign extension validation files to the GDExtension and .NET teams in CODEOWNERS ([GH-81116](https://github.com/godotengine/godot/pull/81116)). -- Remove too greedy gcov/lcov ignores from `.gitignore` ([GH-81120](https://github.com/godotengine/godot/pull/81120)). -- SCons: Add option for MSVC incremental linking ([GH-81144](https://github.com/godotengine/godot/pull/81144)). -- CI: Bump version for `actions/checkout@v4` and `actions/setup-dotnet@v3` ([GH-81302](https://github.com/godotengine/godot/pull/81302)). -- CI: Compat checks: Make fetching the reference API more robust ([GH-81337](https://github.com/godotengine/godot/pull/81337)). -- Web: Workaround Emscripten 3.1.42+ LTO regression ([GH-81340](https://github.com/godotengine/godot/pull/81340)). -- UWP: Remove platform port, needs to be redone from scratch for 4.x ([GH-81416](https://github.com/godotengine/godot/pull/81416)). -- Haiku: Remove remnants of past WIP platform port ([GH-81420](https://github.com/godotengine/godot/pull/81420)). -- Web: Fix version check for missing scalbnf LTO workaround ([GH-81869](https://github.com/godotengine/godot/pull/81869)). -- macOS: Workaround Xcode 15 linker bug ([GH-81968](https://github.com/godotengine/godot/pull/81968)). -- SCons: Fix Python 3.12 SyntaxError with regex escape sequences ([GH-82290](https://github.com/godotengine/godot/pull/82290)). -- Windows: Remove `MSVC` define redundant with `_MSC_VER` ([GH-82304](https://github.com/godotengine/godot/pull/82304)). -- Updated compiler version detection ([GH-82325](https://github.com/godotengine/godot/pull/82325)). -- Fix compiler detection ([GH-82352](https://github.com/godotengine/godot/pull/82352)). -- Fix build on MSVC 2017 ([GH-82450](https://github.com/godotengine/godot/pull/82450)). -- iOS: Fix build with Xcode 15 ([GH-82458](https://github.com/godotengine/godot/pull/82458)). -- Web: Fix `dlink_enabled` build ([GH-82633](https://github.com/godotengine/godot/pull/82633)). -- SCons: Change `check_c_headers` from tuple array to dictionary ([GH-82638](https://github.com/godotengine/godot/pull/82638)). -- Validate `code` tags for class and member references ([GH-82691](https://github.com/godotengine/godot/pull/82691)). -- Fix building without GDScript ([GH-82985](https://github.com/godotengine/godot/pull/82985)). -- CI: Switch mesa PPA from kisak-mesa to turtle ([GH-83147](https://github.com/godotengine/godot/pull/83147)). -- CI: Workaround recently broken add-apt-repository on GHA ([GH-83214](https://github.com/godotengine/godot/pull/83214)). -- X11: Fix unused variables warning when `touch` is disabled ([GH-83265](https://github.com/godotengine/godot/pull/83265)). -- Bump the java version to version 17 ([GH-83515](https://github.com/godotengine/godot/pull/83515)). -- SCons: Use CXXFLAGS to disable exceptions, it's only for C++ ([GH-83618](https://github.com/godotengine/godot/pull/83618)). -- Web: Fix closure compiler builds using BIGINT ([GH-83720](https://github.com/godotengine/godot/pull/83720)). -- SCons: Reduce and cleanup verbose output for SCU builds ([GH-83996](https://github.com/godotengine/godot/pull/83996)). -- Use colored output on CI for Doctest ([GH-84100](https://github.com/godotengine/godot/pull/84100)). -- Linux: Remove hardcoded lib path for x86 cross-compilation ([GH-84307](https://github.com/godotengine/godot/pull/84307)). -- Replace the use of the `ANDROID_SDK_ROOT` env variable with `ANDROID_HOME` ([GH-84316](https://github.com/godotengine/godot/pull/84316)). -- CI: Pin Emscripten to 3.1.39 ([GH-84717](https://github.com/godotengine/godot/pull/84717)). -- Donors: Change tiers to match Dev Fund, sync latest data ([GH-84884](https://github.com/godotengine/godot/pull/84884)). -- makerst: Disallow user-contributed notes on the class index page ([GH-85006](https://github.com/godotengine/godot/pull/85006)). -- Use mingw-std-threads in MinGW builds ([GH-85039](https://github.com/godotengine/godot/pull/85039)). -- Avoid conflict between mingw-std-threads and Clang's own ([GH-85208](https://github.com/godotengine/godot/pull/85208)). -- Fix generating vsproj with SCons 4.6.0+ ([GH-85357](https://github.com/godotengine/godot/pull/85357)). -- Add unsigned char cast ifdef ([GH-85500](https://github.com/godotengine/godot/pull/85500)). +- Add option in SCons to clone env variables ([GH-70770](https://github.com/godotengine/godot/pull/70770)). +- SCons: Add `stack_size` and `default_pthread_stack_size` options to Web target ([GH-75166](https://github.com/godotengine/godot/pull/75166)). +- SCons: Add `-ffile-prefix-map` GCC/Clang option to make debug file paths relative ([GH-78232](https://github.com/godotengine/godot/pull/78232)). +- MinGW: Force separate debug symbols if executable size is larger than 1.9 GB ([GH-79875](https://github.com/godotengine/godot/pull/79875)). +- Remove lgtm.yml since LGTM is now replaced by Github Code Scanning ([GH-81874](https://github.com/godotengine/godot/pull/81874)). +- Identify pull request builds from GitHub Actions with the PR number ([GH-83448](https://github.com/godotengine/godot/pull/83448)). +- CI: Enable ANGLE static linking ([GH-84175](https://github.com/godotengine/godot/pull/84175)). +- Add `generate_apk=yes` to generate an APK after building ([GH-84440](https://github.com/godotengine/godot/pull/84440)). +- Use Python venv if detected when building VS project ([GH-84593](https://github.com/godotengine/godot/pull/84593)). +- Only build glslang if Vulkan or Direct3D 12 rendering is enabled ([GH-84613](https://github.com/godotengine/godot/pull/84613)). +- Add parameter to allow generation of the Godot native shared libraries from gradle ([GH-84674](https://github.com/godotengine/godot/pull/84674)). +- New Visual Studio project generation logic that supports any platform that wants to opt in ([GH-84885](https://github.com/godotengine/godot/pull/84885)). +- Alias `platform=javascript` SCons option to `platform=web` ([GH-84979](https://github.com/godotengine/godot/pull/84979)). +- SCons: Add two new `COMSTR` environment variables ([GH-85153](https://github.com/godotengine/godot/pull/85153)). +- SCons: Update mypy ([GH-85192](https://github.com/godotengine/godot/pull/85192)). +- Run `Clean` in Windows SCsub to clean up debug files ([GH-85197](https://github.com/godotengine/godot/pull/85197)). +- macOS: Check Apple specific version instead of generic clang version ([GH-85206](https://github.com/godotengine/godot/pull/85206)). +- SCons: Change `Environment` type hints to `SConsEnvironment` ([GH-85322](https://github.com/godotengine/godot/pull/85322)). +- Fix the Web platform team's codeowners link ([GH-85746](https://github.com/godotengine/godot/pull/85746)). +- Refactor and fix `make_virtuals.py` ([GH-85770](https://github.com/godotengine/godot/pull/85770)). +- Fix invalid Python escape sequences ([GH-85818](https://github.com/godotengine/godot/pull/85818)). +- Instruct users to add code/errors as text in issues ([GH-86006](https://github.com/godotengine/godot/pull/86006)). +- Set what were default values for Web platform linker flags `-sSTACK_SIZE` and `-sDEFAULT_PTHREAD_STACK_SIZE` ([GH-86036](https://github.com/godotengine/godot/pull/86036)). +- D3D12: Add missing DLL architecture paths for the 32-bit builds ([GH-86107](https://github.com/godotengine/godot/pull/86107)). +- Mention `etcpak` changes in thirdparty/README.md ([GH-86236](https://github.com/godotengine/godot/pull/86236)). +- [iOS/macOS] Add option to automatically build (and sign / archive) bundles ([GH-86255](https://github.com/godotengine/godot/pull/86255)). +- Allow detecting when building as an engine module ([GH-86269](https://github.com/godotengine/godot/pull/86269)). +- Fix Clang `-Winconsistent-missing-override` warning ([GH-86392](https://github.com/godotengine/godot/pull/86392)). +- Add a python script to install Direct3D 12 SDK components ([GH-86717](https://github.com/godotengine/godot/pull/86717)). +- Fix some build errors with `disable_3d=yes` ([GH-86874](https://github.com/godotengine/godot/pull/86874)). +- SCons: Fix `CCFLAGS`, `LINKFLAGS`, etc. command line overrides ([GH-86964](https://github.com/godotengine/godot/pull/86964)). +- Add `tests/python_build` to clang-format pre-commit hook ignore list ([GH-87000](https://github.com/godotengine/godot/pull/87000)). +- Revamp `godot.natvis` to improve VS debugging experience ([GH-87053](https://github.com/godotengine/godot/pull/87053)). +- SCons: Silence redundant MSVC output ([GH-87154](https://github.com/godotengine/godot/pull/87154)). +- makerst: Suggest using `[code skip-lint]` to skip warnings if intended ([GH-87218](https://github.com/godotengine/godot/pull/87218)). +- Windows: Remove `dxc_path` check ([GH-87247](https://github.com/godotengine/godot/pull/87247)). +- macOS: Fix MoltenVK SDK detection after file location changes in 1.3.275.0 ([GH-87305](https://github.com/godotengine/godot/pull/87305)). +- Update Android dependencies for the project ([GH-87346](https://github.com/godotengine/godot/pull/87346)). +- iOS: Update linker flags for Xcode 15.2 ([GH-87358](https://github.com/godotengine/godot/pull/87358)). +- Linux: Add support for PCK embedding section with non GNU-ld linkers ([GH-87464](https://github.com/godotengine/godot/pull/87464)). +- CI: Update `mymindstorm/setup-emsdk` to v14, should fix cache folder conflicts ([GH-87575](https://github.com/godotengine/godot/pull/87575)). +- SCons: Fix Windows cross-compilation from Linux after #86717 ([GH-87609](https://github.com/godotengine/godot/pull/87609)). +- SCons: Add proper MinGW support to D3D12 deps install script ([GH-87619](https://github.com/godotengine/godot/pull/87619)). +- D3D12: Add support for building with pre-11.0.0 MinGW versions, make PIX runtime opt-in ([GH-87624](https://github.com/godotengine/godot/pull/87624)). +- Undefine yet another macro from Windows headers ([GH-87627](https://github.com/godotengine/godot/pull/87627)). +- Avoid non-constant-expression cannot be narrowed on Windows on mingw ([GH-87720](https://github.com/godotengine/godot/pull/87720)). +- Use raw strings for D3D12 install messages ([GH-87734](https://github.com/godotengine/godot/pull/87734)). +- Wayland: Disable backend at build-time if wayland-scanner is missing ([GH-87765](https://github.com/godotengine/godot/pull/87765)). +- Fix `godot.natvis` after CowData 64-bit promotion ([GH-87848](https://github.com/godotengine/godot/pull/87848)). +- CI scripts: Fix `printf` for format checks ([GH-87864](https://github.com/godotengine/godot/pull/87864)). +- Add basic Emacs `.gitignore` entries ([GH-87878](https://github.com/godotengine/godot/pull/87878)). +- macOS: Check Vulkan SDK version when looking for MoltenVK libs ([GH-87960](https://github.com/godotengine/godot/pull/87960)). +- Fix emscripten 3.1.51 breaking change about `*glGetProcAddress()` ([GH-87981](https://github.com/godotengine/godot/pull/87981)). +- Web: Bump closure compiler spec to `ECMASCRIPT_2021` ([GH-88010](https://github.com/godotengine/godot/pull/88010)). +- SCons: Fix incremental builds breaking when querying the dependency tree from a SCsub ([GH-88025](https://github.com/godotengine/godot/pull/88025)). +- Silence wayland-scanner check in buildsystem ([GH-88028](https://github.com/godotengine/godot/pull/88028)). +- SCons: Use r-strings for wayland-scanner builder command ([GH-88134](https://github.com/godotengine/godot/pull/88134)). +- Add first interaction action to better inform newcomers ([GH-88137](https://github.com/godotengine/godot/pull/88137)). +- Remove 3.x references in the pull request template ([GH-88159](https://github.com/godotengine/godot/pull/88159)). +- Visual Studio: Don't override user options. Add additional vs hint information ([GH-88244](https://github.com/godotengine/godot/pull/88244)). +- C#: Let platforms signal if they support the mono module or not ([GH-88245](https://github.com/godotengine/godot/pull/88245)). +- Visual Studio: Fix user workflows with custom user VS configurations ([GH-88253](https://github.com/godotengine/godot/pull/88253)). +- Avoid unqualified-id "near" and "far" in Node3DEditor/Viewport ([GH-88270](https://github.com/godotengine/godot/pull/88270)). +- Fix gradle build errors when the build path contains non-ASCII characters ([GH-88304](https://github.com/godotengine/godot/pull/88304)). +- Always enable debug symbols when developing with Android Studio ([GH-88382](https://github.com/godotengine/godot/pull/88382)). +- Fix running tests in template builds ([GH-88452](https://github.com/godotengine/godot/pull/88452)). +- Fix formatting in bug report template ([GH-88457](https://github.com/godotengine/godot/pull/88457)). +- Windows: Make D3D12 loading dynamic to support pre-Windows 10 versions ([GH-88496](https://github.com/godotengine/godot/pull/88496)). +- Disable the crash handler if `execinfo=no` scons option is set ([GH-88520](https://github.com/godotengine/godot/pull/88520)). +- OS_LinuxBSD: Add missing RenderServer include for `get_video_adapter_driver_info` ([GH-88525](https://github.com/godotengine/godot/pull/88525)). +- Add `WASM_BIGINT` linker flag to the web build ([GH-88594](https://github.com/godotengine/godot/pull/88594)). +- CI: Update actions to latest versions, use default runner .NET version ([GH-88671](https://github.com/godotengine/godot/pull/88671)). +- Fix some additional errors with 3D disabled ([GH-88704](https://github.com/godotengine/godot/pull/88704)). +- Replace hand-written pre-commit hooks with `pre-commit` Python tool ([GH-88866](https://github.com/godotengine/godot/pull/88866)). +- Visual Studio: Improve performance of parsing project file ([GH-88949](https://github.com/godotengine/godot/pull/88949)). +- Fix compilation errors when `DISABLE_DEPRECATED` is defined ([GH-88958](https://github.com/godotengine/godot/pull/88958)). +- Pre-commit: Update to clang-format 17.0.6 and black 24.2.0 ([GH-88959](https://github.com/godotengine/godot/pull/88959)). +- Fix linking NavigationServer2D/3D with all classes disabled in build profile ([GH-88986](https://github.com/godotengine/godot/pull/88986)). +- macOS: Fix some deprecation warnings ([GH-88987](https://github.com/godotengine/godot/pull/88987)). +- SCons: Set `silence_msvc` to false by default ([GH-89159](https://github.com/godotengine/godot/pull/89159)). +- Fix build on MSVC 2017 ([GH-89168](https://github.com/godotengine/godot/pull/89168)). +- Fix POT generation missing some strings when built-in ones are enabled ([GH-89227](https://github.com/godotengine/godot/pull/89227)). +- Windows: Avoid `scale_with_dpi` constexpr compiler error ([GH-89303](https://github.com/godotengine/godot/pull/89303)). +- Fix MoltenVK detection ([GH-89327](https://github.com/godotengine/godot/pull/89327)). +- Enforce `\n` eol for Python writes ([GH-89333](https://github.com/godotengine/godot/pull/89333)). +- SCons: Ensure `with` statement where applicable ([GH-89361](https://github.com/godotengine/godot/pull/89361)). +- SCons: Convert remaining `run_in_subprocess` to `env.Run` ([GH-89365](https://github.com/godotengine/godot/pull/89365)). +- SCons: Remove `run_in_subprocess` & `subprocess_main` dependencies ([GH-89393](https://github.com/godotengine/godot/pull/89393)). +- Pre-commit: Fix `copyright_headers.py` to run on all relevant files ([GH-89421](https://github.com/godotengine/godot/pull/89421)). +- SCons: Enable the experimental Ninja backend and minimize timestamp changes to generated code ([GH-89452](https://github.com/godotengine/godot/pull/89452)). +- Fix GCC build warning ([GH-89453](https://github.com/godotengine/godot/pull/89453)). +- Fix `compiledb` SCons tool availability ([GH-89481](https://github.com/godotengine/godot/pull/89481)). +- SCons: Disable verbose output for SCU build ([GH-89483](https://github.com/godotengine/godot/pull/89483)). +- CI: Enable submodules on the checkout action ([GH-89552](https://github.com/godotengine/godot/pull/89552)). +- Fix some build errors with `disable_3d=yes` ([GH-89760](https://github.com/godotengine/godot/pull/89760)). +- Fix encoding when reading files ([GH-89858](https://github.com/godotengine/godot/pull/89858)). +- CI: Work around diff size limit for static checks ([GH-89944](https://github.com/godotengine/godot/pull/89944)). +- CI: Improve fetching of changed files ([GH-89980](https://github.com/godotengine/godot/pull/89980)). +- SCons: Fix Ninja compilation with MSVC ([GH-90208](https://github.com/godotengine/godot/pull/90208)). +- SCons: Refactor `selected_platform` conditional ([GH-90214](https://github.com/godotengine/godot/pull/90214)). +- Fix first interaction line breaks ([GH-90221](https://github.com/godotengine/godot/pull/90221)). +- Remove buggy first interaction ([GH-90261](https://github.com/godotengine/godot/pull/90261)). +- SCons: Ensure *all* generated files can be cleaned ([GH-90270](https://github.com/godotengine/godot/pull/90270)). +- Bump GitHub workflows to SCons 4.7 ([GH-90304](https://github.com/godotengine/godot/pull/90304)). +- SCons: Fix SCU build regression on Windows ([GH-90450](https://github.com/godotengine/godot/pull/90450)). +- Replace `black` formatter with `ruff` ([GH-90457](https://github.com/godotengine/godot/pull/90457)). +- Ensure all Visual Studio files are generated with CRLF ([GH-90495](https://github.com/godotengine/godot/pull/90495)). +- mbedTLS: Add patch to fix build errors with some MSVC versions ([GH-90535](https://github.com/godotengine/godot/pull/90535)). +- SCons: Silence MSVC output bloat without hiding errors ([GH-90551](https://github.com/godotengine/godot/pull/90551)). +- Visual Studio: Fix indentation in sln file, VS is VERY PICKY ([GH-90579](https://github.com/godotengine/godot/pull/90579)). +- Fix infinite while loop on empty added file ([GH-90588](https://github.com/godotengine/godot/pull/90588)). +- SCons: Fix `silence_msvc` regression ([GH-90626](https://github.com/godotengine/godot/pull/90626)). +- mbedTLS: Fix build without the module on MinGW ([GH-90691](https://github.com/godotengine/godot/pull/90691)). +- SCons: Make new `debug_paths_relative` option opt-in ([GH-90692](https://github.com/godotengine/godot/pull/90692)). +- Only define `ENGINE_UPDATE_CHECK_ENABLED` in editor builds ([GH-90781](https://github.com/godotengine/godot/pull/90781)). +- SCons: Convert `env_base` to `env` ([GH-90814](https://github.com/godotengine/godot/pull/90814)). +- SCons: Utilize native Variable alias functionality ([GH-90857](https://github.com/godotengine/godot/pull/90857)). +- SCons: Disable `show_progress` with Ninja ([GH-90858](https://github.com/godotengine/godot/pull/90858)). +- Web: Fix building for web on Windows ([GH-90939](https://github.com/godotengine/godot/pull/90939)). +- SCons: Only use alias if SCons v4.3 or later ([GH-91072](https://github.com/godotengine/godot/pull/91072)). +- CI: [macOS] Fix CI with new GitHub runners ([GH-91074](https://github.com/godotengine/godot/pull/91074)). +- SCons: `scons_version` to environment variable ([GH-91080](https://github.com/godotengine/godot/pull/91080)). +- CI: [macOS] Build for both `arm64` and `x86_64` ([GH-91106](https://github.com/godotengine/godot/pull/91106)). +- Web: Fix closure compiler typedef annotation ([GH-91202](https://github.com/godotengine/godot/pull/91202)). +- Fix GCC 14 `-Wtemplate-id-cdtor` warnings ([GH-91208](https://github.com/godotengine/godot/pull/91208)). +- SCons: Colorize warnings/errors during generation ([GH-91220](https://github.com/godotengine/godot/pull/91220)). +- Add a GDB pretty printer to aid in debugging ([GH-91280](https://github.com/godotengine/godot/pull/91280)). +- SCons: Fixes for warn/error colorization ([GH-91318](https://github.com/godotengine/godot/pull/91318)). +- Fix for Android build on Windows ([GH-91339](https://github.com/godotengine/godot/pull/91339)). +- mbedtls: Disable AESCE on Linux ARM32, doesn't compile on our target arch ([GH-91356](https://github.com/godotengine/godot/pull/91356)). +- Fix arm64/Windows build ([GH-91360](https://github.com/godotengine/godot/pull/91360)). +- Update dependencies in D3D12 SDK installer script ([GH-91416](https://github.com/godotengine/godot/pull/91416)). +- CI: Speedup `pre-commit` static check ([GH-91417](https://github.com/godotengine/godot/pull/91417)). +- Remove "AnalyzeTemporaryDtors" from clang-tidy file ([GH-91559](https://github.com/godotengine/godot/pull/91559)). +- Fix missing space in missing sdkmanager error message ([GH-91574](https://github.com/godotengine/godot/pull/91574)). +- CI: Overhaul static checks to use `pre-commit` ([GH-91597](https://github.com/godotengine/godot/pull/91597)). +- SCons: Generate all scripts natively, implement wrapper function ([GH-91624](https://github.com/godotengine/godot/pull/91624)). +- miniupnpc: Disable socket timeout on Windows, matching upstream ([GH-91636](https://github.com/godotengine/godot/pull/91636)). +- Fix `builtin_embree=no` build linking the wrong version of Embree ([GH-91684](https://github.com/godotengine/godot/pull/91684)). +- CI: Use Emscripten 3.1.59 for Web platform ([GH-91687](https://github.com/godotengine/godot/pull/91687)). +- SCons: Process platform-specific flags earlier ([GH-91791](https://github.com/godotengine/godot/pull/91791)). +- SCons: Preserve `Environment` values when updating `Variables` ([GH-91792](https://github.com/godotengine/godot/pull/91792)). +- Web: Fix debug symbols in web builds ([GH-91800](https://github.com/godotengine/godot/pull/91800)). +- Set `execinfo=no` by default when compiling for Linux/*BSD ([GH-91817](https://github.com/godotengine/godot/pull/91817)). +- SCons: Bump minimum supported GCC version to GCC 9 ([GH-91833](https://github.com/godotengine/godot/pull/91833)). +- CI: Re-add `CHANGED_FILES` logic for pre-commit checks ([GH-91835](https://github.com/godotengine/godot/pull/91835)). +- Don't define `NO_EDITOR_SPLASH` in export templates ([GH-91866](https://github.com/godotengine/godot/pull/91866)). +- SCons: Fix generation of `disabled_classes.gen.h` after #91624 ([GH-91870](https://github.com/godotengine/godot/pull/91870)). +- SCons: Fix `silence_msvc` implementation errors ([GH-91890](https://github.com/godotengine/godot/pull/91890)). +- thorvg: Disable webp loader if corresponding module is disabled ([GH-91901](https://github.com/godotengine/godot/pull/91901)). +- CI: Consolidate pysettings via `pyproject.toml` ([GH-91954](https://github.com/godotengine/godot/pull/91954)). +- SCons: Add options to override AR, AR and RC flags ([GH-91972](https://github.com/godotengine/godot/pull/91972)). +- CI: Fix for jsdoc hook in pre-commit ([GH-92013](https://github.com/godotengine/godot/pull/92013)). +- SCons: Minor fixes/adjustments for web compilation ([GH-92026](https://github.com/godotengine/godot/pull/92026)). +- SCons: Restore compatibility with SCons < 4.0.0 ([GH-92041](https://github.com/godotengine/godot/pull/92041)). +- SCons: Bump min version to 3.1.2, test it on CI with one Linux job ([GH-92043](https://github.com/godotengine/godot/pull/92043)). +- SCons: Fix potential Windows ANSI exception ([GH-92087](https://github.com/godotengine/godot/pull/92087)). +- SCons: Convert platform `get_flags` to dictionary ([GH-92124](https://github.com/godotengine/godot/pull/92124)). +- Fix detecting when Gradle is invoked from Studio ([GH-92176](https://github.com/godotengine/godot/pull/92176)). +- Pre-commit: Allow adding downstream hooks without (less) risk of conflicts ([GH-92204](https://github.com/godotengine/godot/pull/92204)). +- Linux: Enable build config `wayland=yes use_sowrap=no` ([GH-92324](https://github.com/godotengine/godot/pull/92324)). +- SCons: Fix `RES` race condition ([GH-92325](https://github.com/godotengine/godot/pull/92325)). +- Fix build with `vulkan=no` and `d3d12=no` after #91505 ([GH-92364](https://github.com/godotengine/godot/pull/92364)). +- Fix use of undeclared identifier `__cpuidex` error on MinGW ([GH-92488](https://github.com/godotengine/godot/pull/92488)). +- Fix multichar warning in `windows_utils.cpp` ([GH-92541](https://github.com/godotengine/godot/pull/92541)). +- SCons: Fix `mono` dependency ([GH-92661](https://github.com/godotengine/godot/pull/92661)). +- CI: Make local python hooks multi-platform ([GH-92697](https://github.com/godotengine/godot/pull/92697)). +- CI: Migrate codespell logic to `pyproject.toml` ([GH-92728](https://github.com/godotengine/godot/pull/92728)). +- Windows: Fix 32-bit MinGW LTO build ([GH-92753](https://github.com/godotengine/godot/pull/92753)). +- Style: Optimize `.svg` files via `svgo`; add as pre-commit hook ([GH-92766](https://github.com/godotengine/godot/pull/92766)). +- Ignore Kate's build file ([GH-92803](https://github.com/godotengine/godot/pull/92803)). +- Fix building glslang on platforms without `<filesystem>` ([GH-92819](https://github.com/godotengine/godot/pull/92819)). +- Android: Change the way `doNotStrip` is set ([GH-92859](https://github.com/godotengine/godot/pull/92859)). +- Replace deprecated `USE_WEBGL2` linker flag ([GH-92988](https://github.com/godotengine/godot/pull/92988)). +- CI: Hotfix for build error with newer clang++ ([GH-92993](https://github.com/godotengine/godot/pull/92993)). +- Web: Fix thread+dlink builds with emscripten 3.1.61+git ([GH-93143](https://github.com/godotengine/godot/pull/93143)). +- Enable usage of asan-enabled versions of prebuilt libraries ([GH-93152](https://github.com/godotengine/godot/pull/93152)). +- CI: Add manual pre-commit hook for `clang-tidy` ([GH-93271](https://github.com/godotengine/godot/pull/93271)). +- Fix building with `use_volk=yes` on MacOS ([GH-93331](https://github.com/godotengine/godot/pull/93331)). +- Fix not using `encoding="utf-8"` when writing to files or reading from them ([GH-93342](https://github.com/godotengine/godot/pull/93342)). +- [Windows/ARM64] Fix raycast/embree ARM64 build with LLVM/MinGW ([GH-93364](https://github.com/godotengine/godot/pull/93364)). +- [LLVM/MinGW] Fix/suppress DX12 related warnings ([GH-93369](https://github.com/godotengine/godot/pull/93369)). +- CI: Keep GHA artifacts for 60 days ([GH-93421](https://github.com/godotengine/godot/pull/93421)). +- Remove private glslang include ([GH-93471](https://github.com/godotengine/godot/pull/93471)). +- Disable `*glGetProcAddress()` on the web ([GH-93489](https://github.com/godotengine/godot/pull/93489)). +- Fix type-limits warning in `windows_utils` ([GH-93491](https://github.com/godotengine/godot/pull/93491)). +- Style: Relocate `godot_gdb_pretty_print.py` ([GH-93511](https://github.com/godotengine/godot/pull/93511)). +- CI: Add editor target to Android builds config ([GH-93553](https://github.com/godotengine/godot/pull/93553)). +- Windows: Fix arch detection via `VCTOOLSINSTALLDIR` if not first in `PATH` ([GH-93589](https://github.com/godotengine/godot/pull/93589)). +- SCons: Fix output with `vsproj=yes` ([GH-93753](https://github.com/godotengine/godot/pull/93753)). +- Web: Remove unnecessary `EMCC_FORCE_STDLIBS` in dlink builds ([GH-93853](https://github.com/godotengine/godot/pull/93853)). +- SCons: Don't override cl flags on msvc ([GH-94078](https://github.com/godotengine/godot/pull/94078)). +- SCons: Default `optimize` to `auto`, fixing `target`/`dev_build` inference for Web ([GH-94107](https://github.com/godotengine/godot/pull/94107)). +- SCons: Pass optimization flags to the linker too, needed by Emscripten ([GH-94109](https://github.com/godotengine/godot/pull/94109)). +- SCons: Fix build fetching `git_timestamp` if git `log.showsignature=true` ([GH-94115](https://github.com/godotengine/godot/pull/94115)). +- Fix VS project generation with SCons 4.8.0+ ([GH-94117](https://github.com/godotengine/godot/pull/94117)). +- Fix a couple GCC 14 `-Wmaybe-uninitialized` warnings ([GH-94133](https://github.com/godotengine/godot/pull/94133)). +- CI: Upload build cache before running tests ([GH-94314](https://github.com/godotengine/godot/pull/94314)). +- CI: Bump SCons version (4.7.0→4.8.0) ([GH-94444](https://github.com/godotengine/godot/pull/94444)). +- Windows: Fix release export template build for ARM64 Windows ([GH-94533](https://github.com/godotengine/godot/pull/94533)). +- Fix `header_guards.py` so it detects the copyright header properly ([GH-94652](https://github.com/godotengine/godot/pull/94652)). +- Web: Fix closure compiler builds, enable it in CI ([GH-94789](https://github.com/godotengine/godot/pull/94789)). +- Automatically enable `doNotStrip` for dev builds ([GH-94887](https://github.com/godotengine/godot/pull/94887)). +- Enable ASTC encoder build when building with ANGLE ([GH-94903](https://github.com/godotengine/godot/pull/94903)). +- SCons: Load optional ninja tool before setting its options ([GH-94993](https://github.com/godotengine/godot/pull/94993)). +- macOS: Fix `generate_bundle` build flag for .NET builds ([GH-95189](https://github.com/godotengine/godot/pull/95189)). +- CI: Update Emscripten to 3.1.64 ([GH-95277](https://github.com/godotengine/godot/pull/95277)). +- Make sure not to generate the compile_commands.json when not asked ([GH-95338](https://github.com/godotengine/godot/pull/95338)). #### C# -- Allow readonly and writeonly C# properties to be accessed from GDScript ([GH-67304](https://github.com/godotengine/godot/pull/67304)). -- Support exporting for Android ([GH-73257](https://github.com/godotengine/godot/pull/73257)). -- Fix crash with `DisposablesTracker_OnGodotShuttingDown` ([GH-78157](https://github.com/godotengine/godot/pull/78157)). -- Add `PropertyHint.Enum` support to `Array<StringName>` ([GH-78264](https://github.com/godotengine/godot/pull/78264)). -- Check if JetBrains Rider editor path is empty ([GH-78516](https://github.com/godotengine/godot/pull/78516)). -- Automatically generate version defines ([GH-78722](https://github.com/godotengine/godot/pull/78722)). -- Update the RiderPathLocator to support the JetBrains Toolbox 2.0 ([GH-78832](https://github.com/godotengine/godot/pull/78832)). -- Add platform name to the exported data directory ([GH-78846](https://github.com/godotengine/godot/pull/78846)). -- Fix deserialization of delegates that are 0-parameter overloads ([GH-78877](https://github.com/godotengine/godot/pull/78877)). -- Add a Roslyn analyzer for global classes ([GH-79007](https://github.com/godotengine/godot/pull/79007)). -- Add missing `useModelFront` parameter to GodotSharp Basis and Transform ([GH-79082](https://github.com/godotengine/godot/pull/79082)). -- Compare symbol names without null flow state ([GH-79094](https://github.com/godotengine/godot/pull/79094)). -- Add null check before calling `UnregisterGodotObject` ([GH-79151](https://github.com/godotengine/godot/pull/79151)). -- Fix command line exporting ([GH-79173](https://github.com/godotengine/godot/pull/79173)). -- Add a warning about C# differences to the class reference ([GH-79206](https://github.com/godotengine/godot/pull/79206)). -- Document generated members ([GH-79239](https://github.com/godotengine/godot/pull/79239)). -- Print error when MethodBind/Callable call fails ([GH-79249](https://github.com/godotengine/godot/pull/79249)). -- Improve `GD.PushError` and `GD.PushWarning` ([GH-79280](https://github.com/godotengine/godot/pull/79280)). -- Fix MSVC dotnet builds failing if running `dev_mode` ([GH-79351](https://github.com/godotengine/godot/pull/79351)). -- Move build button to EditorRunBar ([GH-79357](https://github.com/godotengine/godot/pull/79357)). -- Fix line in OpenInExternalEditor ([GH-79404](https://github.com/godotengine/godot/pull/79404)). -- Generate instance types for singletons ([GH-79470](https://github.com/godotengine/godot/pull/79470)). -- Suppress NU5128 warning ([GH-79501](https://github.com/godotengine/godot/pull/79501)). -- Fix issues in C# documentation comments ([GH-79748](https://github.com/godotengine/godot/pull/79748)). -- Delegate opening files for Rider to the RiderPathLocator NuGet package ([GH-79958](https://github.com/godotengine/godot/pull/79958)). -- Mono: Avoid dictionary lookup for common colors ([GH-80047](https://github.com/godotengine/godot/pull/80047)). -- Show alert if .NET assemblies dir does not exist ([GH-80212](https://github.com/godotengine/godot/pull/80212)). -- Redesign MSBuild panel ([GH-80260](https://github.com/godotengine/godot/pull/80260)). -- Fix typo in parameter name in documentation ([GH-80303](https://github.com/godotengine/godot/pull/80303)). -- Improve diagnostic messages and add help link ([GH-80489](https://github.com/godotengine/godot/pull/80489)). -- Fix exporting for Android ([GH-80521](https://github.com/godotengine/godot/pull/80521)). -- Generate and use compat methods ([GH-80527](https://github.com/godotengine/godot/pull/80527)). -- Implement `proxy_name` for EnumInterface ([GH-80628](https://github.com/godotengine/godot/pull/80628)). -- Include argument types in generated methods ([GH-80629](https://github.com/godotengine/godot/pull/80629)). -- paramref now properly tagged in documentation ([GH-80630](https://github.com/godotengine/godot/pull/80630)). -- Fixed delegate docstring logic ([GH-80631](https://github.com/godotengine/godot/pull/80631)). -- Dereference editor types in core documentation ([GH-80632](https://github.com/godotengine/godot/pull/80632)). -- CI: Propagate error code when glue generation fails ([GH-80846](https://github.com/godotengine/godot/pull/80846)). -- Updated C# example of AddPropertyInfo ([GH-80851](https://github.com/godotengine/godot/pull/80851)). -- Replace `StringNameCache` with `SNAME` ([GH-81073](https://github.com/godotengine/godot/pull/81073)). -- Add abstract class support ([GH-81101](https://github.com/godotengine/godot/pull/81101)). -- Replace usage of deprecated `project_settings_changed` signal ([GH-81175](https://github.com/godotengine/godot/pull/81175)). -- Fix int's C# documentation ([GH-81227](https://github.com/godotengine/godot/pull/81227)). -- Expose `asinh`, `acosh` and `atanh` in Mathf ([GH-81229](https://github.com/godotengine/godot/pull/81229)). -- Fix double unregistration on dispose of Array ([GH-81230](https://github.com/godotengine/godot/pull/81230)). -- Hide hostfxr not found error ([GH-81690](https://github.com/godotengine/godot/pull/81690)). -- Move `bindings_generator` warnings to `.editorconfig` ([GH-81703](https://github.com/godotengine/godot/pull/81703)). -- Make C# static methods accessible ([GH-81783](https://github.com/godotengine/godot/pull/81783)). -- Fixed VS 2022 Mac compatibility ([GH-81802](https://github.com/godotengine/godot/pull/81802)). -- Add Vector2/3/4i.MAX and MIN ([GH-81819](https://github.com/godotengine/godot/pull/81819)). -- Implemented `{project}` placeholder for external dotnet editor ([GH-81847](https://github.com/godotengine/godot/pull/81847)). -- CS1591 from `NoWarn` to `suggestion` ([GH-81934](https://github.com/godotengine/godot/pull/81934)). -- Use `HashCode.Combine()` for basic composite types instead of xor ([GH-82240](https://github.com/godotengine/godot/pull/82240)). -- Remove compat method that is now generated ([GH-82375](https://github.com/godotengine/godot/pull/82375)). -- Fixed an error in `Vector3.BezierDerivative` in mono module ([GH-82664](https://github.com/godotengine/godot/pull/82664)). -- Fix C# editor dialogs ([GH-82683](https://github.com/godotengine/godot/pull/82683)). -- Add C# iOS support ([GH-82729](https://github.com/godotengine/godot/pull/82729)). -- Add C# compat members for 4.2 changes ([GH-82740](https://github.com/godotengine/godot/pull/82740)). -- Add checks to Android export ([GH-82762](https://github.com/godotengine/godot/pull/82762)). -- Report diagnostic for Node exports in a type that doesn't derive from Node ([GH-82918](https://github.com/godotengine/godot/pull/82918)). -- Fix unresolved `inheritdoc` links in `Compat.cs` ([GH-83001](https://github.com/godotengine/godot/pull/83001)). -- Untyped to typed `ArgumentNullException` ([GH-83051](https://github.com/godotengine/godot/pull/83051)). -- Fix MSVC dotnet `dev_mode` regression ([GH-83114](https://github.com/godotengine/godot/pull/83114)). -- Fix lookup for singleton instance types ([GH-83249](https://github.com/godotengine/godot/pull/83249)). -- Fallback to the latest SDK ([GH-83325](https://github.com/godotengine/godot/pull/83325)). -- Fix converting default Callables to native ([GH-83357](https://github.com/godotengine/godot/pull/83357)). -- Allow exporting games without C# ([GH-83422](https://github.com/godotengine/godot/pull/83422)). -- Clarify C# docs for operators performing `xform_inv` ([GH-83514](https://github.com/godotengine/godot/pull/83514)). -- Fix C# docs to use the proper XML ([GH-83529](https://github.com/godotengine/godot/pull/83529)). -- Fix generated nested class order ([GH-83532](https://github.com/godotengine/godot/pull/83532)). -- Add `NOTIFICATION_PREDELETE_CLEANUP` notification to fix C# `Dispose()` ([GH-83670](https://github.com/godotengine/godot/pull/83670)). -- Free dialogs when exiting the editor ([GH-83809](https://github.com/godotengine/godot/pull/83809)). -- Fix node names of submenu items across the editor ([GH-84617](https://github.com/godotengine/godot/pull/84617)). -- Rename `Vector2/3/4I.Min/Max` to `MinValue/MaxValue` ([GH-84663](https://github.com/godotengine/godot/pull/84663)). -- Fail `callp` silently if script is not valid ([GH-84897](https://github.com/godotengine/godot/pull/84897)). -- iOS: Fix dotnet export ([GH-84945](https://github.com/godotengine/godot/pull/84945)). +- Add analyzer release tracking ([GH-80343](https://github.com/godotengine/godot/pull/80343)). +- Allow Editor to reload external changes of scripts ([GH-82113](https://github.com/godotengine/godot/pull/82113)). +- Add unit tests for C# source generators ([GH-82955](https://github.com/godotengine/godot/pull/82955)). +- [C#] Enable nullability for variant structs ([GH-82980](https://github.com/godotengine/godot/pull/82980)). +- [C#] Enable nullability for variant classes ([GH-82983](https://github.com/godotengine/godot/pull/82983)). +- [.NET] Fix serialization of delegates capturing variables ([GH-83217](https://github.com/godotengine/godot/pull/83217)). +- Bindings generator langword check ([GH-83504](https://github.com/godotengine/godot/pull/83504)). +- Disable "Activate now" when creating addons ([GH-83578](https://github.com/godotengine/godot/pull/83578)). +- Use `get_instance_binding` instead of set ([GH-84947](https://github.com/godotengine/godot/pull/84947)). +- Bump the `JetBrains.Rider.PathLocator` PackageReference to 1.0.8 ([GH-85460](https://github.com/godotengine/godot/pull/85460)). +- Fix C# script loader does not work reliably ([GH-85504](https://github.com/godotengine/godot/pull/85504)). +- .NET: Add a warning in the inspector when properties might be out of sync ([GH-85869](https://github.com/godotengine/godot/pull/85869)). +- Allow using `[MustBeVariant]` in generic typed attributes ([GH-85908](https://github.com/godotengine/godot/pull/85908)). +- Implement function to throw on null pointers ([GH-85975](https://github.com/godotengine/godot/pull/85975)). +- Correctly free relevant scripts when closing scene tabs ([GH-86008](https://github.com/godotengine/godot/pull/86008)). +- Use string literal instead of nameof ([GH-86373](https://github.com/godotengine/godot/pull/86373)). +- Upgrade TFM for `net472` and some `netstandard2.0` projects ([GH-86454](https://github.com/godotengine/godot/pull/86454)). +- Add unit tests for C# diagnostic analyzers ([GH-86528](https://github.com/godotengine/godot/pull/86528)). +- Fix typo in GD0103 error link ([GH-86592](https://github.com/godotengine/godot/pull/86592)). +- Add code sample language parity check to `make_rst.py` ([GH-86971](https://github.com/godotengine/godot/pull/86971)). +- Fix return type hint for methods ([GH-86972](https://github.com/godotengine/godot/pull/86972)). +- Enforce globalization code quality rules ([GH-87133](https://github.com/godotengine/godot/pull/87133)). +- Enable nullable environment for `GodotTools` ([GH-87137](https://github.com/godotengine/godot/pull/87137)). +- Provide a roslyn analyzers corresponding to the GD0001 and GD0002 ([GH-87253](https://github.com/godotengine/godot/pull/87253)). +- [C#] Fix `Encloses` failing on shared upper bound for `AABB` and `Rect2(I)` ([GH-87264](https://github.com/godotengine/godot/pull/87264)). +- Use SymbolEqualityComparer ([GH-87342](https://github.com/godotengine/godot/pull/87342)). +- Clean a number of C# warnings ([GH-87518](https://github.com/godotengine/godot/pull/87518)). +- Fix incorrect GC handle for non-instantiable types ([GH-87526](https://github.com/godotengine/godot/pull/87526)). +- Fix sorting for generic types when reloading assemblies ([GH-87550](https://github.com/godotengine/godot/pull/87550)). +- Fix not assigning `runtime_initialized` when initializing with AOT ([GH-87597](https://github.com/godotengine/godot/pull/87597)). +- Fix possible deadlock when creating scripts during a background garbage collection ([GH-87669](https://github.com/godotengine/godot/pull/87669)). +- Remove unused code ([GH-87679](https://github.com/godotengine/godot/pull/87679)). +- Fix issues for StringName reference in `CSharpInstanceBridge.Get` ([GH-87682](https://github.com/godotengine/godot/pull/87682)). +- Fix incorrect condition for error filtering ([GH-87790](https://github.com/godotengine/godot/pull/87790)). +- Throw exception when solution file is missing during exporting ([GH-87829](https://github.com/godotengine/godot/pull/87829)). +- Fix duplicate key issue on reload ([GH-87838](https://github.com/godotengine/godot/pull/87838)). +- Improve handling of generic C# types ([GH-87890](https://github.com/godotengine/godot/pull/87890)). +- Add `Callable` `call_deferred()` C# example ([GH-87928](https://github.com/godotengine/godot/pull/87928)). +- Disable signal callback generation in C# ([GH-87952](https://github.com/godotengine/godot/pull/87952)). +- Fix crash when reloading scripts ([GH-88048](https://github.com/godotengine/godot/pull/88048)). +- Fix C# "out of sync" notice with external editors ([GH-88076](https://github.com/godotengine/godot/pull/88076)). +- Fix processing exclusions during export ([GH-88238](https://github.com/godotengine/godot/pull/88238)). +- Fix missing CowData 64-bit promotion for `PackedInt32Array` ([GH-88268](https://github.com/godotengine/godot/pull/88268)). +- Run source generators tests in CI ([GH-88295](https://github.com/godotengine/godot/pull/88295)). +- Various fixes to generic scripts ([GH-88371](https://github.com/godotengine/godot/pull/88371)). +- Match Core implementation of `BinToInt` & `HexToInt` ([GH-88453](https://github.com/godotengine/godot/pull/88453)). +- [.NET] Clean diagnostic rules ([GH-88469](https://github.com/godotengine/godot/pull/88469)). +- Fix building OpenVisualStudio executable ([GH-88475](https://github.com/godotengine/godot/pull/88475)). +- [.NET] Test and fix exports diagnostics ([GH-88495](https://github.com/godotengine/godot/pull/88495)). +- Bump `Rider.PathLocator` nuget version, which provides a fix for detecting Rider installations ([GH-88544](https://github.com/godotengine/godot/pull/88544)). +- [.NET] Better `.editorconfig` setup in `modules/mono/` ([GH-88570](https://github.com/godotengine/godot/pull/88570)). +- Fix Script Editor saves C# files as embedded scripts ([GH-88692](https://github.com/godotengine/godot/pull/88692)). +- Add deprecated message to generated bindings ([GH-88730](https://github.com/godotengine/godot/pull/88730)). +- Revise implementation of C# `Aabb.GetSupport` to match the implementation in `core` ([GH-88919](https://github.com/godotengine/godot/pull/88919)). +- Only check for empty deprecation message if deprecated ([GH-88921](https://github.com/godotengine/godot/pull/88921)). +- Move dotnet-format script to pre-commit ([GH-88933](https://github.com/godotengine/godot/pull/88933)). +- Fix C# epsilon compiler error on double precision build ([GH-88994](https://github.com/godotengine/godot/pull/88994)). +- [.NET] Fix interpolated strings in ScriptPropertyDefVal ([GH-89007](https://github.com/godotengine/godot/pull/89007)). +- Hint fallback property as node when it is a node ([GH-89175](https://github.com/godotengine/godot/pull/89175)). +- Fix warnings in GodotSharp ([GH-89317](https://github.com/godotengine/godot/pull/89317)). +- Implement `InvariantCulture` on Variant strings ([GH-89547](https://github.com/godotengine/godot/pull/89547)). +- Add property `UsingGodotNETSdk` to Godot.NET.Sdk ([GH-89652](https://github.com/godotengine/godot/pull/89652)). +- Fix errors when creating `Variant` from null array ([GH-89756](https://github.com/godotengine/godot/pull/89756)). +- [C#] Fix `Transform3D.InterpolateWith` applying rotation before scale ([GH-89843](https://github.com/godotengine/godot/pull/89843)). +- Fix regression with C# build editor crash due to `EditorHelpHighlighter` ([GH-89861](https://github.com/godotengine/godot/pull/89861)). +- Make internal properties and property accessors public (but hidden) ([GH-90002](https://github.com/godotengine/godot/pull/90002)). +- Add DebugView for Array and Dictionary, based of the DebugView from the .NET Foundation ([GH-90060](https://github.com/godotengine/godot/pull/90060)). +- Fix "Create C# solution" dialog ([GH-90118](https://github.com/godotengine/godot/pull/90118)). +- [.NET] Disable output embedding on macOS, move it to the advanced options on other platforms ([GH-90422](https://github.com/godotengine/godot/pull/90422)). +- Fix ExprMatch for case sensitive matching ([GH-90678](https://github.com/godotengine/godot/pull/90678)). +- Change order of operation for C# types reloading ([GH-90837](https://github.com/godotengine/godot/pull/90837)). +- Don't return MethodInfo for overloaded methods ([GH-90968](https://github.com/godotengine/godot/pull/90968)). +- Enforce using .NET SDK >= 8 ([GH-91079](https://github.com/godotengine/godot/pull/91079)). +- Fill copyright field in .csproj files to ensure that nuget packages will have both license and copyright fields filled ([GH-91144](https://github.com/godotengine/godot/pull/91144)). +- Fix `StringExtensions.CompareTo` IndexOutOfRangeException ([GH-91203](https://github.com/godotengine/godot/pull/91203)). +- Ignore late bound methods in MustBeVariantAnalyzer ([GH-91368](https://github.com/godotengine/godot/pull/91368)). +- Fix generator crash w/ generic arrays ([GH-91375](https://github.com/godotengine/godot/pull/91375)). +- Fix attributes for `sln`/`csproj` files ([GH-91479](https://github.com/godotengine/godot/pull/91479)). +- .NET: Prevent generating mono glue in project folder ([GH-91509](https://github.com/godotengine/godot/pull/91509)). +- [C#] Unexpose `GodotSharp` ([GH-91557](https://github.com/godotengine/godot/pull/91557)). +- CSharpScript should not own method infos of the base class ([GH-91564](https://github.com/godotengine/godot/pull/91564)). +- Fix C# Hint NodeType and ResourceType HintString ([GH-91645](https://github.com/godotengine/godot/pull/91645)). +- Specify a runtime rollforward for OpenVisualStudio ([GH-91670](https://github.com/godotengine/godot/pull/91670)). +- Fix comparison warnings in `StringExtensions.cs` ([GH-91763](https://github.com/godotengine/godot/pull/91763)). +- [C#] Remove useless `isFirstEntry` and useless `source.Append("else ")` ([GH-91924](https://github.com/godotengine/godot/pull/91924)). +- Fix ContextMenu `Copy Error` is off in `MSBuild` Panel ([GH-91996](https://github.com/godotengine/godot/pull/91996)). +- Skip method name when checking CallError ([GH-92800](https://github.com/godotengine/godot/pull/92800)). +- Fix freeze after building C# project with a lot of files ([GH-92893](https://github.com/godotengine/godot/pull/92893)). +- Escape generated members ([GH-93198](https://github.com/godotengine/godot/pull/93198)). +- macOS: Fix codesigning of .NET helper executables when sandboxing is disabled ([GH-94518](https://github.com/godotengine/godot/pull/94518)). +- Replace .NET detection code with `ClassDB::class_exists("CSharpScript")` ([GH-94680](https://github.com/godotengine/godot/pull/94680)). #### Codestyle -- Made hidden ProjectSettings groups more explicit ([GH-61818](https://github.com/godotengine/godot/pull/61818)). -- Extract StyleBoxFlat, StyleBoxTexture and StyleBoxLine in their own file ([GH-68396](https://github.com/godotengine/godot/pull/68396)). -- Extract and reorganize texture resource classes ([GH-68460](https://github.com/godotengine/godot/pull/68460)). -- Add command-line option to run a `MainLoop` by its global class name ([GH-78045](https://github.com/godotengine/godot/pull/78045)). -- Remove unnecessary value assignments throughout the codebase ([GH-78538](https://github.com/godotengine/godot/pull/78538)). -- Remove uses of `vformat()` with no placeholders ([GH-78797](https://github.com/godotengine/godot/pull/78797)). -- Unify and streamline connecting to Resource changes ([GH-78993](https://github.com/godotengine/godot/pull/78993)). -- Remove unused struct from NavigationMesh ([GH-79713](https://github.com/godotengine/godot/pull/79713)). -- Update NavObstacle creation to new Mutex style ([GH-79916](https://github.com/godotengine/godot/pull/79916)). -- Use compile-time Unicode string conversion ([GH-80362](https://github.com/godotengine/godot/pull/80362)). -- Undefine `typed_array.h` templates after use ([GH-80792](https://github.com/godotengine/godot/pull/80792)). -- Remove debug print ([GH-81129](https://github.com/godotengine/godot/pull/81129)). -- Extract `ScriptInstance` into its own file to simplify includes ([GH-81388](https://github.com/godotengine/godot/pull/81388)). -- Don't use auto where not warranted ([GH-81414](https://github.com/godotengine/godot/pull/81414)). -- Core: Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable ([GH-81487](https://github.com/godotengine/godot/pull/81487)). -- [Scene,Main] Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable ([GH-81568](https://github.com/godotengine/godot/pull/81568)). -- [Drivers,Platform] Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable ([GH-81583](https://github.com/godotengine/godot/pull/81583)). -- Editor: Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable ([GH-81705](https://github.com/godotengine/godot/pull/81705)). -- Modules: Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable ([GH-81760](https://github.com/godotengine/godot/pull/81760)). -- Fix typo in `heuristic_euclidian` helper in AStarGrid2D ([GH-82297](https://github.com/godotengine/godot/pull/82297)). -- Servers: Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable ([GH-82313](https://github.com/godotengine/godot/pull/82313)). -- Fix some typos in source ([GH-82779](https://github.com/godotengine/godot/pull/82779)). -- Replace `sanity` with `safety` for checks ([GH-83002](https://github.com/godotengine/godot/pull/83002)). -- Replace `ERR_FAIL_COND` with `ERR_FAIL_NULL` where applicable ([GH-83003](https://github.com/godotengine/godot/pull/83003)). -- Fix incorrect null check ([GH-83068](https://github.com/godotengine/godot/pull/83068)). -- Clean up some Editor, OpenXR, VideoStream code ([GH-83683](https://github.com/godotengine/godot/pull/83683)). -- Solve race condition between AThousandShips and Akien ([GH-83740](https://github.com/godotengine/godot/pull/83740)). -- Don't use TTR/RTR for ERR/WARN prints ([GH-84774](https://github.com/godotengine/godot/pull/84774)). +- Move 2D and 3D resources to their own folders ([GH-50148](https://github.com/godotengine/godot/pull/50148)). +- Add const lvalue ref to container parameters ([GH-51156](https://github.com/godotengine/godot/pull/51156)). +- Use `Packed*Array` over `Vector<T>` in Variant ([GH-67220](https://github.com/godotengine/godot/pull/67220)). +- Use `Packed*Array` over `Vector<T>` in TypedArray ([GH-67226](https://github.com/godotengine/godot/pull/67226)). +- Add shorthand for using singleton string names ([GH-81303](https://github.com/godotengine/godot/pull/81303)). +- Add deprecation notice to a duplicate method of class `Window` ([GH-83014](https://github.com/godotengine/godot/pull/83014)). +- Move 2D-only and 3D-only navigation code to its own subfolder ([GH-83133](https://github.com/godotengine/godot/pull/83133)). +- Add const references in `String` class ([GH-84375](https://github.com/godotengine/godot/pull/84375)). +- Clean unnecessary copy detected by clang-tidy ([GH-84508](https://github.com/godotengine/godot/pull/84508)). +- Remove unnecessary assignments ([GH-85071](https://github.com/godotengine/godot/pull/85071)). +- Unify parameter names for RendererCanvasCull ([GH-85421](https://github.com/godotengine/godot/pull/85421)). +- Remove GridMap navigation_layers leftover ([GH-85447](https://github.com/godotengine/godot/pull/85447)). +- Improve message about resources in use at exit ([GH-85464](https://github.com/godotengine/godot/pull/85464)). +- Style: Mark clang-format 16 as supported for pre-commit hook ([GH-85837](https://github.com/godotengine/godot/pull/85837)). +- Improve DynamicBVH code to make it clearer how the stack/heap works ([GH-86059](https://github.com/godotengine/godot/pull/86059)). +- Update deferred calls to use Callables ([GH-86301](https://github.com/godotengine/godot/pull/86301)). +- Fix various spelling errors across engine solution ([GH-86787](https://github.com/godotengine/godot/pull/86787)). +- Change AudioStreamPlayer autoplay and GLTFBufferView getters to be const ([GH-86907](https://github.com/godotengine/godot/pull/86907)). +- Add const lvalue ref to `core/*` container parameters ([GH-86966](https://github.com/godotengine/godot/pull/86966)). +- Fix `#if *_ENABLED` inconsistencies, should check if defined ([GH-87286](https://github.com/godotengine/godot/pull/87286)). +- Simplify RefCounted check in `free()` ([GH-87331](https://github.com/godotengine/godot/pull/87331)). +- Remove unused `prev_rot` variable ([GH-87345](https://github.com/godotengine/godot/pull/87345)). +- Null check improvements ([GH-87370](https://github.com/godotengine/godot/pull/87370)). +- Replace error checks against `size` with `is_empty` ([GH-87371](https://github.com/godotengine/godot/pull/87371)). +- Remove unnecessary `this->` expressions ([GH-87688](https://github.com/godotengine/godot/pull/87688)). +- Use `_v` shorthand for type traits and `if constexpr` where appropriate ([GH-87871](https://github.com/godotengine/godot/pull/87871)). +- Add PropertyListHelper in all simple cases ([GH-88306](https://github.com/godotengine/godot/pull/88306)). +- Fixed binary representation typo in comment ([GH-88326](https://github.com/godotengine/godot/pull/88326)). +- Remove `_HashUnion` from `StringName` ([GH-88339](https://github.com/godotengine/godot/pull/88339)). +- Core: Codestyle improvements to math types ([GH-88467](https://github.com/godotengine/godot/pull/88467)). +- Use `ED_IS_SHORTCUT` macro instead of `matches_event` ([GH-88547](https://github.com/godotengine/godot/pull/88547)). +- Remove word duplicates in comments and strings, and fix casing and punctuation ([GH-88733](https://github.com/godotengine/godot/pull/88733)). +- Remove self includes in some files ([GH-88918](https://github.com/godotengine/godot/pull/88918)). +- Use `Vector*` component-wise `min/max/clamp` functions where applicable ([GH-89111](https://github.com/godotengine/godot/pull/89111)). +- Core: Move `#includes` from `project_settings.h` into `project_settings.cpp` ([GH-89113](https://github.com/godotengine/godot/pull/89113)). +- Enforce template syntax `typename` over `class` ([GH-89270](https://github.com/godotengine/godot/pull/89270)). +- Refactor how file cache entries are stored ([GH-89301](https://github.com/godotengine/godot/pull/89301)). +- Wayland: Stop unreachable warning ([GH-89306](https://github.com/godotengine/godot/pull/89306)). +- clang-tidy: Enforce `modernize-use-nullptr` ([GH-89422](https://github.com/godotengine/godot/pull/89422)). +- Rename some arguments called "position" ([GH-89721](https://github.com/godotengine/godot/pull/89721)). +- Remove pointless `_notification()` function in `EditorPropertyOTVariation` ([GH-89823](https://github.com/godotengine/godot/pull/89823)). +- Add `override` mark to ResourceFormat class ([GH-89863](https://github.com/godotengine/godot/pull/89863)). +- Android: Remove redundant semicolons from Kotlin/gradle files ([GH-90147](https://github.com/godotengine/godot/pull/90147)). +- Update lingering `do/while(0)` defines ([GH-90218](https://github.com/godotengine/godot/pull/90218)). +- Core: Replace `_NO_DISCARD_` macro with `[[nodiscard]]` ([GH-90582](https://github.com/godotengine/godot/pull/90582)). +- Remove some unused SceneTree properties ([GH-90598](https://github.com/godotengine/godot/pull/90598)). +- Move NavigationMeshSourceGeometryData(2D/3D) to the 2D/3D subfolders ([GH-90729](https://github.com/godotengine/godot/pull/90729)). +- Rename internal `is_ascii_char` to `is_ascii_alphabet_char` ([GH-90931](https://github.com/godotengine/godot/pull/90931)). +- Redefine `GetSimpleTypeT<>` in terms of `<type_traits>` ([GH-91104](https://github.com/godotengine/godot/pull/91104)). +- Misc code cleanup ([GH-91183](https://github.com/godotengine/godot/pull/91183)). +- ResourceImporterWAV: Remove unnecessary var declaration ([GH-91214](https://github.com/godotengine/godot/pull/91214)). +- Remove unused variable `Viewport::gui.last_mouse_focus` ([GH-91400](https://github.com/godotengine/godot/pull/91400)). +- Remove unused code to convert text resource format to binary ([GH-91488](https://github.com/godotengine/godot/pull/91488)). +- Replace `find` with `contains/has` where applicable ([GH-91619](https://github.com/godotengine/godot/pull/91619)). +- Fix various typos with codespell ([GH-91650](https://github.com/godotengine/godot/pull/91650)). +- Style: Trim trailing whitespace and ensure newline at EOF ([GH-91696](https://github.com/godotengine/godot/pull/91696)). +- Web: Update to eslint 9 ([GH-91863](https://github.com/godotengine/godot/pull/91863)). +- Use Core/Scene stringnames consistently ([GH-91909](https://github.com/godotengine/godot/pull/91909)). +- Cleanup unused/underused singleton StringNames ([GH-91948](https://github.com/godotengine/godot/pull/91948)). +- CI: Fix incorrect executable perms ([GH-92053](https://github.com/godotengine/godot/pull/92053)). +- Automatically use property count in PropertyListHelper ([GH-92283](https://github.com/godotengine/godot/pull/92283)). +- Replace `.bind(...).call_deferred()` with `.call_deferred(...)` ([GH-92427](https://github.com/godotengine/godot/pull/92427)). +- Style: Change esthetic -> aesthetic ([GH-93977](https://github.com/godotengine/godot/pull/93977)). #### Core -- Check parameter validity in `Object::set_script` ([GH-46125](https://github.com/godotengine/godot/pull/46125)). -- Add `settings_changed` signal to ProjectSettings ([GH-62038](https://github.com/godotengine/godot/pull/62038)). -- Fix the behavior of the resource property of the sub-scene root node on instantiation ([GH-65011](https://github.com/godotengine/godot/pull/65011)). -- Disallow invalid escape sequences in `JSON.parse` ([GH-66170](https://github.com/godotengine/godot/pull/66170)). -- Reimplement Resource.`_setup_local_to_scene` & deprecate signal ([GH-67080](https://github.com/godotengine/godot/pull/67080)). -- Deprecate `Resource.setup_local_to_scene` ([GH-67082](https://github.com/godotengine/godot/pull/67082)). -- Fix crash when saving resources with circular references ([GH-68281](https://github.com/godotengine/godot/pull/68281)). -- Add `type_string()` utility ([GH-69624](https://github.com/godotengine/godot/pull/69624)). -- Add a type conversion method to Variant Utility and expose to scripting ([GH-70080](https://github.com/godotengine/godot/pull/70080)). -- Ensure `MainLoop` and its custom script is set right after it's resolved ([GH-70771](https://github.com/godotengine/godot/pull/70771)). -- Ensure that SceneTree is initialized and finalized at correct time ([GH-72248](https://github.com/godotengine/godot/pull/72248)). -- Avoid sorting CallableCustomMethodPointers by their actual address values ([GH-72346](https://github.com/godotengine/godot/pull/72346)). -- Remove unused `threaded_array_processor.h` ([GH-74012](https://github.com/godotengine/godot/pull/74012)). -- Expose and document `Image.get_mipmap_count()` ([GH-74142](https://github.com/godotengine/godot/pull/74142)). -- Fix `Image.convert()` overwriting custom mipmaps ([GH-74238](https://github.com/godotengine/godot/pull/74238)). -- Support numeric/binary hash comparison for floats derived from Variants (as well as existing semantic comparison) ([GH-74588](https://github.com/godotengine/godot/pull/74588)). -- Expose `_validate_property()` for scripting ([GH-75778](https://github.com/godotengine/godot/pull/75778)). -- Add function `ZIPReader::file_exists` ([GH-76860](https://github.com/godotengine/godot/pull/76860)). -- Add `Node.get_tree_string` and `Node.get_tree_string_pretty` ([GH-77072](https://github.com/godotengine/godot/pull/77072)). -- Add a `--max-fps` command-line argument to set a FPS limit ([GH-78012](https://github.com/godotengine/godot/pull/78012)). -- Make a header for VariantUtilityFunctions ([GH-78108](https://github.com/godotengine/godot/pull/78108)). -- Added `Image::load_svg_from_(buffer|string)` ([GH-78248](https://github.com/godotengine/godot/pull/78248)). -- Add inverse hyperbolic functions `asinh()`, `acosh()` & `atanh()` ([GH-78404](https://github.com/godotengine/godot/pull/78404)). -- Add `String.reverse` method ([GH-78529](https://github.com/godotengine/godot/pull/78529)). -- Refactor CallQueue flushing for clarity ([GH-78612](https://github.com/godotengine/godot/pull/78612)). -- Fix `Object::notification` order ([GH-78634](https://github.com/godotengine/godot/pull/78634)). -- Allow renaming child nodes in `_ready` ([GH-78706](https://github.com/godotengine/godot/pull/78706)). -- Support loading of translations on threads ([GH-78747](https://github.com/godotengine/godot/pull/78747)). -- Fix zero-sized WorkerThreadPool not processing group tasks ([GH-78845](https://github.com/godotengine/godot/pull/78845)). -- Fix `Node::add_sibling` parent check ([GH-78847](https://github.com/godotengine/godot/pull/78847)). -- Fix error when non-ASCII characters in resource pack path ([GH-78935](https://github.com/godotengine/godot/pull/78935)). -- Reimplement scene change ([GH-78988](https://github.com/godotengine/godot/pull/78988)). -- Improve error message for `Node.set_owner` ([GH-79000](https://github.com/godotengine/godot/pull/79000)). -- Fix range error for `Array.slice` ([GH-79103](https://github.com/godotengine/godot/pull/79103)). -- TextServer: Remove excessive Dictionary checks ([GH-79166](https://github.com/godotengine/godot/pull/79166)). -- Fix erroneous `pad_zeros()` warning ([GH-79202](https://github.com/godotengine/godot/pull/79202)). -- Fix `PackedScene::get_last_modified_time()` always returns `0` ([GH-79237](https://github.com/godotengine/godot/pull/79237)). -- Add vararg `call()` method to C++ Callable ([GH-79341](https://github.com/godotengine/godot/pull/79341)). -- Fix byte to float color conversion in `DisplayServerWindows::screen_get_pixel` ([GH-79350](https://github.com/godotengine/godot/pull/79350)). -- Fix recursion level check for array stringification ([GH-79370](https://github.com/godotengine/godot/pull/79370)). -- Fix script name of Hant and Hans ([GH-79654](https://github.com/godotengine/godot/pull/79654)). -- Mention expected resource type in ResourceLoader load error ([GH-79737](https://github.com/godotengine/godot/pull/79737)). -- Add determinant check for minimized windows ([GH-79766](https://github.com/godotengine/godot/pull/79766)). -- FastNoiseLite: Fix cellular jitter using incorrect default value ([GH-79922](https://github.com/godotengine/godot/pull/79922)). -- Disable error condition for accessing safe rect ([GH-79937](https://github.com/godotengine/godot/pull/79937)). -- Fix life cycle of ResourceImporterTexture not tracked properly ([GH-79954](https://github.com/godotengine/godot/pull/79954)). -- String: Fix Unicode parsing error message encoding and related JSON tests ([GH-79980](https://github.com/godotengine/godot/pull/79980)). -- Fix life cycle of ResourceImporterTexture better ([GH-79981](https://github.com/godotengine/godot/pull/79981)). -- Fix global transform validity for `Node2D` and `Control` ([GH-80105](https://github.com/godotengine/godot/pull/80105)). -- Fix typo in modulo error message ([GH-80114](https://github.com/godotengine/godot/pull/80114)). -- Actually store safe-rect in embedder ([GH-80117](https://github.com/godotengine/godot/pull/80117)). -- Usage notes for DEV_ASSERT macro ([GH-80156](https://github.com/godotengine/godot/pull/80156)). -- Avoid crash on exiting due to late prints ([GH-80161](https://github.com/godotengine/godot/pull/80161)). -- Add `rotate_toward` and `angle_difference` methods ([GH-80225](https://github.com/godotengine/godot/pull/80225)). -- Avoid retrieving the object ID of a stack variable if it is nil ([GH-80256](https://github.com/godotengine/godot/pull/80256)). -- Remove `CanvasItem::_invalidate_global_transform` ([GH-80320](https://github.com/godotengine/godot/pull/80320)). -- Use StringName consistently to refer to the Master audio bus name ([GH-80381](https://github.com/godotengine/godot/pull/80381)). -- Deprecate `project_settings_changed` signal ([GH-80450](https://github.com/godotengine/godot/pull/80450)). -- Remove `DDS_INDEXED` from DDSFormat ([GH-80669](https://github.com/godotengine/godot/pull/80669)). -- Allow to get a list of visible embedded `Window`s ([GH-80673](https://github.com/godotengine/godot/pull/80673)). -- Fix CanvasItem notification thread guard ([GH-80752](https://github.com/godotengine/godot/pull/80752)). -- Optimize `String.left()` and `String.right()` ([GH-80824](https://github.com/godotengine/godot/pull/80824)). -- Implement center window function ([GH-81012](https://github.com/godotengine/godot/pull/81012)). -- Fix `JavaScriptBridge.eval()` never returning PackedByteArray ([GH-81015](https://github.com/godotengine/godot/pull/81015)). -- Add check to ensure registered classes are declared ([GH-81020](https://github.com/godotengine/godot/pull/81020)). -- Fix recursion level check for `VariantWriter::write()` with objects ([GH-81123](https://github.com/godotengine/godot/pull/81123)). -- Fix comparison of `Callable`s with binds ([GH-81131](https://github.com/godotengine/godot/pull/81131)). -- Fix consistency of GradientTexture changes ([GH-81137](https://github.com/godotengine/godot/pull/81137)). -- Fix for non-deterministic behavior in PCKPacker ([GH-81280](https://github.com/godotengine/godot/pull/81280)). -- String: Fix string conversion for -0.0 float values ([GH-81328](https://github.com/godotengine/godot/pull/81328)). -- Fix `SIGN(NAN)` returning 1 ([GH-81464](https://github.com/godotengine/godot/pull/81464)). -- Use pass by reference in ZIPPacker & ZIPReader signatures ([GH-81501](https://github.com/godotengine/godot/pull/81501)). -- Add `Vector2/3/4i.MAX` and `MIN` ([GH-81741](https://github.com/godotengine/godot/pull/81741)). -- Crypto: Fix `generate_random_bytes` for large chunks ([GH-81884](https://github.com/godotengine/godot/pull/81884)). -- Fix allocation size overflow check in `CowData` ([GH-81917](https://github.com/godotengine/godot/pull/81917)). -- Remove unnecessary line from `Projection::get_z_far` ([GH-81986](https://github.com/godotengine/godot/pull/81986)). -- Make all render driver project settings require restart ([GH-82008](https://github.com/godotengine/godot/pull/82008)). -- Add support for ImageTexture3D serialization ([GH-82055](https://github.com/godotengine/godot/pull/82055)). -- Made signal handling more uniform during crashes ([GH-82163](https://github.com/godotengine/godot/pull/82163)). -- Replace `radians` range hint with `radians_as_degrees` ([GH-82195](https://github.com/godotengine/godot/pull/82195)). -- Fix not being able to set Node process priority in certain cases ([GH-82358](https://github.com/godotengine/godot/pull/82358)). -- Fix axis getting mixed up when split leaf ([GH-82436](https://github.com/godotengine/godot/pull/82436)). -- Error handling for `FileAccess.get_file_as_*` ([GH-82595](https://github.com/godotengine/godot/pull/82595)). -- Do not replace starting digit with underscore when making identifier ([GH-82786](https://github.com/godotengine/godot/pull/82786)). -- Fix `RBMap`'s, iterator-based, `remove()` ([GH-82797](https://github.com/godotengine/godot/pull/82797)). -- Add missing double-precision flag for Vector4 & Projection in `encode_variant` ([GH-83202](https://github.com/godotengine/godot/pull/83202)). -- Update `triangulate_delaunay()` to avoid needless reallocations ([GH-83434](https://github.com/godotengine/godot/pull/83434)). -- Fix heap-use-after-free when resource loaded with `load_threaded_request` is never fetched ([GH-83782](https://github.com/godotengine/godot/pull/83782)). -- Fix `FastNoiseLite.get_seamless_image` function crash with bad param ([GH-83978](https://github.com/godotengine/godot/pull/83978)). -- Fix invalid return from some `_get/_set` ([GH-84054](https://github.com/godotengine/godot/pull/84054)). -- Prevent `encode_variant` doing `memcpy` from `nullptr` ([GH-84155](https://github.com/godotengine/godot/pull/84155)). -- Fix uninitialized variable in `Image::fix_alpha_edges()` ([GH-84173](https://github.com/godotengine/godot/pull/84173)). -- Fix `FastNoiseLite.get_image` crashes with bad param ([GH-84181](https://github.com/godotengine/godot/pull/84181)). -- Add comment why off-by-one error is hard to fix ([GH-84297](https://github.com/godotengine/godot/pull/84297)). -- Remove unused `NOTIFICATION_NODE_RECACHE_REQUESTED` notification ([GH-84419](https://github.com/godotengine/godot/pull/84419)). -- Keep Variant type after `zero()` ([GH-84597](https://github.com/godotengine/godot/pull/84597)). -- Make languages bookkeeping thread-safe ([GH-84657](https://github.com/godotengine/godot/pull/84657)). -- Fix crash when saving compressed image as JPG & WebP ([GH-84758](https://github.com/godotengine/godot/pull/84758)). -- Fix translation remapping check for imported resources ([GH-84791](https://github.com/godotengine/godot/pull/84791)). -- Let languages init & finish run without locks held ([GH-84847](https://github.com/godotengine/godot/pull/84847)). -- Fix `sizeof` usage for Variant pointers in `alloca` ([GH-84925](https://github.com/godotengine/godot/pull/84925)). -- Let scene replacement benefit from certain late pieces of frame logic ([GH-85184](https://github.com/godotengine/godot/pull/85184)). -- Prevent read-after-free in the queued CallableCustomStaticMethodPointer, fixes `slot >= slot_max` errors in release templates ([GH-85280](https://github.com/godotengine/godot/pull/85280)). +- Add colors to the command-line help ([GH-36252](https://github.com/godotengine/godot/pull/36252)). +- Rename `VariantZeroAssigner` to `VariantDefaultInitializer` ([GH-59186](https://github.com/godotengine/godot/pull/59186)). +- Add `merged` method to allow returning Dictionary after merging ([GH-65526](https://github.com/godotengine/godot/pull/65526)). +- Fix recursive resource local to scene (array/dictionary properties on resources) ([GH-71578](https://github.com/godotengine/godot/pull/71578)). +- Add Unicode support to `String.to_*_case()` methods ([GH-75846](https://github.com/godotengine/godot/pull/75846)). +- Optimize `Color::find_named_color()` ([GH-75860](https://github.com/godotengine/godot/pull/75860)). +- Add a `get_or_add` method to Dictionary ([GH-78095](https://github.com/godotengine/godot/pull/78095)). +- Add SceneTree.get_node_count_in_group() ([GH-78206](https://github.com/godotengine/godot/pull/78206)). +- Add typed array support for binary serialization ([GH-78219](https://github.com/godotengine/godot/pull/78219)). +- Set language encoding flag when using `ZIPPacker` ([GH-78732](https://github.com/godotengine/godot/pull/78732)). +- Fix crash caused by stale owner ([GH-78997](https://github.com/godotengine/godot/pull/78997)). +- TextServer: Fix `get_word_breaks` and its uses ([GH-79054](https://github.com/godotengine/godot/pull/79054)). +- Add `--no-header` option ([GH-79179](https://github.com/godotengine/godot/pull/79179)). +- Expose `Vector*` component-wise and scalar `min/max` to scripting ([GH-80223](https://github.com/godotengine/godot/pull/80223)). +- Expose `Script.get_global_name()` ([GH-80487](https://github.com/godotengine/godot/pull/80487)). +- Fix `reparent()` losing owner ([GH-81506](https://github.com/godotengine/godot/pull/81506)). +- Add `is_valid_letter()` to `TextServer` ([GH-81639](https://github.com/godotengine/godot/pull/81639)). +- Add `NodePath::slice` method ([GH-81822](https://github.com/godotengine/godot/pull/81822)). +- Merge `uid_cache.bin` and `global_script_class_cache.cfg` after mounting PCKs ([GH-82084](https://github.com/godotengine/godot/pull/82084)). +- Help compilers optimize `Object::cast_to()` ([GH-82903](https://github.com/godotengine/godot/pull/82903)). +- Implement `Vector2i/3i/4i` methods: `distance_to` and `distance_squared_to` ([GH-83163](https://github.com/godotengine/godot/pull/83163)). +- Fix Basis `is_orthogonal` and `is_rotation` methods, add `is_orthonormal` ([GH-83229](https://github.com/godotengine/godot/pull/83229)). +- Add `const char *` overloads to String class ([GH-84379](https://github.com/godotengine/godot/pull/84379)). +- Add const references detected by clang-tidy ([GH-84445](https://github.com/godotengine/godot/pull/84445)). +- Optimize `String.humanize_size()` ([GH-84462](https://github.com/godotengine/godot/pull/84462)). +- Make `varray()` variadic ([GH-84581](https://github.com/godotengine/godot/pull/84581)). +- Prevent encoding/decoding objects that cannot be instantiated ([GH-84611](https://github.com/godotengine/godot/pull/84611)). +- Prevent crash on conversion of invalid data in `Image` ([GH-84782](https://github.com/godotengine/godot/pull/84782)). +- Fix duplicating sub-scene may get two copies of internal node ([GH-84824](https://github.com/godotengine/godot/pull/84824)). +- When saving a resource with an exported typed array, check whether the type is an external resource ([GH-85024](https://github.com/godotengine/godot/pull/85024)). +- Prevent copying of `SelfList` and `SelfList::List` ([GH-85180](https://github.com/godotengine/godot/pull/85180)). +- Fix crash when hashing empty `CharString` ([GH-85389](https://github.com/godotengine/godot/pull/85389)). +- UndoRedo: Fix `MERGE_ALL` commit from repeating actions ([GH-85390](https://github.com/godotengine/godot/pull/85390)). +- Prevent infinite recursion when printing errors ([GH-85397](https://github.com/godotengine/godot/pull/85397)). +- Add `PackedVector4Array` Variant type ([GH-85474](https://github.com/godotengine/godot/pull/85474)). +- Fix property groups overriding real properties ([GH-85486](https://github.com/godotengine/godot/pull/85486)). +- Issue template: Change version field to "Tested versions", asking to test earlier versions ([GH-85554](https://github.com/godotengine/godot/pull/85554)). +- Fix RegEx `search_all` for zero length matches/lookahead ([GH-85783](https://github.com/godotengine/godot/pull/85783)). +- Do not reload resources and send notification if locale is not changed ([GH-85787](https://github.com/godotengine/godot/pull/85787)). +- Fix `FileAccessPack::get_buffer` updating position past the length of file ([GH-85991](https://github.com/godotengine/godot/pull/85991)). +- Fix `RegEx.sub` truncating string when `end` is used ([GH-86052](https://github.com/godotengine/godot/pull/86052)). +- Include `name` field in MethodInfo operator == ([GH-86259](https://github.com/godotengine/godot/pull/86259)). +- Add `PackedRealArray` as an alias for `Vector<real_t>` ([GH-86324](https://github.com/godotengine/godot/pull/86324)). +- Improve error message in text resource format parser ([GH-86350](https://github.com/godotengine/godot/pull/86350)). +- Add and expose Basis/Transform2D/3D division by float operator ([GH-86364](https://github.com/godotengine/godot/pull/86364)). +- Suggest `--headless` CLI argument in DisplayServer not found error message ([GH-86409](https://github.com/godotengine/godot/pull/86409)). +- Fix data race in PagedArray ([GH-86412](https://github.com/godotengine/godot/pull/86412)). +- Ensure special characters are escaped in TSCN connections and editable hint ([GH-86417](https://github.com/godotengine/godot/pull/86417)). +- Add iteration support to `Array` ([GH-86518](https://github.com/godotengine/godot/pull/86518)). +- Remove traces of the extinct RID preallocate feature ([GH-86570](https://github.com/godotengine/godot/pull/86570)). +- Enhance & fix `WorkerThreadPool` ([GH-86587](https://github.com/godotengine/godot/pull/86587)). +- Initialize pointers in `a_star.cpp` ([GH-86590](https://github.com/godotengine/godot/pull/86590)). +- Improve GDExtension Tools Integration with Editor Debug Tooling ([GH-86721](https://github.com/godotengine/godot/pull/86721)). +- Promote CowData to 64 bits ([GH-86730](https://github.com/godotengine/godot/pull/86730)). +- Optimize comparisons for Object's `get_argument_options` ([GH-86743](https://github.com/godotengine/godot/pull/86743)). +- Add autocompletion for `Engine.get_singleton` & similar ([GH-86753](https://github.com/godotengine/godot/pull/86753)). +- Pseudolocalization: Prevent out of bounds reads ([GH-86827](https://github.com/godotengine/godot/pull/86827)). +- Avoid regressing in progress reporting in resource load ([GH-86845](https://github.com/godotengine/godot/pull/86845)). +- Add autocompletion to `get_node_or_null` ([GH-86891](https://github.com/godotengine/godot/pull/86891)). +- Fix wrong fail condition in compressed texture's `_set_data` ([GH-86950](https://github.com/godotengine/godot/pull/86950)). +- Fix ZIPPacker storing file permissions unexpectedly ([GH-86985](https://github.com/godotengine/godot/pull/86985)). +- Fix² behavior of ResourceFormatLoader `CACHE_MODE_REPLACE` ([GH-87008](https://github.com/godotengine/godot/pull/87008)). +- Give EXR saving methods a default value of false like the bindings ([GH-87062](https://github.com/godotengine/godot/pull/87062)). +- Fix `AABB.encloses` failing on shared upper bound ([GH-87118](https://github.com/godotengine/godot/pull/87118)). +- Fix deadlock in `RemoteDebugger::debug` ([GH-87169](https://github.com/godotengine/godot/pull/87169)). +- Fix inaccuracies in the report of leaked objects ([GH-87222](https://github.com/godotengine/godot/pull/87222)). +- Fix renaming a node to the name of its siblings breaking NodePath ([GH-87252](https://github.com/godotengine/godot/pull/87252)). +- Fix `resource_local_to_scene` in arrays and dictionaries ([GH-87268](https://github.com/godotengine/godot/pull/87268)). +- Display values in vector/quaternion math function errors ([GH-87300](https://github.com/godotengine/godot/pull/87300)). +- Implement maximum undo steps in UndoRedo ([GH-87353](https://github.com/godotengine/godot/pull/87353)). +- Add `--log-file` command line argument to write output log to a file ([GH-87373](https://github.com/godotengine/godot/pull/87373)). +- Fix property of type Node duplication when script is attached to a child node ([GH-87387](https://github.com/godotengine/godot/pull/87387)). +- Explicitly initialize all of `FileAccess::create_func[ACCESS_MAX]` ([GH-87389](https://github.com/godotengine/godot/pull/87389)). +- Add check for negative `buffer_size` inside `StreamPeerGZIP::start_(de)compression` ([GH-87448](https://github.com/godotengine/godot/pull/87448)). +- Remove now unused `year` member from `version.py` ([GH-87543](https://github.com/godotengine/godot/pull/87543)). +- Fix `FileAccessMemory` off by one error in `eof_reached` ([GH-87571](https://github.com/godotengine/godot/pull/87571)). +- Manage time singleton in `register_core_types` ([GH-87635](https://github.com/godotengine/godot/pull/87635)). +- Add methods to get argument count of methods ([GH-87680](https://github.com/godotengine/godot/pull/87680)). +- Fix `ResourceLoader.load_threaded_get_status` returning `[0]` constantly in exported projects ([GH-87711](https://github.com/godotengine/godot/pull/87711)). +- Make Callable `bind` method const ([GH-87778](https://github.com/godotengine/godot/pull/87778)). +- Improve `CowData` and `Memory` metadata alignment ([GH-87814](https://github.com/godotengine/godot/pull/87814)). +- Implement a XOR operator for BitField ([GH-87831](https://github.com/godotengine/godot/pull/87831)). +- Update visuals immediately after resizing `Placeholder*` textures ([GH-87854](https://github.com/godotengine/godot/pull/87854)). +- Fix `rpc` call from name based `Callable`s ([GH-87858](https://github.com/godotengine/godot/pull/87858)). +- Extract `SafeBinaryMutex` to separate header ([GH-87893](https://github.com/godotengine/godot/pull/87893)). +- [TextServer / Font] Do not duplicate images to prevent unnecessary embedding ([GH-87971](https://github.com/godotengine/godot/pull/87971)). +- Add newer Variant types to `typed_array.h` ([GH-87992](https://github.com/godotengine/godot/pull/87992)). +- Expose scene unique id functionality in Resource ([GH-88111](https://github.com/godotengine/godot/pull/88111)). +- Link hash table primes externally to prevent data duplication in binary ([GH-88178](https://github.com/godotengine/godot/pull/88178)). +- Allow Ref `instantiate` to accept constructor args ([GH-88183](https://github.com/godotengine/godot/pull/88183)). +- Link `xid_start` and `xid_continue` externally to prevent data duplication in binary ([GH-88203](https://github.com/godotengine/godot/pull/88203)). +- Fix inherited scenes produce errors in editor when `editable_children` is true ([GH-88426](https://github.com/godotengine/godot/pull/88426)). +- Fix owner when importing meshes ([GH-88497](https://github.com/godotengine/godot/pull/88497)). +- Upgrade some array helper classes to 64 bits ([GH-88551](https://github.com/godotengine/godot/pull/88551)). +- Improve thread safety of resource loading ([GH-88561](https://github.com/godotengine/godot/pull/88561)). +- Enhance cache modes in resource loading ([GH-88664](https://github.com/godotengine/godot/pull/88664)). +- Remove spammy dev-mode message about load deadlock prevention ([GH-88706](https://github.com/godotengine/godot/pull/88706)). +- Fix shared exported variables of inherited scenes ([GH-88741](https://github.com/godotengine/godot/pull/88741)). +- Add all `Viewport.debug_draw` enum options to dropdown ([GH-88755](https://github.com/godotengine/godot/pull/88755)). +- Image: Add static `is_format_compressed` function ([GH-88763](https://github.com/godotengine/godot/pull/88763)). +- Fix inefficient list iteration in Node ([GH-88785](https://github.com/godotengine/godot/pull/88785)). +- Do overflow check in when generating NoiseTexture3D ([GH-88823](https://github.com/godotengine/godot/pull/88823)). +- Add `RandomNumberGenerator::rand_weighted` method ([GH-88883](https://github.com/godotengine/godot/pull/88883)). +- Fix `RandomNumberGenerator::rand_weighted` return type ([GH-89104](https://github.com/godotengine/godot/pull/89104)). +- Add scalar versions of `Vector*` `min/max/clamp/snap(ped)` ([GH-89114](https://github.com/godotengine/godot/pull/89114)). +- Save PackedByteArrays as base64 encoded ([GH-89186](https://github.com/godotengine/godot/pull/89186)). +- Fix `String::begins_with` when both strings are empty ([GH-89194](https://github.com/godotengine/godot/pull/89194)). +- Fix sharing of typed arrays from constructor ([GH-89197](https://github.com/godotengine/godot/pull/89197)). +- Refactor OS exit code to be `EXIT_SUCCESS` by default ([GH-89229](https://github.com/godotengine/godot/pull/89229)). +- Clarify bounce and reflect docs and update param names ([GH-89404](https://github.com/godotengine/godot/pull/89404)). +- Fix error where update wouldn't reconnect the signal it should have reconnected and led to errors and crash ([GH-89447](https://github.com/godotengine/godot/pull/89447)). +- Disconnect one-shot signals before calling callbacks ([GH-89451](https://github.com/godotengine/godot/pull/89451)). +- Add output type to DAP `output` events ([GH-89475](https://github.com/godotengine/godot/pull/89475)). +- Prevent further infinite recursion when printing errors ([GH-89490](https://github.com/godotengine/godot/pull/89490)). +- Fix `rand_weighted` not using the current state ([GH-89619](https://github.com/godotengine/godot/pull/89619)). +- Fix crash on `reparent()` with Node containing internal children ([GH-89628](https://github.com/godotengine/godot/pull/89628)). +- Fix property access on read-only `Dictionary` ([GH-89647](https://github.com/godotengine/godot/pull/89647)). +- Stop possible underrun when processing a string ([GH-89671](https://github.com/godotengine/godot/pull/89671)). +- Properly skip printing version header with `--no-header` ([GH-89679](https://github.com/godotengine/godot/pull/89679)). +- Always look for unique node names in owner if not found in owned nodes ([GH-89686](https://github.com/godotengine/godot/pull/89686)). +- Fix incorrect file sort method ([GH-89857](https://github.com/godotengine/godot/pull/89857)). +- Remove a redundant `MAX` comparison within a loop in `compute_image_metrics` ([GH-89889](https://github.com/godotengine/godot/pull/89889)). +- Return `ERR_UNAVAILABLE` if native dialog is not supported ([GH-89902](https://github.com/godotengine/godot/pull/89902)). +- Fix regression when duplicating a node with a resource attached ([GH-89957](https://github.com/godotengine/godot/pull/89957)). +- Use fixed-width integer types in Variant ([GH-89984](https://github.com/godotengine/godot/pull/89984)). +- Fix `ResourceLoader.load` cache with relative paths ([GH-90038](https://github.com/godotengine/godot/pull/90038)). +- Fix some uses of `float` and `real_t` in `core/math` ([GH-90063](https://github.com/godotengine/godot/pull/90063)). +- Don't allow copying file into its own path ([GH-90069](https://github.com/godotengine/godot/pull/90069)). +- Fix load subtask not being registered leading to false progress values ([GH-90091](https://github.com/godotengine/godot/pull/90091)). +- Fix `Variant::construct` of `Object` ([GH-90134](https://github.com/godotengine/godot/pull/90134)). +- Use WorkerThreadPool for Server threads (enhanced) ([GH-90268](https://github.com/godotengine/godot/pull/90268)). +- Make InstancePlaceholders in charge of resolving node references in instances ([GH-90306](https://github.com/godotengine/godot/pull/90306)). +- IO: Fix marshall decoding when script is NIL ([GH-90335](https://github.com/godotengine/godot/pull/90335)). +- Expose `ClassDB::is_enum_bitfield` as `ClassDB::is_class_enum_bitfield` ([GH-90368](https://github.com/godotengine/godot/pull/90368)). +- Fix `ZIPReader.get_files()` error on empty zip files ([GH-90404](https://github.com/godotengine/godot/pull/90404)). +- CommandQueueMT: Fix flush re-entrancy ([GH-90470](https://github.com/godotengine/godot/pull/90470)). +- Revert pack trimming introduced by #82084 ([GH-90476](https://github.com/godotengine/godot/pull/90476)). +- Use `<type_traits>` where applicable ([GH-90540](https://github.com/godotengine/godot/pull/90540)). +- Don't print warning messages for DisplayServer functions in headless mode ([GH-90549](https://github.com/godotengine/godot/pull/90549)). +- Fix incorrect comparison for `Array` const iterator ([GH-90631](https://github.com/godotengine/godot/pull/90631)). +- Fix `Window.hide()` crash when `force_native` changes ([GH-90637](https://github.com/godotengine/godot/pull/90637)). +- Implement `Object.remove_user_signal(signal: StringName)` ([GH-90674](https://github.com/godotengine/godot/pull/90674)). +- Fix `RefCounted` handling in `marshalls.cpp` ([GH-90693](https://github.com/godotengine/godot/pull/90693)). +- Reduce and prevent unnecessary random-access to `List` ([GH-90705](https://github.com/godotengine/godot/pull/90705)). +- Fix incorrect name of internal Basis global scale getter ([GH-90748](https://github.com/godotengine/godot/pull/90748)). +- Fix binary serialization of objects in typed arrays ([GH-90751](https://github.com/godotengine/godot/pull/90751)). +- CommandQueueMT: Optimize & fix handling of sync/ret commands ([GH-90760](https://github.com/godotengine/godot/pull/90760)). +- WorkerThreadPool: Polish yielding (fix corner case, remove misleading warning) ([GH-90809](https://github.com/godotengine/godot/pull/90809)). +- WorkerThreadPool: Fix yield-over for not-yet-started tasks ([GH-90865](https://github.com/godotengine/godot/pull/90865)). +- Utilize initializer lists in Variant constructors ([GH-90866](https://github.com/godotengine/godot/pull/90866)). +- Use compatible text resource format when possible ([GH-90889](https://github.com/godotengine/godot/pull/90889)). +- Strip ANSI escape codes from file logging ([GH-90900](https://github.com/godotengine/godot/pull/90900)). +- Fix `SurfaceTool.create_from_arrays` crash with bad index ([GH-91198](https://github.com/godotengine/godot/pull/91198)). +- Use unztell64 in FileAccessZIP to ensure 64 bit return ([GH-91210](https://github.com/godotengine/godot/pull/91210)). +- Fix unsafe uses of `Callable.is_null()` ([GH-91247](https://github.com/godotengine/godot/pull/91247)). +- Add a note for `String::reverse` to warn about its implementation ([GH-91321](https://github.com/godotengine/godot/pull/91321)). +- Fix a performance regression when duplicating a node ([GH-91329](https://github.com/godotengine/godot/pull/91329)). +- Revert premul alpha to spell without the T ([GH-91399](https://github.com/godotengine/godot/pull/91399)). +- Fix crash when executing `Image.save_jpg_to_buffer` ([GH-91590](https://github.com/godotengine/godot/pull/91590)). +- Add case-insensitive `String::containsn` ([GH-91611](https://github.com/godotengine/godot/pull/91611)). +- Add `LocalVector::has` for convenience ([GH-91621](https://github.com/godotengine/godot/pull/91621)). +- Let materials' shaders update happen on loader threads ([GH-91630](https://github.com/godotengine/godot/pull/91630)). +- Fix crash when adding a child while duplicating a node ([GH-91677](https://github.com/godotengine/godot/pull/91677)). +- CommandQueueMT: Fix sync command awaiters missing the chance ([GH-91725](https://github.com/godotengine/godot/pull/91725)). +- CommandQueueMT: Pre-allocate memory to avoid a bunch of allocations at startup ([GH-91727](https://github.com/godotengine/godot/pull/91727)). +- Fix memory leak when ASTC compression fails ([GH-91745](https://github.com/godotengine/godot/pull/91745)). +- Add an identity check to resource unregistration from cache ([GH-91897](https://github.com/godotengine/godot/pull/91897)). +- Fix `DisplayServer` overrides ([GH-91900](https://github.com/godotengine/godot/pull/91900)). +- Scene: Add `SceneStringNames::pressed` ([GH-91939](https://github.com/godotengine/godot/pull/91939)). +- Scene: Add `SceneStringNames::id_pressed` ([GH-91949](https://github.com/godotengine/godot/pull/91949)). +- Scene: Add `SceneStringNames::panel` ([GH-91950](https://github.com/godotengine/godot/pull/91950)). +- Use `CoreStringNames::normal` in more places ([GH-91953](https://github.com/godotengine/godot/pull/91953)). +- Re-add Variant class initializer, fix comment ([GH-91955](https://github.com/godotengine/godot/pull/91955)). +- Scene: Add `SceneStringNames::font(_size/_color)` ([GH-92588](https://github.com/godotengine/godot/pull/92588)). +- Scene: Add `SceneStringNames::confirmed` ([GH-92639](https://github.com/godotengine/godot/pull/92639)). +- Scene: Add `SceneStringNames::text/value_changed` ([GH-92640](https://github.com/godotengine/godot/pull/92640)). +- Duplicate properties first before remapping resources ([GH-92678](https://github.com/godotengine/godot/pull/92678)). +- Fix callable not clearing freed pointer ([GH-92722](https://github.com/godotengine/godot/pull/92722)). +- Fix some incorrect uses of `String` over `StringName` ([GH-92723](https://github.com/godotengine/godot/pull/92723)). +- Release Engine before unregistering core types ([GH-92733](https://github.com/godotengine/godot/pull/92733)). +- ResourceLoader: Avoid deadlock when awaiting a loader thread that failed early ([GH-93082](https://github.com/godotengine/godot/pull/93082)). +- Remove no longer needed thread safety measures ([GH-93091](https://github.com/godotengine/godot/pull/93091)). +- ResourceLoader: Let the caller thread use its own message queue override ([GH-93124](https://github.com/godotengine/godot/pull/93124)). +- Crypto: Expose `OS.get_entropy` ([GH-93177](https://github.com/godotengine/godot/pull/93177)). +- Improve PO plural translation rules handling ([GH-93262](https://github.com/godotengine/godot/pull/93262)). +- Fix missing cleanup and null checks for various singletons ([GH-93292](https://github.com/godotengine/godot/pull/93292)). +- Fix cleanup order in `unregister_core_types()` ([GH-93293](https://github.com/godotengine/godot/pull/93293)). +- Fix typo in preprocessor symbol ([GH-93367](https://github.com/godotengine/godot/pull/93367)). +- Fix storing of Node Array properties ([GH-93430](https://github.com/godotengine/godot/pull/93430)). +- Lookup method also in base scripts of a PlaceHolderScriptInstance ([GH-93452](https://github.com/godotengine/godot/pull/93452)). +- ResourceLoader: Fix handling of uncached loads ([GH-93540](https://github.com/godotengine/godot/pull/93540)). +- Fix duplicating nodes with Array properties ([GH-93672](https://github.com/godotengine/godot/pull/93672)). +- ResourceLoader: Support polling and get-before-complete on the main thread ([GH-93695](https://github.com/godotengine/godot/pull/93695)). +- WorkerThreadPool: Fix wrong pointer used in the case of BinaryMutex ([GH-93709](https://github.com/godotengine/godot/pull/93709)). +- Improve `vformat` error reporting on `sprintf` failure ([GH-93897](https://github.com/godotengine/godot/pull/93897)). +- ResourceLoader: Fixup management of thread-specific status ([GH-93928](https://github.com/godotengine/godot/pull/93928)). +- Add a check to prevent user to call `AStarGrid2D::update` when its not needed ([GH-93993](https://github.com/godotengine/godot/pull/93993)). +- Fix UTF-8 misinterpreted as Latin-1 when logging to file ([GH-94006](https://github.com/godotengine/godot/pull/94006)). +- ResourceLoader: Fix error message due to already-awaited tasks being re-awaited ([GH-94070](https://github.com/godotengine/godot/pull/94070)). +- Optimize `Node::is_readable_from_caller_thread()` by prioritizing the most common case ([GH-94230](https://github.com/godotengine/godot/pull/94230)). +- Fix TypedArray encoding when full objects is disabled ([GH-94379](https://github.com/godotengine/godot/pull/94379)). +- Batch of fixes for WorkerThreadPool and ResourceLoader (safe set) ([GH-94526](https://github.com/godotengine/godot/pull/94526)). +- End benchmark of `Main::setup` properly before calling `setup2` ([GH-94587](https://github.com/godotengine/godot/pull/94587)). +- Apply `prefer_wayland` only if no display driver is set ([GH-94774](https://github.com/godotengine/godot/pull/94774)). +- Fix use-after-free in WorkerThreadPool ([GH-94832](https://github.com/godotengine/godot/pull/94832)). +- ResourceLoader: Let resource setup late steps invoke loading in turn ([GH-94910](https://github.com/godotengine/godot/pull/94910)). +- ResourceLoader: Add check to prevent double free crashes ([GH-95186](https://github.com/godotengine/godot/pull/95186)). +- Fix use-after-free in `FileAccess::exists` ([GH-95311](https://github.com/godotengine/godot/pull/95311)). +- ResourceLoader: Fix error on querying progress for uncached loads ([GH-95476](https://github.com/godotengine/godot/pull/95476)). #### Documentation -- Document when to use `_unhandled_key_input` over `_unhandled_input` ([GH-42100](https://github.com/godotengine/godot/pull/42100)). -- Overhaul Rect2 & Rect2i Documentation ([GH-69816](https://github.com/godotengine/godot/pull/69816)). -- Improve documentation of `nearest_po2()` ([GH-72091](https://github.com/godotengine/godot/pull/72091)). -- Improve the top docs sections of VFX classes ([GH-78865](https://github.com/godotengine/godot/pull/78865)). -- Fix a typo in the `String.to_float` description ([GH-78989](https://github.com/godotengine/godot/pull/78989)). -- Fix a typo in the TLSOptions documentation ([GH-79048](https://github.com/godotengine/godot/pull/79048)). -- Doctool: Remove version attribute from XML header ([GH-79092](https://github.com/godotengine/godot/pull/79092)). -- Fix incorrect documentation for `Engine.get_architecture_name()` ([GH-79174](https://github.com/godotengine/godot/pull/79174)). -- Fix various typos in documentation ([GH-79223](https://github.com/godotengine/godot/pull/79223)). -- Fix rigid body `contact_monitor` property description ([GH-79250](https://github.com/godotengine/godot/pull/79250)). -- Add performance note for parsing source geometry ([GH-79252](https://github.com/godotengine/godot/pull/79252)). -- Clarify return value of `get_dependencies()` ([GH-79306](https://github.com/godotengine/godot/pull/79306)). -- Clarify `EditorExportPlugin::add_file` only remaps in `_export_file` ([GH-79310](https://github.com/godotengine/godot/pull/79310)). -- Fix documentation for consistency ([GH-79353](https://github.com/godotengine/godot/pull/79353)). -- Add detail to NavigationAgent signal descriptions ([GH-79401](https://github.com/godotengine/godot/pull/79401)). -- Fill in descriptions for import options in the class reference ([GH-79405](https://github.com/godotengine/godot/pull/79405)). -- Clarify the purpose of RichTextLabel text highlight padding ([GH-79571](https://github.com/godotengine/godot/pull/79571)). -- Clarify when the `changed` signal is emitted for `Resource` and `Material` ([GH-79656](https://github.com/godotengine/godot/pull/79656)). -- Fix many typos in documentation ([GH-79661](https://github.com/godotengine/godot/pull/79661)). -- Add detail to emitting docs for particles ([GH-79720](https://github.com/godotengine/godot/pull/79720)). -- Clarify `set_multiplayer_authority` documentation regarding propagation ([GH-79764](https://github.com/godotengine/godot/pull/79764)). -- Fix some mixups between 2D/3D in documentation ([GH-79781](https://github.com/godotengine/godot/pull/79781)). -- Update outdated C# code sample in `AStarGrid2D` documentation ([GH-79794](https://github.com/godotengine/godot/pull/79794)). -- Document `linear_stiffness` in SoftBody3D ([GH-79933](https://github.com/godotengine/godot/pull/79933)). -- Add note about mouse movement input events in `MouseFilter` constants ([GH-79934](https://github.com/godotengine/godot/pull/79934)). -- Update C# example of `tween_method` with a parameter to the lambda method ([GH-79962](https://github.com/godotengine/godot/pull/79962)). -- Avoid punning `[param enabled]` in documentation ([GH-80066](https://github.com/godotengine/godot/pull/80066)). -- Fix invalid use of markdown syntax in classref ([GH-80109](https://github.com/godotengine/godot/pull/80109)). -- Overhaul bool documentation ([GH-80141](https://github.com/godotengine/godot/pull/80141)). -- Fix packet details of ENetConnection `EventType` `EVENT_RECEIVE` documentation ([GH-80182](https://github.com/godotengine/godot/pull/80182)). -- Document that `Input.is_action_*` should not be used during input-handling ([GH-80185](https://github.com/godotengine/godot/pull/80185)). -- Revert incorrect `Rect2.expand` description ([GH-80217](https://github.com/godotengine/godot/pull/80217)). -- Fix various typos in classref ([GH-80243](https://github.com/godotengine/godot/pull/80243)). -- Fix wrong example output of `float*Color` in classref ([GH-80245](https://github.com/godotengine/godot/pull/80245)). -- Clarify relationship between `basis` and `transform` properties of `Node3D` ([GH-80254](https://github.com/godotengine/godot/pull/80254)). -- Clarify `SceneTree.current_scene` functionality ([GH-80264](https://github.com/godotengine/godot/pull/80264)). -- Consistency for NodePath doc code examples ([GH-80443](https://github.com/godotengine/godot/pull/80443)). -- Document `RenderingServer.get_video_adapter_name()` may report a fixed name ([GH-80445](https://github.com/godotengine/godot/pull/80445)). -- Fixed tiny spelling error in NavigationAgent2D docs ([GH-80474](https://github.com/godotengine/godot/pull/80474)). -- Fix example for `Object._set` documentation ([GH-80475](https://github.com/godotengine/godot/pull/80475)). -- Document behavior of the `application/config/version` project setting ([GH-80511](https://github.com/godotengine/godot/pull/80511)). -- Clarify the behavior of CSGMesh using ArrayMesh ([GH-80543](https://github.com/godotengine/godot/pull/80543)). -- Change documentation spelling of macOS key 'Command' to match guidelines ([GH-80567](https://github.com/godotengine/godot/pull/80567)). -- docs: Fix link to two's complement wiki page ([GH-80608](https://github.com/godotengine/godot/pull/80608)). -- Add missing tutorials to documentation classes ([GH-80653](https://github.com/godotengine/godot/pull/80653)). -- Clarify existence of groups ([GH-80677](https://github.com/godotengine/godot/pull/80677)). -- Document `pick_random` for empty arrays ([GH-80694](https://github.com/godotengine/godot/pull/80694)). -- Fix empty XML tag doc in XMLParser.xml ([GH-80698](https://github.com/godotengine/godot/pull/80698)). -- Add missing RenderingDevice method descriptions ([GH-80716](https://github.com/godotengine/godot/pull/80716)). -- Document mouse-picking limit of 64 objects ([GH-80875](https://github.com/godotengine/godot/pull/80875)). -- Fix various typos in classref ([GH-80884](https://github.com/godotengine/godot/pull/80884)). -- Clarify Array class methods that return error ([GH-80936](https://github.com/godotengine/godot/pull/80936)). -- Rephrase ConfigFile class methods error description ([GH-80970](https://github.com/godotengine/godot/pull/80970)). -- Improve XMLParser's documentation ([GH-80997](https://github.com/godotengine/godot/pull/80997)). -- Improve Line2D documentation ([GH-81084](https://github.com/godotengine/godot/pull/81084)). -- Add a note about `SceneTree.create_tween()` method ([GH-81087](https://github.com/godotengine/godot/pull/81087)). -- Improve `MeshDataTool.get_face_vertex()` method description ([GH-81088](https://github.com/godotengine/godot/pull/81088)). -- Improve `Object.get_property_list()` method description ([GH-81093](https://github.com/godotengine/godot/pull/81093)). -- Some grammar and punctuation enhancements in the class reference ([GH-81097](https://github.com/godotengine/godot/pull/81097)). -- Grammatical improvements for the RayCast 2D and 3D class references ([GH-81132](https://github.com/godotengine/godot/pull/81132)). -- Fix typo in WebRTCPeerConnection documentation ([GH-81157](https://github.com/godotengine/godot/pull/81157)). -- Document integer scaling functionality and limitation ([GH-81176](https://github.com/godotengine/godot/pull/81176)). -- Fix typos in NavigationAgent3D documentation ([GH-81190](https://github.com/godotengine/godot/pull/81190)). -- Fix misleading description of `MeshDataTool.get_vertex()` method ([GH-81212](https://github.com/godotengine/godot/pull/81212)). -- Use `[constant]` instead of `[code]` when possible ([GH-81228](https://github.com/godotengine/godot/pull/81228)). -- Fix typos in LineEdit documentation ([GH-81232](https://github.com/godotengine/godot/pull/81232)). -- docs: Update AABB `get_support` description ([GH-81249](https://github.com/godotengine/godot/pull/81249)). -- Improve canvas layer index documentation ([GH-81270](https://github.com/godotengine/godot/pull/81270)). -- Fix unmatched brackets in the documentation ([GH-81330](https://github.com/godotengine/godot/pull/81330)). -- Fix description of dock slot usage in the documentation ([GH-81445](https://github.com/godotengine/godot/pull/81445)). -- Document ScrollContainer signals being emitted for touch events only ([GH-81517](https://github.com/godotengine/godot/pull/81517)). -- Doc: Reference String <-> PackedByteArray conversions from each other ([GH-81564](https://github.com/godotengine/godot/pull/81564)). -- Fix typos in EditorDebuggerPlugin and RDShaderSPIRV classref ([GH-81565](https://github.com/godotengine/godot/pull/81565)). -- Add an example for `Dictionary.merge()`, mention lack of recursion ([GH-81622](https://github.com/godotengine/godot/pull/81622)). -- Add missing `is_deprecated` flag on the `SurfaceTool.generate_lod` function ([GH-81634](https://github.com/godotengine/godot/pull/81634)). -- Add note about format to splash image description ([GH-81672](https://github.com/godotengine/godot/pull/81672)). -- Add missing documentation for `Skeleton3D` methods ([GH-81697](https://github.com/godotengine/godot/pull/81697)). -- Improve VisibleOnScreen classes' docs ([GH-81774](https://github.com/godotengine/godot/pull/81774)). -- Fix required parameter values for 2D textures in `RenderingDevice.texture_clear()` ([GH-81936](https://github.com/godotengine/godot/pull/81936)). -- Fix example in gravity project settings doc ([GH-81967](https://github.com/godotengine/godot/pull/81967)). -- docs: Fix incorrect GL format code for 16 bit float formats ([GH-82050](https://github.com/godotengine/godot/pull/82050)). -- Fix documentation on how to get the keycode string from a `physical_keycode` ([GH-82092](https://github.com/godotengine/godot/pull/82092)). -- Docs: Update and sync Window and DisplayServer window mode descriptions ([GH-82179](https://github.com/godotengine/godot/pull/82179)). -- Document that `resource_name` is not always supported ([GH-82406](https://github.com/godotengine/godot/pull/82406)). -- Clarify difference between surface material and surface override material ([GH-82499](https://github.com/godotengine/godot/pull/82499)). -- Fix metadata name in MovieWriter.xml ([GH-82541](https://github.com/godotengine/godot/pull/82541)). -- Improve SeparationRayShape docs ([GH-82544](https://github.com/godotengine/godot/pull/82544)). -- Fix `RefCounted.unreference()` documentation providing wrong info ([GH-82557](https://github.com/godotengine/godot/pull/82557)). -- Document `get_time_zone_from_system` will return a localized timezone name ([GH-82609](https://github.com/godotengine/godot/pull/82609)). -- Improve `NavigationAgent3D.target_position` documentation readability ([GH-82671](https://github.com/godotengine/godot/pull/82671)). -- Add docs for Node3DGizmo to clarify its link to EditorNode3DGizmo ([GH-82681](https://github.com/godotengine/godot/pull/82681)). -- Clarify `AStarGrid2D.is_in_bounds` functionality ([GH-82724](https://github.com/godotengine/godot/pull/82724)). -- Fix typos in documentation: `than/then` and `loose/lose` ([GH-82748](https://github.com/godotengine/godot/pull/82748)). -- Add a recommendation to turn on type hints with untyped declaration warning ([GH-82801](https://github.com/godotengine/godot/pull/82801)). -- Clarify `change_dir()` and access scopes ([GH-82849](https://github.com/godotengine/godot/pull/82849)). -- Specify the behavior of `get_tree()` when the node is not in the scene tree ([GH-82863](https://github.com/godotengine/godot/pull/82863)). -- Added docs for DRAW_ORDER_REVERSE_LIFETIME constant and minor XR log improvement ([GH-82866](https://github.com/godotengine/godot/pull/82866)). -- Fixed a missing word ([GH-82883](https://github.com/godotengine/godot/pull/82883)). -- Add `sdf_collision` property description to LightOccluder2D ([GH-82906](https://github.com/godotengine/godot/pull/82906)). -- Explain circular references and how to break them ([GH-82942](https://github.com/godotengine/godot/pull/82942)). -- Update `draw_polyline` documentation to clarify negative width behavior ([GH-82991](https://github.com/godotengine/godot/pull/82991)). -- Add documentation on which buttons JOY_BUTTON_START corresponds to ([GH-83013](https://github.com/godotengine/godot/pull/83013)). -- Update SpinBox documentation to include resetting to min/max behavior ([GH-83038](https://github.com/godotengine/godot/pull/83038)). -- Add semicolon to OS documentation case statement ([GH-83066](https://github.com/godotengine/godot/pull/83066)). -- Cleanup various repository documentation files ([GH-83095](https://github.com/godotengine/godot/pull/83095)). -- Make error suggestion less ambiguous ([GH-83327](https://github.com/godotengine/godot/pull/83327)). -- Document UID behavior in ResourceSaver's save function ([GH-83388](https://github.com/godotengine/godot/pull/83388)). -- Docs: Fix link to Android Gradle build tutorial ([GH-83433](https://github.com/godotengine/godot/pull/83433)). -- Document `AudioStreamGeneratorPlayback.get_skips()` ([GH-83435](https://github.com/godotengine/godot/pull/83435)). -- Fix description of `Animation::copy_track` ([GH-83441](https://github.com/godotengine/godot/pull/83441)). -- Clarify docs for operators performing `xform_inv` ([GH-83461](https://github.com/godotengine/godot/pull/83461)). -- Doc: Change return type of `_Set` method from `void` to `bool` in C# code example ([GH-83602](https://github.com/godotengine/godot/pull/83602)). -- Fix Object class C# syntax error ([GH-83609](https://github.com/godotengine/godot/pull/83609)). -- Clarify `NOTIFICATION_SCROLL_BEGIN/END` behavior ([GH-83636](https://github.com/godotengine/godot/pull/83636)). -- Fill remaining global scope constant descriptions ([GH-83652](https://github.com/godotengine/godot/pull/83652)). -- ProjectSettings: Fix description of physics jitter ([GH-83768](https://github.com/godotengine/godot/pull/83768)). -- Add C# Example to ImmediateMesh.xml ([GH-83839](https://github.com/godotengine/godot/pull/83839)). -- Improve documentation related for particle subemitters, collision and attractors ([GH-83916](https://github.com/godotengine/godot/pull/83916)). -- Fill out Material documentation and clarify `render_priority` and `next_pass` sorting ([GH-83931](https://github.com/godotengine/godot/pull/83931)). -- Fixed `window_width_override` description ([GH-84101](https://github.com/godotengine/godot/pull/84101)). -- Fix typo in ConcavePolygonShape2D/3D description ([GH-84111](https://github.com/godotengine/godot/pull/84111)). -- Add missing word in `NOTIFICATION_POST_ENTER_TREE` documentation ([GH-84224](https://github.com/godotengine/godot/pull/84224)). -- Fix documentation in MultiplayerAPIExtension ([GH-84226](https://github.com/godotengine/godot/pull/84226)). -- Add a description for the `velocity_pivot` parameter ([GH-84276](https://github.com/godotengine/godot/pull/84276)). -- Update `add_submenu_item` doc to mention that submenu should already exist ([GH-84283](https://github.com/godotengine/godot/pull/84283)). -- Clarify that `get_time_zone_from_system` will return a localized timezone name ([GH-84301](https://github.com/godotengine/godot/pull/84301)). -- Fix sentence in RandomNumberGenerator.xml ([GH-84322](https://github.com/godotengine/godot/pull/84322)). -- Update the description for the `InputEventMagnifyGesture` and `InputEventPanGesture` gestures ([GH-84408](https://github.com/godotengine/godot/pull/84408)). -- Sync changes between ShapeCast and RayCast class references ([GH-84567](https://github.com/godotengine/godot/pull/84567)). -- Resolve collisions in reference anchors added for methods ([GH-84618](https://github.com/godotengine/godot/pull/84618)). -- Add C# example for the AudioStreamGenerator code snippet ([GH-84648](https://github.com/godotengine/godot/pull/84648)). -- Remove a redundant semicolon from `max_fps` documentation ([GH-84667](https://github.com/godotengine/godot/pull/84667)). -- Clarify that `DisplayServer.window_set_*_callback` aren't supported on Window nodes ([GH-84669](https://github.com/godotengine/godot/pull/84669)). -- Fix link in the docs about ResourceImporterTextureAtlas ([GH-84698](https://github.com/godotengine/godot/pull/84698)). -- Fix a property reference in `EditorSpinSlider` documentation ([GH-84709](https://github.com/godotengine/godot/pull/84709)). -- Fix typo in `TextureServer.font_get_face_index()` description ([GH-84784](https://github.com/godotengine/godot/pull/84784)). -- Link to runtime loading/saving tutorial and improve Image documentation ([GH-84844](https://github.com/godotengine/godot/pull/84844)). -- Mark `SubViewportContainer::_propagate_input_event` experimental ([GH-84911](https://github.com/godotengine/godot/pull/84911)). -- Fix translation po file not found when `make rst LANGARG=zh_CN` ([GH-85073](https://github.com/godotengine/godot/pull/85073)). -- Enhance `SceneTree.change_scene*()` methods' docs ([GH-85279](https://github.com/godotengine/godot/pull/85279)). -- Add changelog for Godot 4.2 ([GH-85510](https://github.com/godotengine/godot/pull/85509)). +- Overhaul Node documentation ([GH-68560](https://github.com/godotengine/godot/pull/68560)). +- Tweak SceneTree Documentation ([GH-68649](https://github.com/godotengine/godot/pull/68649)). +- Overhaul Array documentation ([GH-69451](https://github.com/godotengine/godot/pull/69451)). +- Use `Signal.emit` instead of `emit_signal` in Object examples ([GH-69662](https://github.com/godotengine/godot/pull/69662)). +- Document the upsides and downsides of packed arrays versus typed arrays ([GH-78257](https://github.com/godotengine/godot/pull/78257)). +- Update typed arrays documentation ([GH-79075](https://github.com/godotengine/godot/pull/79075)). +- Clarify `Tween.set_parallel()` ([GH-79758](https://github.com/godotengine/godot/pull/79758)). +- Clarify that `Callable` will not be encoded with `var_to_bytes` ([GH-79813](https://github.com/godotengine/godot/pull/79813)). +- Clarify when to construct a StringName ahead of time ([GH-79815](https://github.com/godotengine/godot/pull/79815)). +- Explain which nodes receive `NOTIFICATION_WM_SIZE_CHANGED` ([GH-80094](https://github.com/godotengine/godot/pull/80094)). +- Fix physics server force integration docs ([GH-80166](https://github.com/godotengine/godot/pull/80166)). +- Overhaul NodePath documentation ([GH-80183](https://github.com/godotengine/godot/pull/80183)). +- Overhaul OS documentation ([GH-80282](https://github.com/godotengine/godot/pull/80282)). +- Overhaul Engine singleton documentation ([GH-80372](https://github.com/godotengine/godot/pull/80372)). +- Make RST docs consistent with Editor Help docs ([GH-80690](https://github.com/godotengine/godot/pull/80690)). +- Improve docs on how ParallaxLayer mirroring works ([GH-80896](https://github.com/godotengine/godot/pull/80896)). +- Clarify `PackedByteArray.decompress*` limitations with external data ([GH-81689](https://github.com/godotengine/godot/pull/81689)). +- Tweaks to ViewportTexture's Documentation ([GH-81864](https://github.com/godotengine/godot/pull/81864)). +- Document worker thread pool project settings and `TreeItem.uncollapse_tree()` ([GH-82376](https://github.com/godotengine/godot/pull/82376)). +- Clarify some descriptions regarding resource cache ([GH-82884](https://github.com/godotengine/godot/pull/82884)). +- Improve Node's documentation on `process_mode` related members/methods ([GH-82889](https://github.com/godotengine/godot/pull/82889)). +- Rewrite docs for physics damping project settings ([GH-82950](https://github.com/godotengine/godot/pull/82950)). +- Document Bounce = 1.0 not being sufficient for infinite energy conservation ([GH-82968](https://github.com/godotengine/godot/pull/82968)). +- Clarify that some `ParticleProcessMaterial` properties have effect over the lifetime ([GH-83606](https://github.com/godotengine/godot/pull/83606)). +- Clarify emitting behavior of GPU particles ([GH-83622](https://github.com/godotengine/godot/pull/83622)). +- Expanded documentation for vector slide and project ([GH-83691](https://github.com/godotengine/godot/pull/83691)). +- Add instructions to get shape of `RayCast2D/3D` ([GH-83735](https://github.com/godotengine/godot/pull/83735)). +- Improve and clarify texture filtering documentation ([GH-83907](https://github.com/godotengine/godot/pull/83907)). +- Clarify behavior of RayCast when `get_collision_point()` is used inside a collision shape ([GH-84085](https://github.com/godotengine/godot/pull/84085)). +- Complete the docs for Quaternion ([GH-84140](https://github.com/godotengine/godot/pull/84140)). +- Add details about `AudioEffectCapture.clear_buffer()` and `get_buffer()` ([GH-84584](https://github.com/godotengine/godot/pull/84584)). +- Avoid punning enum names in documentation ([GH-84652](https://github.com/godotengine/godot/pull/84652)). +- Clarify that `@GlobalScope.clamp` does not do component-wise clamping ([GH-84656](https://github.com/godotengine/godot/pull/84656)). +- Add performance note to `Array.resize()` ([GH-84666](https://github.com/godotengine/godot/pull/84666)). +- Add description to `AnimationNodeStateMachine.replace_node` ([GH-84734](https://github.com/godotengine/godot/pull/84734)). +- Document changing the window's resizable status at runtime ([GH-84886](https://github.com/godotengine/godot/pull/84886)). +- Update WorkerThreadPool doc to mention every task should be waited so that any allocated resources can be cleaned up ([GH-84926](https://github.com/godotengine/godot/pull/84926)). +- Fix example in `NodePath.get_name()` documentation ([GH-85240](https://github.com/godotengine/godot/pull/85240)). +- Add descriptions to all RDUniform methods ([GH-85336](https://github.com/godotengine/godot/pull/85336)). +- Improve documentation for dynamic properties ([GH-85450](https://github.com/godotengine/godot/pull/85450)). +- Clarify difference between Capture and Record audio effects ([GH-85468](https://github.com/godotengine/godot/pull/85468)). +- Fix documentation for `icon_and_font_color` editor setting ([GH-85491](https://github.com/godotengine/godot/pull/85491)). +- Fix the documentation of `Bone2D::apply_rest` ([GH-85503](https://github.com/godotengine/godot/pull/85503)). +- Improve documentation for `CameraAttributesPhysical.exposure_shutter_speed` ([GH-85599](https://github.com/godotengine/godot/pull/85599)). +- Explain parameter usage in GPUParticles3D and GPUParticles2D ([GH-85717](https://github.com/godotengine/godot/pull/85717)). +- Clarify Shapecast safe/unsafe fraction difference in class reference ([GH-85839](https://github.com/godotengine/godot/pull/85839)). +- Fix missing heading in translated online class reference ([GH-85877](https://github.com/godotengine/godot/pull/85877)). +- Document `AudioServer.playback_speed_scale` in `Engine.time_scale` ([GH-86071](https://github.com/godotengine/godot/pull/86071)). +- Update the description of the method `get_connection_list` in GraphEdit ([GH-86161](https://github.com/godotengine/godot/pull/86161)). +- Add description for rendering/limits/spatial_indexer/threaded_cull_minimum_instances ([GH-86246](https://github.com/godotengine/godot/pull/86246)). +- Add descriptions to remaining properties of RDSamplerState ([GH-86273](https://github.com/godotengine/godot/pull/86273)). +- Remove pointer to deprecated class page from Skeleton3D ([GH-86326](https://github.com/godotengine/godot/pull/86326)). +- Improve RichTextLabel `install_effect()` documentation ([GH-86331](https://github.com/godotengine/godot/pull/86331)). +- Add note that a large value for `Label.outline_size` is not recommended ([GH-86345](https://github.com/godotengine/godot/pull/86345)). +- Clarify doc: `Node.get_child` returns null for invalid index ([GH-86349](https://github.com/godotengine/godot/pull/86349)). +- Fix various typos in documentation ([GH-86549](https://github.com/godotengine/godot/pull/86549)). +- Fix several reported issues in String's documentation ([GH-86639](https://github.com/godotengine/godot/pull/86639)). +- Correct C# syntax in `_validate_property` example for the Object class ([GH-86649](https://github.com/godotengine/godot/pull/86649)). +- Add code examples to Basis' documentation ([GH-86664](https://github.com/godotengine/godot/pull/86664)). +- Link to mentioned articles in the docs instead of just naming them ([GH-86666](https://github.com/godotengine/godot/pull/86666)). +- Fix incorrect VehicleWheel3D Roll Influence description ([GH-86672](https://github.com/godotengine/godot/pull/86672)). +- Update `get_image` doc to mention that it will return an empty image with invalid texture ([GH-86685](https://github.com/godotengine/godot/pull/86685)). +- Improve all documentation about MIDI support ([GH-86693](https://github.com/godotengine/godot/pull/86693)). +- Add C# examples in `Basis.xml` ([GH-86742](https://github.com/godotengine/godot/pull/86742)). +- Fix various typos in documentation ([GH-86820](https://github.com/godotengine/godot/pull/86820)). +- Add documentation to JavaClass & JavaClassWrapper ([GH-86839](https://github.com/godotengine/godot/pull/86839)). +- Specify how CanvasTexture does not work in 3D ([GH-86848](https://github.com/godotengine/godot/pull/86848)). +- Add a few notes to Sprite3D's documentation ([GH-86872](https://github.com/godotengine/godot/pull/86872)). +- Add missing descriptions to TextServer's constants ([GH-86895](https://github.com/godotengine/godot/pull/86895)). +- Post-merge fixes to Node & OS documentation ([GH-86903](https://github.com/godotengine/godot/pull/86903)). +- Fill the documentation of a few overlooked classes ([GH-86927](https://github.com/godotengine/godot/pull/86927)). +- Add missing documentation for AudioStream & AudioStreamPlayback ([GH-86958](https://github.com/godotengine/godot/pull/86958)). +- Add class reference documentation for GDExtension & GDExtensionManager ([GH-86968](https://github.com/godotengine/godot/pull/86968)). +- Add documentation to EditorExportPlatformWeb ([GH-86977](https://github.com/godotengine/godot/pull/86977)). +- Add missing documentation to Viewport ([GH-86994](https://github.com/godotengine/godot/pull/86994)). +- Add missing descriptions for Image's documentation ([GH-86997](https://github.com/godotengine/godot/pull/86997)). +- Add missing descriptions to PrimitiveMesh and SoftBody3D ([GH-87011](https://github.com/godotengine/godot/pull/87011)). +- Add documentation to PhysicsServer2DExtension ([GH-87018](https://github.com/godotengine/godot/pull/87018)). +- Mention `CollisionPolygon2D.polygon` is local to the given CollisionPolygon2D ([GH-87024](https://github.com/godotengine/godot/pull/87024)). +- Add documentation to PhysicsDirectBodyState2DExtension ([GH-87030](https://github.com/godotengine/godot/pull/87030)). +- Add miscellaneous documentation to some classes ([GH-87042](https://github.com/godotengine/godot/pull/87042)). +- Add missing descriptions to remaining signals ([GH-87047](https://github.com/godotengine/godot/pull/87047)). +- Add descriptions to a few RenderingDevice's PipelineDynamicStateFlags ([GH-87082](https://github.com/godotengine/godot/pull/87082)). +- Overhaul AABB's documentation ([GH-87114](https://github.com/godotengine/godot/pull/87114)). +- Add descriptions to the remaining properties of RDPipelineDepthStencilState ([GH-87156](https://github.com/godotengine/godot/pull/87156)). +- Overhaul Basis' documentation ([GH-87175](https://github.com/godotengine/godot/pull/87175)). +- Include `animation.length` in Animation example ([GH-87180](https://github.com/godotengine/godot/pull/87180)). +- Overhaul Quaternion documentation ([GH-87181](https://github.com/godotengine/godot/pull/87181)). +- Replace some "uncommon" words in class reference ([GH-87223](https://github.com/godotengine/godot/pull/87223)). +- Add missing descriptions for SliderJoint3D's `param` methods ([GH-87244](https://github.com/godotengine/godot/pull/87244)). +- Add "missing description" tag to constant & enum documentation ([GH-87259](https://github.com/godotengine/godot/pull/87259)). +- Overhaul Transform3D documentation ([GH-87334](https://github.com/godotengine/godot/pull/87334)). +- Document bone list for SkeletonProfileHumanoid ([GH-87372](https://github.com/godotengine/godot/pull/87372)). +- Use latest doc version in issue template ([GH-87409](https://github.com/godotengine/godot/pull/87409)). +- Tweak Timer documentation ([GH-87436](https://github.com/godotengine/godot/pull/87436)). +- Tweak XROrigin3D documentation ([GH-87444](https://github.com/godotengine/godot/pull/87444)). +- Clarify sizing of main screen plugins ([GH-87445](https://github.com/godotengine/godot/pull/87445)). +- Tweak Joint2D and Joint3D documentation for consistency ([GH-87446](https://github.com/godotengine/godot/pull/87446)). +- Fix several minor class reference issues ([GH-87523](https://github.com/godotengine/godot/pull/87523)). +- Modify display and documentation of attenuation for Light3D ([GH-87583](https://github.com/godotengine/godot/pull/87583)). +- Mention Multiplayer.`get_remote_sender_id`'s 0 after await ([GH-87610](https://github.com/godotengine/godot/pull/87610)). +- Mention and deprecate InputEventJoypadButton's pressure ([GH-87676](https://github.com/godotengine/godot/pull/87676)). +- Add descriptions to the remaining properties of RDPipelineRasterizationState ([GH-87768](https://github.com/godotengine/godot/pull/87768)). +- Minor fix in DisplayServer docs to include Linux & Windows in `FEATURE_NATIVE_DIALOG` ([GH-87913](https://github.com/godotengine/godot/pull/87913)). +- Fix inverted link in docs ([GH-87951](https://github.com/godotengine/godot/pull/87951)). +- Remove duplicate `ARRAY_CUSTOM_RGBA8_UNORM` ref in Mesh docs ([GH-87973](https://github.com/godotengine/godot/pull/87973)). +- Document `OS.execute()` limitations on Android ([GH-87983](https://github.com/godotengine/godot/pull/87983)). +- Fix docs for Color class regarding bits per component ([GH-87985](https://github.com/godotengine/godot/pull/87985)). +- Improve documentation on Android package unique name ([GH-88024](https://github.com/godotengine/godot/pull/88024)). +- Document initial position project settings not affecting run from editor ([GH-88040](https://github.com/godotengine/godot/pull/88040)). +- Document using RichTextLabel's `meta_clicked` to handle clickable URLs ([GH-88255](https://github.com/godotengine/godot/pull/88255)). +- Fix type-o in `OpenXRAPIExtension` docs for `is_environment_blend_mode_alpha_supported()` ([GH-88298](https://github.com/godotengine/godot/pull/88298)). +- Treat deprecated/experimental members as documented ([GH-88401](https://github.com/godotengine/godot/pull/88401)). +- Update many Deprecated/Experimental descriptions for consistency ([GH-88443](https://github.com/godotengine/godot/pull/88443)). +- Fix function description for `Font.get_char_size()` ([GH-88444](https://github.com/godotengine/godot/pull/88444)). +- Fix some leftover references to `hint_albedo` in docs ([GH-88503](https://github.com/godotengine/godot/pull/88503)). +- Fix "dimensionnal" typo ([GH-88559](https://github.com/godotengine/godot/pull/88559)). +- Clarify that `is_pixel_opaque` function gets position in local coordinates ([GH-88593](https://github.com/godotengine/godot/pull/88593)). +- C#: Document that MainLoop needs to be registered in the global class ([GH-88635](https://github.com/godotengine/godot/pull/88635)). +- Add keywords to improve search in the class reference ([GH-88641](https://github.com/godotengine/godot/pull/88641)). +- Docs: Fix some experimental/deprecated hints ([GH-88708](https://github.com/godotengine/godot/pull/88708)). +- Clarify behavior of opening a new file in `FileAccess` ([GH-88758](https://github.com/godotengine/godot/pull/88758)). +- Doc: Fix GDScript casing of `String.num_scientific` ([GH-88767](https://github.com/godotengine/godot/pull/88767)). +- Document that `parse_input_event` doesn't influence the OS ([GH-88810](https://github.com/godotengine/godot/pull/88810)). +- Add necessary elaboration to documentation for `Node3D::get_parent_node_3d` ([GH-88841](https://github.com/godotengine/godot/pull/88841)). +- Explain gutter types in the TextEdit documentation ([GH-88875](https://github.com/godotengine/godot/pull/88875)). +- Clarify C# Color opacity comment ([GH-88909](https://github.com/godotengine/godot/pull/88909)). +- Doc: Fix some incorrect uses of "children" ([GH-88920](https://github.com/godotengine/godot/pull/88920)). +- RTL: Clarify that line, paragraph, and character numbers are zero-indexed ([GH-88956](https://github.com/godotengine/godot/pull/88956)). +- Doc: Clarify some details about deferred calls ([GH-88961](https://github.com/godotengine/godot/pull/88961)). +- Move `rendering/2d/snap/snap_2d_vertices_to_pixel` setting to advanced view ([GH-88963](https://github.com/godotengine/godot/pull/88963)). +- Overhaul some "uncommon" wording in class reference ([GH-89036](https://github.com/godotengine/godot/pull/89036)). +- Document environment glow restrictions in the Compatibility rendering method ([GH-89059](https://github.com/godotengine/godot/pull/89059)). +- [C#] Fix typo in `Color` documentation ([GH-89092](https://github.com/godotengine/godot/pull/89092)). +- Fix documentation of `XMLParser::get_node_name()` ([GH-89141](https://github.com/godotengine/godot/pull/89141)). +- Class reference: Improve TileMap `get_cell_atlas_coords` documentation ([GH-89146](https://github.com/godotengine/godot/pull/89146)). +- Address a few issues in Transform3D documentation ([GH-89147](https://github.com/godotengine/godot/pull/89147)). +- Update file dialog filter documentation ([GH-89150](https://github.com/godotengine/godot/pull/89150)). +- Docs: [C#] Use `PropertyName` constants in more places ([GH-89246](https://github.com/godotengine/godot/pull/89246)). +- Doc: Clarify `bsearch(_custom)` behavior ([GH-89280](https://github.com/godotengine/godot/pull/89280)). +- Reduce indentation in `XRInterface` class document example code ([GH-89282](https://github.com/godotengine/godot/pull/89282)). +- Use `[codeblock lang=text]` more often in class reference ([GH-89316](https://github.com/godotengine/godot/pull/89316)). +- Add keywords to `PhysicsBody{2D,3D}.test_move()` for easier discoverability ([GH-89318](https://github.com/godotengine/godot/pull/89318)). +- Fix RST generation for `[codeblock lang=text]` ([GH-89380](https://github.com/godotengine/godot/pull/89380)). +- Doc: Fix some incorrect uses of `a/an` ([GH-89444](https://github.com/godotengine/godot/pull/89444)). +- Doc: Clarify description for `get_unix_time_from_system` on UTC ([GH-89454](https://github.com/godotengine/godot/pull/89454)). +- Fix description of touch input position ([GH-89509](https://github.com/godotengine/godot/pull/89509)). +- Doc: Fix Parallax2D use of closer/further ([GH-89590](https://github.com/godotengine/godot/pull/89590)). +- Doc: Clarify behavior of `String.format` with keys in replacements ([GH-89608](https://github.com/godotengine/godot/pull/89608)). +- Fix documentation for receiving light from light probes ([GH-89699](https://github.com/godotengine/godot/pull/89699)). +- Doc: Fix casing of some C# names ([GH-89710](https://github.com/godotengine/godot/pull/89710)). +- Improve some notification and translation docs ([GH-89815](https://github.com/godotengine/godot/pull/89815)). +- Add reference to InputEventJoypadButton in `_shortcut_input` doc ([GH-89838](https://github.com/godotengine/godot/pull/89838)). +- Fix wrong return type mention in `AStarGrid2D` docs ([GH-89862](https://github.com/godotengine/godot/pull/89862)). +- Doc: Document loading behavior with relative paths ([GH-90039](https://github.com/godotengine/godot/pull/90039)). +- Doc: Clarify the behavior of `Vector2/3.cross` and mention parallel vectors ([GH-90072](https://github.com/godotengine/godot/pull/90072)). +- Fix small error in Variant doc ([GH-90088](https://github.com/godotengine/godot/pull/90088)). +- Doc: Improve description of `y_sort_enabled` ([GH-90096](https://github.com/godotengine/godot/pull/90096)). +- Clarify `UndoRedo` `MergeMode` and `add_*_reference` docs ([GH-90263](https://github.com/godotengine/godot/pull/90263)). +- Update the location of editor theme ([GH-90307](https://github.com/godotengine/godot/pull/90307)). +- Update links to outdated asset library demos ([GH-90310](https://github.com/godotengine/godot/pull/90310)). +- Doc: Add hint for required ios camera plugin in CameraServer documentation ([GH-90389](https://github.com/godotengine/godot/pull/90389)). +- Fix `RenderingServer.instance_set_transform` docs saying it's not global ([GH-90396](https://github.com/godotengine/godot/pull/90396)). +- Document Area3D wind properties only affecting SoftBody3D ([GH-90407](https://github.com/godotengine/godot/pull/90407)). +- Surface normals are not the same thing as collision normals for `move_and_slide()` ([GH-90460](https://github.com/godotengine/godot/pull/90460)). +- Improve `custom_minimum_size` description ([GH-90521](https://github.com/godotengine/godot/pull/90521)). +- Doc: Fix incorrect reference to `input_pickable` ([GH-90622](https://github.com/godotengine/godot/pull/90622)). +- Doc: Clarify behavior of `FileAccess.get_line` ([GH-90766](https://github.com/godotengine/godot/pull/90766)). +- Update outdated `low_processor_usage_mode` doc ([GH-90785](https://github.com/godotengine/godot/pull/90785)). +- Remove experimental flag from `remove_user_signal()` ([GH-90862](https://github.com/godotengine/godot/pull/90862)). +- Correct AnimationNode documentation where it mentions multiple inputs ([GH-90962](https://github.com/godotengine/godot/pull/90962)). +- Clarify docs for ParticleProcessMaterial `emission_box_extents` ([GH-90967](https://github.com/godotengine/godot/pull/90967)). +- Fix incorrect C# in `OS.get_cmdline_args` docs ([GH-90985](https://github.com/godotengine/godot/pull/90985)). +- Document AudioEffectSpectrumAnalyzerInstance, clarify relationship with AudioEffectSpectrumAnalyzer ([GH-91034](https://github.com/godotengine/godot/pull/91034)). +- Clarify transform inheritance of CanvasItem nodes ([GH-91110](https://github.com/godotengine/godot/pull/91110)). +- Fix syntax error in `camera_attributes_set_exposure` documentation ([GH-91129](https://github.com/godotengine/godot/pull/91129)). +- Docs: Fix FileAccess example conflicting with global scope `load` ([GH-91189](https://github.com/godotengine/godot/pull/91189)). +- Fix documentation typo that flipped the description of `window_set_max_size` and `window_set_min_size` ([GH-91234](https://github.com/godotengine/godot/pull/91234)). +- Make it clear `Node2D.look_at()` aligns the +X axis ([GH-91293](https://github.com/godotengine/godot/pull/91293)). +- Mention ProjectSettings won't be affected by `convert_text_resources_to_binary` ([GH-91300](https://github.com/godotengine/godot/pull/91300)). +- Update Variant documentation comment about `class_name` ([GH-91313](https://github.com/godotengine/godot/pull/91313)). +- Document 0, 90, 180, and 270 degree TileMap cell rotations ([GH-91330](https://github.com/godotengine/godot/pull/91330)). +- Update CryptoKey documentation to mention ECC ([GH-91348](https://github.com/godotengine/godot/pull/91348)). +- Update the description and parameter name for Vector3 reflect to correct how the plane is constructed ([GH-91376](https://github.com/godotengine/godot/pull/91376)). +- Remove text saying low processor mode only works on desktop ([GH-91393](https://github.com/godotengine/godot/pull/91393)). +- Minor `PackedScene` documentation improvements ([GH-91415](https://github.com/godotengine/godot/pull/91415)). +- Fix outdated `AudioEffectSpectrumAnalyzer` documentation ([GH-91423](https://github.com/godotengine/godot/pull/91423)). +- Fix incorrect example in the documentation for the `expand` method in `Rect2` ([GH-91446](https://github.com/godotengine/godot/pull/91446)). +- Class reference: Add self-links to methods, properties, etc ([GH-91537](https://github.com/godotengine/godot/pull/91537)). +- Add notes in Object documentation about TranslationServer methods ([GH-91544](https://github.com/godotengine/godot/pull/91544)). +- Update ResourceLoader docs to clarify behavior when no file is found during load call ([GH-91571](https://github.com/godotengine/godot/pull/91571)). +- Update `area_create` description in `PhysicsServer2D/3D` to clear up possible confusions ([GH-91581](https://github.com/godotengine/godot/pull/91581)). +- Add docs note about remap returning undefined when istart == istop ([GH-91615](https://github.com/godotengine/godot/pull/91615)). +- Add missing bone name return information ([GH-91658](https://github.com/godotengine/godot/pull/91658)). +- Doc: Update Crypto example ([GH-91761](https://github.com/godotengine/godot/pull/91761)). +- Fix a typo in the GridMap docs ([GH-91917](https://github.com/godotengine/godot/pull/91917)). +- Fix hashing context example ([GH-91920](https://github.com/godotengine/godot/pull/91920)). +- TextServer: Add notes about high level text/font classes and getting active server instance ([GH-91974](https://github.com/godotengine/godot/pull/91974)). +- Improve documentation on TreeItem's cell modes ([GH-92112](https://github.com/godotengine/godot/pull/92112)). +- Fix example for Basis * Vector3 in documentation ([GH-92117](https://github.com/godotengine/godot/pull/92117)). +- Clarify `is_polygon_clockwise()` coordinate system ([GH-92154](https://github.com/godotengine/godot/pull/92154)). +- Fix confusing descriptions of ConfirmationDialog ([GH-92242](https://github.com/godotengine/godot/pull/92242)). +- Explain `add_to_end` parameter of `add_property_editor()` ([GH-92272](https://github.com/godotengine/godot/pull/92272)). +- Clarify `velocity_computed` signal description ([GH-92293](https://github.com/godotengine/godot/pull/92293)). +- Fix outdated `vsync_mode` project setting documentation ([GH-92363](https://github.com/godotengine/godot/pull/92363)). +- Improve `Mesh` class description ([GH-92380](https://github.com/godotengine/godot/pull/92380)). +- Improve description of `find_item_by_name()` method in `MeshLibrary` class documentation ([GH-92416](https://github.com/godotengine/godot/pull/92416)). +- Fix `PhysicsMaterial` description being limited to 3D ([GH-92451](https://github.com/godotengine/godot/pull/92451)). +- Fix Light3D BakeMode enum documentation ([GH-92456](https://github.com/godotengine/godot/pull/92456)). +- RTL: Add references to cell and column configuration methods ([GH-92508](https://github.com/godotengine/godot/pull/92508)). +- Fix mismatched parentheses in class reference ([GH-92535](https://github.com/godotengine/godot/pull/92535)). +- Improve `AudioStreamPlaylist` class reference ([GH-92674](https://github.com/godotengine/godot/pull/92674)). +- Clarify the results of `VectorN.normalized()` in the docs ([GH-92707](https://github.com/godotengine/godot/pull/92707)). +- Correct documentation for Omni and Spot light distance attenuation ([GH-92716](https://github.com/godotengine/godot/pull/92716)). +- Remove note about night sky in PhysicalSkyMaterial ([GH-92758](https://github.com/godotengine/godot/pull/92758)). +- Fix description for `Input.vibrate_handheld()` ([GH-92860](https://github.com/godotengine/godot/pull/92860)). +- Update Node docs to change iOS to Android for `NOTIFICATION_WM_GO_BACK_REQUEST` ([GH-93189](https://github.com/godotengine/godot/pull/93189)). +- Doc: Clarify the session-specific nature of `RID` and `ObjectID` ([GH-93190](https://github.com/godotengine/godot/pull/93190)). +- Fix description of `Vector2/3.dot` ([GH-93195](https://github.com/godotengine/godot/pull/93195)). +- Mention inverse of hex functions in `Color` ([GH-93218](https://github.com/godotengine/godot/pull/93218)). +- Animation: Document frame duration units in `SpriteFrames` ([GH-93233](https://github.com/godotengine/godot/pull/93233)). +- Clarify lightmap rebaking being required for LightmapProbe changes ([GH-93373](https://github.com/godotengine/godot/pull/93373)). +- Change suggestion in `CONTRIBUTING.md` to avoid spam ([GH-93468](https://github.com/godotengine/godot/pull/93468)). +- Fix incorrect text in ResourceImporterWAV description ([GH-93497](https://github.com/godotengine/godot/pull/93497)). +- Change "sample" to "stream" in AudioStreamWAV documentation ([GH-93499](https://github.com/godotengine/godot/pull/93499)). +- Add "repeat" keyword alias for InputEvent "echo" in the class reference ([GH-93562](https://github.com/godotengine/godot/pull/93562)). +- Clarify word separator docs about shortcuts ([GH-93665](https://github.com/godotengine/godot/pull/93665)). +- Update note regarding 3D MSAA and foveated rendering ([GH-93685](https://github.com/godotengine/godot/pull/93685)). +- GraphEdit: Add a note about the behavior of `get_children()` ([GH-93732](https://github.com/godotengine/godot/pull/93732)). +- Fix asset pipeline coordinate systems doc url ([GH-93770](https://github.com/godotengine/godot/pull/93770)). +- Fix "icon" parameter in EditorPlugin.add_custom_type is not optional but doc says it is ([GH-93777](https://github.com/godotengine/godot/pull/93777)). +- Doc: Fix inverted Y position description of y-sorting ([GH-93804](https://github.com/godotengine/godot/pull/93804)). +- Fix info about global library in `add_animation_library` method docs ([GH-93818](https://github.com/godotengine/godot/pull/93818)). +- Update documentation for new `EditorExportPlugin` behavior ([GH-93820](https://github.com/godotengine/godot/pull/93820)). +- Fix AnimationMixer docs example code for `get_root_motion_rotation_accumulator` ([GH-93855](https://github.com/godotengine/godot/pull/93855)). +- Clarify that the `Mesh.ARRAY_NORMAL` array will normalize its contents internally ([GH-93872](https://github.com/godotengine/godot/pull/93872)). +- Add `:` to node properties, to differentiate them from node paths ([GH-93890](https://github.com/godotengine/godot/pull/93890)). +- Mention `timeout` unit in `ENetConnection::service` docs ([GH-93927](https://github.com/godotengine/godot/pull/93927)). +- Clarify `get_executable_path` documentation for Mac ([GH-93944](https://github.com/godotengine/godot/pull/93944)). +- Clarify that `ENetConnection`'s `create_host` and `service` must be called on client and server ([GH-93987](https://github.com/godotengine/godot/pull/93987)). +- Update docs for `Animation.track_set_path` and `AnimationMixer.root_motion_track` ([GH-94007](https://github.com/godotengine/godot/pull/94007)). +- Clarify that some exclude properties of physics query parameters are copied ([GH-94059](https://github.com/godotengine/godot/pull/94059)). +- Overhaul Transform2D documentation ([GH-94127](https://github.com/godotengine/godot/pull/94127)). +- Add `push_url` as a keyword for `push_meta` ([GH-94129](https://github.com/godotengine/godot/pull/94129)). +- Clarify that `Resource.duplicate(true)` doesn't duplicate subresources inside `Array` or `Dictionary` properties ([GH-94142](https://github.com/godotengine/godot/pull/94142)). +- Fix unclear `PROPERTY_USAGE_STORAGE`/`EDITOR` description ([GH-94155](https://github.com/godotengine/godot/pull/94155)). +- Docs: Add some notes about native file dialog limitations ([GH-94161](https://github.com/godotengine/godot/pull/94161)). +- Clean up RenderDataExtension's descriptions ([GH-94217](https://github.com/godotengine/godot/pull/94217)). +- Add a note of `loop_mode` for `custom_timeline` to the `NodeAnimation` docs ([GH-94299](https://github.com/godotengine/godot/pull/94299)). +- Clarify `clipboard_get_image()` ([GH-94325](https://github.com/godotengine/godot/pull/94325)). +- Some improvements to TileSetScenesCollectionSource docs ([GH-94329](https://github.com/godotengine/godot/pull/94329)). +- Clarify `is_visible_in_tree()` in CanvasItem ([GH-94331](https://github.com/godotengine/godot/pull/94331)). +- Fix typo in AABB docs ([GH-94389](https://github.com/godotengine/godot/pull/94389)). +- Fix texture compression descriptions in RenderingDevice docs ([GH-94393](https://github.com/godotengine/godot/pull/94393)). +- Add tutorial link to Parallax2D doc ([GH-94433](https://github.com/godotengine/godot/pull/94433)). +- Font: Fix typo in `get_supported_variation_list` example ([GH-94443](https://github.com/godotengine/godot/pull/94443)). +- Add note about `Script.has_source_code` and GDScript binary tokenization ([GH-94527](https://github.com/godotengine/godot/pull/94527)). +- Clarify documentation for `AnimationPlayer.queue` ([GH-94541](https://github.com/godotengine/godot/pull/94541)). +- Add note to `shadow_mesh` docs to warn about improper usage ([GH-94547](https://github.com/godotengine/godot/pull/94547)). +- Update link in CONTRIBUTING.md ([GH-94565](https://github.com/godotengine/godot/pull/94565)). +- Document update spinner never displaying with `--debug-canvas-item-redraw` ([GH-94702](https://github.com/godotengine/godot/pull/94702)). +- Add link to notification docs in SceneTree docs ([GH-94719](https://github.com/godotengine/godot/pull/94719)). +- Update documentation for places to receive InputEventShortcut ([GH-94745](https://github.com/godotengine/godot/pull/94745)). +- Fix typo in Array's `sort()` method description ([GH-94842](https://github.com/godotengine/godot/pull/94842)). +- Fix doc on Vector2.cs's `/` operator ([GH-94850](https://github.com/godotengine/godot/pull/94850)). +- Document alternatives to some static Color methods ([GH-94879](https://github.com/godotengine/godot/pull/94879)). +- Mention Multimesh custom data will be compressed to half in Compatibility ([GH-94942](https://github.com/godotengine/godot/pull/94942)). +- Fix type-o in `MobileVRInterface` sample code in docs: `xr` -> `use_xr` ([GH-94994](https://github.com/godotengine/godot/pull/94994)). +- Fix typo in EditorPlugin `_forward_3d_draw_over_viewport(overlay)` method example ([GH-94997](https://github.com/godotengine/godot/pull/94997)). +- Document support 3D premultiplied alpha in ResourceImporterTexture ([GH-95004](https://github.com/godotengine/godot/pull/95004)). +- Clean up English in JSON documentation ([GH-95041](https://github.com/godotengine/godot/pull/95041)). +- Fix several typos in the documentation ([GH-95046](https://github.com/godotengine/godot/pull/95046)). +- Document converting a TileMap node to TileMapLayer using the editor ([GH-95069](https://github.com/godotengine/godot/pull/95069)). +- Document expected coordinates in `PopupMenu.popup()` ([GH-95164](https://github.com/godotengine/godot/pull/95164)). +- Fix documentation of `EditorImportPlugin._Import` ([GH-95335](https://github.com/godotengine/godot/pull/95335)). +- Fix typo in EditorImportPlugin docs ([GH-95336](https://github.com/godotengine/godot/pull/95336)). +- Fix check in `Object._ValidateProperty` example ([GH-95341](https://github.com/godotengine/godot/pull/95341)). +- Clarify usage of CompositorEffect as an abstract base class ([GH-95347](https://github.com/godotengine/godot/pull/95347)). +- Incorrect reference to VisibleOnScreenEnabler3D/2D in VisibleOnScreenNotifier3D/2D documentation ([GH-95409](https://github.com/godotengine/godot/pull/95409)). +- Add Animation tutorial links to class reference by 4.3 ([GH-95434](https://github.com/godotengine/godot/pull/95434)). #### Editor -- Replace all flags with one value when holding Ctrl/Cmd in the layers editor ([GH-39364](https://github.com/godotengine/godot/pull/39364)). -- Improve `CodeEdit`'s toggle comments behavior ([GH-44557](https://github.com/godotengine/godot/pull/44557)). -- Document editor import options in the class reference ([GH-49524](https://github.com/godotengine/godot/pull/49524)). -- Reorganize buttons in the project manager ([GH-50674](https://github.com/godotengine/godot/pull/50674)). -- Streamline the project import workflow ([GH-51478](https://github.com/godotengine/godot/pull/51478)). -- Focus current node after connecting ([GH-54071](https://github.com/godotengine/godot/pull/54071)). -- Allow enter key to add properties to replication editor list ([GH-65558](https://github.com/godotengine/godot/pull/65558)). -- Add editor setting to toggle automatic code completion ([GH-68140](https://github.com/godotengine/godot/pull/68140)). -- Replace Ctrl in editor shortcuts with Cmd or Ctrl depending on platform ([GH-71905](https://github.com/godotengine/godot/pull/71905)). -- Overhaul the Gradient Editor ([GH-71915](https://github.com/godotengine/godot/pull/71915)). -- Don't save scripts when exiting editor ([GH-73641](https://github.com/godotengine/godot/pull/73641)). -- Fix Filter Files shortcut input is not properly handled ([GH-73981](https://github.com/godotengine/godot/pull/73981)). -- Fix conversion of hex color strings in project converter ([GH-74026](https://github.com/godotengine/godot/pull/74026)). -- Add coloring for completion of vector components ([GH-74809](https://github.com/godotengine/godot/pull/74809)). -- Expose 'Reimport' on right-click context menu in the FileSystem panel ([GH-75137](https://github.com/godotengine/godot/pull/75137)). -- Added `--gpu-index` to `forwardable_cli_arguments` ([GH-75198](https://github.com/godotengine/godot/pull/75198)). -- Enhance NodePath property editing ([GH-75274](https://github.com/godotengine/godot/pull/75274)). -- Ensure binds are duplicated with `Node` signals ([GH-75382](https://github.com/godotengine/godot/pull/75382)). -- Make `EditorInterface` accessible as a singleton ([GH-75694](https://github.com/godotengine/godot/pull/75694)). -- Apply new input validation method for Create Plugin dialog ([GH-76778](https://github.com/godotengine/godot/pull/76778)). -- Expose `save_all_scenes` method to EditorInterface ([GH-77537](https://github.com/godotengine/godot/pull/77537)). -- Increase vertical size of `CurveEdit` when `Inspector` widens ([GH-77625](https://github.com/godotengine/godot/pull/77625)). -- Allow to pick which Resources will be made unique ([GH-77855](https://github.com/godotengine/godot/pull/77855)). -- Fix batch rename for unique name and empty name ([GH-78292](https://github.com/godotengine/godot/pull/78292)). -- Change light themes default contrast from -0.08 to -0.06 ([GH-78297](https://github.com/godotengine/godot/pull/78297)). -- Auto-update properties when replacing a node ([GH-78300](https://github.com/godotengine/godot/pull/78300)). -- Only display 15 nodes in the Recent section of the Create New Node dialog ([GH-78309](https://github.com/godotengine/godot/pull/78309)). -- Fix tooltip of enum value without description ([GH-78524](https://github.com/godotengine/godot/pull/78524)). -- Speed up closing multiple scripts ([GH-78604](https://github.com/godotengine/godot/pull/78604)). -- Re-enable docs cache with fixes ([GH-78615](https://github.com/godotengine/godot/pull/78615)). -- Use bullet points in shader editor creation dialog ([GH-78631](https://github.com/godotengine/godot/pull/78631)). -- Tweak documentation to use bold font when a class is referencing itself ([GH-78649](https://github.com/godotengine/godot/pull/78649)). -- Fix indentation in script templates ([GH-78675](https://github.com/godotengine/godot/pull/78675)). -- Standardize dialog input validation as a new class ([GH-78744](https://github.com/godotengine/godot/pull/78744)). -- Sort project tags before saving ([GH-78775](https://github.com/godotengine/godot/pull/78775)). -- Project converter: Use same rendering driver as Project Manager ([GH-78795](https://github.com/godotengine/godot/pull/78795)). -- Fix drag-dropping nodes to parent with internal nodes ([GH-78816](https://github.com/godotengine/godot/pull/78816)). -- Fix history mismatch ([GH-78827](https://github.com/godotengine/godot/pull/78827)). -- Improve material and mesh preview buttons ([GH-78858](https://github.com/godotengine/godot/pull/78858)). -- Add icons for 3D texture classes ([GH-78903](https://github.com/godotengine/godot/pull/78903)). -- Fix dropping files from `res://` to `res://` ([GH-78914](https://github.com/godotengine/godot/pull/78914)). -- Do not change a node unique name to the same name ([GH-78925](https://github.com/godotengine/godot/pull/78925)). -- Translate "No match" message in FindReplaceBar ([GH-78938](https://github.com/godotengine/godot/pull/78938)). -- Windows: Always double-quote path when launching explorer.exe to browse ([GH-78963](https://github.com/godotengine/godot/pull/78963)). -- [Terminal Output] Reset text properties after `print_rich` ([GH-79017](https://github.com/godotengine/godot/pull/79017)). -- Fix missing arrows in integer vector properties ([GH-79021](https://github.com/godotengine/godot/pull/79021)). -- Optimize SVG icons and remove unused Transpose icon ([GH-79062](https://github.com/godotengine/godot/pull/79062)). -- Collapse bottom panel if there is no active tab ([GH-79078](https://github.com/godotengine/godot/pull/79078)). -- Fix `ui_cancel` action not closing `FindReplaceBar` ([GH-79079](https://github.com/godotengine/godot/pull/79079)). -- Add tooltip description wrapping in scene tree and plugin settings ([GH-79090](https://github.com/godotengine/godot/pull/79090)). -- Improve user-friendliness of project version mismatch message ([GH-79118](https://github.com/godotengine/godot/pull/79118)). -- Optimize Variant icons and a few others ([GH-79161](https://github.com/godotengine/godot/pull/79161)). -- Don't grab theme icons for scripts ([GH-79203](https://github.com/godotengine/godot/pull/79203)). -- Show only compatible nodes in 'Select a node' window ([GH-79213](https://github.com/godotengine/godot/pull/79213)). -- Assume root when dropping node to unassigned script ([GH-79258](https://github.com/godotengine/godot/pull/79258)). -- Keep `GraphNode` port icons crisp at high zoom levels and remove artifacts ([GH-79262](https://github.com/godotengine/godot/pull/79262)). -- Hide/show `AcceptDialog`'s button spacer on button visibility changed ([GH-79274](https://github.com/godotengine/godot/pull/79274)). -- Change explicit 'Godot 4.0' references to 'Godot 4' ([GH-79277](https://github.com/godotengine/godot/pull/79277)). -- Fix dragged nodes icon size ([GH-79283](https://github.com/godotengine/godot/pull/79283)). -- Improve text in popup warning, remove "upgrade or downgrade" text ([GH-79299](https://github.com/godotengine/godot/pull/79299)). -- Allow adding a custom side menu to EditorFileDialog ([GH-79313](https://github.com/godotengine/godot/pull/79313)). -- Make indentation indicators translatable ([GH-79358](https://github.com/godotengine/godot/pull/79358)). -- Improve signal callback generation ([GH-79366](https://github.com/godotengine/godot/pull/79366)). -- Add missing word to text of the alert dialog ([GH-79381](https://github.com/godotengine/godot/pull/79381)). -- Disable irrelevant scene tab context menu items ([GH-79382](https://github.com/godotengine/godot/pull/79382)). -- Don't use splash minimum display time in editor ([GH-79388](https://github.com/godotengine/godot/pull/79388)). -- Include display server type in "Copy System Info" ([GH-79396](https://github.com/godotengine/godot/pull/79396)). -- Fix rendering driver in Copy System Info for the Compatibility rendering method ([GH-79416](https://github.com/godotengine/godot/pull/79416)). -- Add icons to some placeholder classes ([GH-79431](https://github.com/godotengine/godot/pull/79431)). -- Hide explicitly specified flag value in Inspector ([GH-79457](https://github.com/godotengine/godot/pull/79457)). -- Add a shortcut to paste nodes as sibling of the selected node ([GH-79467](https://github.com/godotengine/godot/pull/79467)). -- Emit `history_changed` on merged UndoRedo actions ([GH-79484](https://github.com/godotengine/godot/pull/79484)). -- Show valid types in SceneTreeDialog ([GH-79593](https://github.com/godotengine/godot/pull/79593)). -- Fix wrong Curve connection ([GH-79609](https://github.com/godotengine/godot/pull/79609)). -- Add Ctrl+/ as a shortcut to toggle comment in addition to Ctrl+K ([GH-79610](https://github.com/godotengine/godot/pull/79610)). -- Make Help.svg not look disabled ([GH-79613](https://github.com/godotengine/godot/pull/79613)). -- Avoid duplicating the "Filters" section ([GH-79650](https://github.com/godotengine/godot/pull/79650)). -- Fix arg count checks in `SceneDebugger` ([GH-79655](https://github.com/godotengine/godot/pull/79655)). -- Add placeholder items to TileSet layer list ([GH-79676](https://github.com/godotengine/godot/pull/79676)). -- Change the text for the flat button preview to follow pattern ([GH-79734](https://github.com/godotengine/godot/pull/79734)). -- Fix typo in ResourceImporterImageFont ([GH-79736](https://github.com/godotengine/godot/pull/79736)). -- In Create New Scene dialog derive the default root node name based on `editor/naming/node_name_casing` ([GH-79756](https://github.com/godotengine/godot/pull/79756)). -- Make the single window mode check more strict ([GH-79793](https://github.com/godotengine/godot/pull/79793)). -- Make blend file importer warnings translatable ([GH-79807](https://github.com/godotengine/godot/pull/79807)). -- Fix undo methods for DELETE in EditorAutoloadSettings ([GH-79832](https://github.com/godotengine/godot/pull/79832)). -- Fix usability issues with scene tabs ([GH-79852](https://github.com/godotengine/godot/pull/79852)). -- Add tooltips to the plugin editor creation dialog ([GH-79891](https://github.com/godotengine/godot/pull/79891)). -- Fix spacing between icon and "Output" button ([GH-79908](https://github.com/godotengine/godot/pull/79908)). -- Fix crash when using "Close All Tabs" ([GH-79917](https://github.com/godotengine/godot/pull/79917)). -- Automatically add path to built-in scripts ([GH-79920](https://github.com/godotengine/godot/pull/79920)). -- Sort system font menu in Inspector ([GH-79928](https://github.com/godotengine/godot/pull/79928)). -- Fix out of bounds access when updating current scene ([GH-79945](https://github.com/godotengine/godot/pull/79945)). -- Uncollapse favorites by default in the editor FileSystem dock ([GH-79971](https://github.com/godotengine/godot/pull/79971)). -- Reverse condition for skipping directories ([GH-79984](https://github.com/godotengine/godot/pull/79984)). -- Fix escaping issues with POT generator ([GH-80058](https://github.com/godotengine/godot/pull/80058)). -- Fix API hash related crash in `EditorSettings` ([GH-80089](https://github.com/godotengine/godot/pull/80089)). -- Add UndoRedo icon ([GH-80102](https://github.com/godotengine/godot/pull/80102)). -- Add FileAccess and DirAccess icons ([GH-80103](https://github.com/godotengine/godot/pull/80103)). -- Add path to missing import texture metadata to error message ([GH-80107](https://github.com/godotengine/godot/pull/80107)). -- Add an icon to the Performance object ([GH-80113](https://github.com/godotengine/godot/pull/80113)). -- Optimize and fix up some SVGs ([GH-80119](https://github.com/godotengine/godot/pull/80119)). -- Add ShaderInclude class icon ([GH-80129](https://github.com/godotengine/godot/pull/80129)). -- Use the gray color for all abstract classes ([GH-80184](https://github.com/godotengine/godot/pull/80184)). -- Horizontal split view for Filesystem Dock ([GH-80241](https://github.com/godotengine/godot/pull/80241)). -- Fix menu items that trigger secondary interface missing ellipsis ([GH-80355](https://github.com/godotengine/godot/pull/80355)). -- Improve Signal Dock for script classes ([GH-80411](https://github.com/godotengine/godot/pull/80411)). -- Add custom color support to project folders ([GH-80440](https://github.com/godotengine/godot/pull/80440)). -- [Editor Log] Clear rich print tags only after the last line ([GH-80476](https://github.com/godotengine/godot/pull/80476)). -- Extract editor scene tabs into their own component ([GH-80490](https://github.com/godotengine/godot/pull/80490)). -- Fixes Scene corruption when child scene is renamed in another directory ([GH-80503](https://github.com/godotengine/godot/pull/80503)). -- Avoid unnecessary inspector updates when loading or switching scenes ([GH-80517](https://github.com/godotengine/godot/pull/80517)). -- Add EditorStringNames singleton ([GH-80573](https://github.com/godotengine/godot/pull/80573)). -- Add CurveXYZTexture icon ([GH-80598](https://github.com/godotengine/godot/pull/80598)). -- Fix crash on exit where `TileSet` calls destroyed `TileSetAtlasSourceEditor` ([GH-80607](https://github.com/godotengine/godot/pull/80607)). -- Fix `TileMapEditorPlugin` crash by storing tilemap ID instead of pointer ([GH-80610](https://github.com/godotengine/godot/pull/80610)). -- Add PortableCompressedTexture2D icon ([GH-80659](https://github.com/godotengine/godot/pull/80659)). -- Make the NavigationAgent3D icon more readable ([GH-80661](https://github.com/godotengine/godot/pull/80661)). -- Recurse into resources to check for changed node paths ([GH-80721](https://github.com/godotengine/godot/pull/80721)). -- Add a RegEx icon ([GH-80724](https://github.com/godotengine/godot/pull/80724)). -- Don't cache script signal descriptions ([GH-80726](https://github.com/godotengine/godot/pull/80726)). -- Disable translation of root name on scene creation ([GH-80811](https://github.com/godotengine/godot/pull/80811)). -- Avoid creating any useless undo action when dragging nodes in place ([GH-80817](https://github.com/godotengine/godot/pull/80817)). -- Unedit nodes early when closing scene tab ([GH-80849](https://github.com/godotengine/godot/pull/80849)). -- Save "Show Built-In Actions" state to project metadata ([GH-80879](https://github.com/godotengine/godot/pull/80879)). -- Differentiate between core and editor-only singletons ([GH-80962](https://github.com/godotengine/godot/pull/80962)). -- Cleanup some `GLOBAL_DEF`s ([GH-80972](https://github.com/godotengine/godot/pull/80972)). -- Add a property hint range to Auto Refresh Interval editor setting ([GH-80975](https://github.com/godotengine/godot/pull/80975)). -- Display time of last save in the unsaved changes confirmation editor dialog ([GH-80976](https://github.com/godotengine/godot/pull/80976)). -- Fix paste value emptying an array on some right click location ([GH-80977](https://github.com/godotengine/godot/pull/80977)). -- Move the new RegEx icons into their respective module ([GH-80998](https://github.com/godotengine/godot/pull/80998)). -- FileSystemDock: Don't update current path on rename when file list has focus ([GH-81007](https://github.com/godotengine/godot/pull/81007)). -- Improve warnings when running scripts in the editor ([GH-81022](https://github.com/godotengine/godot/pull/81022)). -- Properly remember custom text color in scene tree ([GH-81061](https://github.com/godotengine/godot/pull/81061)). -- Fix Quick Open not opening binary resources ([GH-81068](https://github.com/godotengine/godot/pull/81068)). -- Refactor disabling scene tab context menu options ([GH-81072](https://github.com/godotengine/godot/pull/81072)). -- Prevent creating any type of file with a leading dot ([GH-81075](https://github.com/godotengine/godot/pull/81075)). -- Signal Connection Dock improvements ([GH-81092](https://github.com/godotengine/godot/pull/81092)). -- Fix a crash when built-in script is not saved and have syntax error ([GH-81156](https://github.com/godotengine/godot/pull/81156)). -- Use `ui_text_submit` instead of `ui_accept` to confirm and close text prompts ([GH-81189](https://github.com/godotengine/godot/pull/81189)). -- Inspector and Signal docks improvements ([GH-81221](https://github.com/godotengine/godot/pull/81221)). -- Fix `EditorFileDialog` clears the file name on changing directory ([GH-81226](https://github.com/godotengine/godot/pull/81226)). -- Fix clamping logic in `EditorSpinSlider` ([GH-81278](https://github.com/godotengine/godot/pull/81278)). -- Show doc tooltips when hovering properties in the theme editor ([GH-81284](https://github.com/godotengine/godot/pull/81284)). -- Change precedence in rules to make location after proper casing ([GH-81304](https://github.com/godotengine/godot/pull/81304)). -- Fix TextFile not reloading when changed from external editors ([GH-81319](https://github.com/godotengine/godot/pull/81319)). -- Check the native base of scripts when resolving icons ([GH-81336](https://github.com/godotengine/godot/pull/81336)). -- Fix saving editor folder colors ([GH-81344](https://github.com/godotengine/godot/pull/81344)). -- Avoid text substitution in EditorHelp messages ([GH-81346](https://github.com/godotengine/godot/pull/81346)). -- Update folder colors when moving or renaming ([GH-81380](https://github.com/godotengine/godot/pull/81380)). -- Rearrange "Main Menu > Help" items ([GH-81399](https://github.com/godotengine/godot/pull/81399)). -- Remove leftover debug print in `FileSystemDock` ([GH-81407](https://github.com/godotengine/godot/pull/81407)). -- Fix property array tooltip shows wrong ID on later pages ([GH-81408](https://github.com/godotengine/godot/pull/81408)). -- Fix bugs of copying scene root node or pasting node as scene root ([GH-81415](https://github.com/godotengine/godot/pull/81415)). -- Expose `EditorInspector::get_edited_object` to GDScript ([GH-81425](https://github.com/godotengine/godot/pull/81425)). -- Fix unexpected behaviors of using Duplicate To on folders ([GH-81437](https://github.com/godotengine/godot/pull/81437)). -- Fix FindReplaceBar losing focus too early ([GH-81450](https://github.com/godotengine/godot/pull/81450)). -- Ignore empty lines when uncommenting code ([GH-81486](https://github.com/godotengine/godot/pull/81486)). -- SceneTreeDock: Avoid changing the currently edited object when attaching a script ([GH-81510](https://github.com/godotengine/godot/pull/81510)). -- Allow contextual plugins to persist temporarily ([GH-81523](https://github.com/godotengine/godot/pull/81523)). -- Improve undo action names ([GH-81569](https://github.com/godotengine/godot/pull/81569)). -- Make editor support `--fullscreen` command-line argument ([GH-81608](https://github.com/godotengine/godot/pull/81608)). -- Add XML files to default TextFile extensions in the editor ([GH-81625](https://github.com/godotengine/godot/pull/81625)). -- Avoid resetting the code completion popup excessively ([GH-81633](https://github.com/godotengine/godot/pull/81633)). -- Fix dependency handling on move or rename in the filesystem dock ([GH-81657](https://github.com/godotengine/godot/pull/81657)). -- Don't paste nodes as sibling of scene root ([GH-81673](https://github.com/godotengine/godot/pull/81673)). -- Clarify filtering by node type and group in the Scene tree dock ([GH-81675](https://github.com/godotengine/godot/pull/81675)). -- Create a field when Ctrl-dropping a resource into the code editor ([GH-81708](https://github.com/godotengine/godot/pull/81708)). -- Make LineEdit secret character easier to change and enter ([GH-81724](https://github.com/godotengine/godot/pull/81724)). -- Fix folder moving in file system dock ([GH-81725](https://github.com/godotengine/godot/pull/81725)). -- Fix internal `CONNECT_INHERITED` being saved in PackedScene & Make Local ([GH-81737](https://github.com/godotengine/godot/pull/81737)). -- Fix Connection dock's popups always allowing disconnect ([GH-81750](https://github.com/godotengine/godot/pull/81750)). -- Change icon for position key ([GH-81751](https://github.com/godotengine/godot/pull/81751)). -- Add Ctrl+P as shortcut to quick open files in addition to Shift+Alt+O ([GH-81770](https://github.com/godotengine/godot/pull/81770)). -- Make editor camera speed indicator use `m/s` and `m` ([GH-81810](https://github.com/godotengine/godot/pull/81810)). -- Fix grayed out paint icons ([GH-81813](https://github.com/godotengine/godot/pull/81813)). -- Add CanvasTexture icon ([GH-81834](https://github.com/godotengine/godot/pull/81834)). -- Make UIDs clickable in the script editor ([GH-81927](https://github.com/godotengine/godot/pull/81927)). -- Improve the Torus icons ([GH-81978](https://github.com/godotengine/godot/pull/81978)). -- While dragging files don't move not selected cursor item in filesystem-dock ([GH-82045](https://github.com/godotengine/godot/pull/82045)). -- Revamp how documentation tooltips work ([GH-82051](https://github.com/godotengine/godot/pull/82051)). -- Fix several issues with renaming in FileSystem dock ([GH-82075](https://github.com/godotengine/godot/pull/82075)). -- Fix skeleton 3d editor's toolbar ui deleted from wrong container ([GH-82131](https://github.com/godotengine/godot/pull/82131)). -- Fix leak when calling `remove_control_from_menu_panel` ([GH-82171](https://github.com/godotengine/godot/pull/82171)). -- Fix CurveEdit crash when dragging the curve if it is null ([GH-82181](https://github.com/godotengine/godot/pull/82181)). -- Add call validation to CommandPalette ([GH-82194](https://github.com/godotengine/godot/pull/82194)). -- Remove the separator from ItemList's thumbnails mode ([GH-82236](https://github.com/godotengine/godot/pull/82236)). -- Fix missing dependency warning popup ([GH-82244](https://github.com/godotengine/godot/pull/82244)). -- Fix can't unset exported typed array element when the type is set to Node ([GH-82287](https://github.com/godotengine/godot/pull/82287)). -- Fix ScriptCreateDialog not accepting on submit ([GH-82328](https://github.com/godotengine/godot/pull/82328)). -- Add error checks for DirAccess creation ([GH-82347](https://github.com/godotengine/godot/pull/82347)). -- Color match editor log toggles and flat pressed buttons ([GH-82365](https://github.com/godotengine/godot/pull/82365)). -- Fix submenus deleted accidentally ([GH-82371](https://github.com/godotengine/godot/pull/82371)). -- Fix leak when closing theme editor preview tabs ([GH-82442](https://github.com/godotengine/godot/pull/82442)). -- Make terrains peering bit property names translatable ([GH-82509](https://github.com/godotengine/godot/pull/82509)). -- Don't remove favorite files in EditorFileDialog ([GH-82537](https://github.com/godotengine/godot/pull/82537)). -- Use theme icon size when calculating category minimum size ([GH-82540](https://github.com/godotengine/godot/pull/82540)). -- Add more context to some `Window` errors ([GH-82590](https://github.com/godotengine/godot/pull/82590)). -- "Whole Words" search can detect word boundaries inside the search term ([GH-82694](https://github.com/godotengine/godot/pull/82694)). -- Search terms are now highlighted when the bar opens with a selection ([GH-82707](https://github.com/godotengine/godot/pull/82707)). -- Fix node icons appearing too big in some cases ([GH-82728](https://github.com/godotengine/godot/pull/82728)). -- Fix loading floating dock layout ([GH-82742](https://github.com/godotengine/godot/pull/82742)). -- Removes extents to size conversion ([GH-82754](https://github.com/godotengine/godot/pull/82754)). -- Fix checking the visibility condition of selected file in the Godot editor's dock ([GH-82806](https://github.com/godotengine/godot/pull/82806)). -- Fix unsaved changes not getting discarded ([GH-82847](https://github.com/godotengine/godot/pull/82847)). -- Provide translation strings for folder colors ([GH-82858](https://github.com/godotengine/godot/pull/82858)). -- Fix debugger behavior with multi-session debugging ([GH-82868](https://github.com/godotengine/godot/pull/82868)). -- Disable disconnect button for inherited signals ([GH-82875](https://github.com/godotengine/godot/pull/82875)). -- Fix garbled text in editor toasters ([GH-82913](https://github.com/godotengine/godot/pull/82913)). -- Don't apply frame delay project setting to the editor ([GH-82929](https://github.com/godotengine/godot/pull/82929)). -- Tweak metadata property tooltip to avoid being misleading ([GH-82940](https://github.com/godotengine/godot/pull/82940)). -- Fix dependency menu not showing up if scene failed to load ([GH-83024](https://github.com/godotengine/godot/pull/83024)). -- Fix `EditorFileSystemDirectory::get_file_deps()` may return wrong result ([GH-83081](https://github.com/godotengine/godot/pull/83081)). -- Fix some issues with `EditorHelpTooltip` ([GH-83094](https://github.com/godotengine/godot/pull/83094)). -- Fix highlight rect in "Whole search" being slightly offset ([GH-83101](https://github.com/godotengine/godot/pull/83101)). -- Don't auto translate theme type list ([GH-83177](https://github.com/godotengine/godot/pull/83177)). -- Project Manager: Open project when "Enter" is pressed when the search box is focused ([GH-83210](https://github.com/godotengine/godot/pull/83210)). -- Disable port name auto translation in Visual Shader editor ([GH-83233](https://github.com/godotengine/godot/pull/83233)). -- Fix saving wrong edited scene state when switching scene tabs ([GH-83251](https://github.com/godotengine/godot/pull/83251)). -- Don't try updating wrong NodePaths in resources ([GH-83263](https://github.com/godotengine/godot/pull/83263)). -- Keep focus on floating window when showing ProgressDialog ([GH-83290](https://github.com/godotengine/godot/pull/83290)). -- Fix FindReplaceBar focus problems ([GH-83335](https://github.com/godotengine/godot/pull/83335)). -- Remove toggling of unique names in subscenes ([GH-83370](https://github.com/godotengine/godot/pull/83370)). -- Fix multiple comment delimiter break toggle comment shortcut ([GH-83382](https://github.com/godotengine/godot/pull/83382)). -- Disallow 'Make Local' command on inherited nodes ([GH-83386](https://github.com/godotengine/godot/pull/83386)). -- Disable "Edit Transitions..." item if no animations are present ([GH-83402](https://github.com/godotengine/godot/pull/83402)). -- Set `icon_max_width` in the ConnectionsDock tree ([GH-83447](https://github.com/godotengine/godot/pull/83447)). -- Fix close button in FindReplaceBar ([GH-83459](https://github.com/godotengine/godot/pull/83459)). -- Prevent crash when creating custom file tooltip ([GH-83487](https://github.com/godotengine/godot/pull/83487)). -- Mesh instance UV2 unwrapping improvements ([GH-83498](https://github.com/godotengine/godot/pull/83498)). -- Fix StringName leaks in GDExtension, core, and editor themes ([GH-83562](https://github.com/godotengine/godot/pull/83562)). -- Enable new addon after hiding ProjectSettings ([GH-83576](https://github.com/godotengine/godot/pull/83576)). -- Fix ownership bugs in node copy and pasting ([GH-83596](https://github.com/godotengine/godot/pull/83596)). -- Support duplication of foreign nodes ([GH-83597](https://github.com/godotengine/godot/pull/83597)). -- Fix crash on recovered orphaned nodes ([GH-83604](https://github.com/godotengine/godot/pull/83604)). -- Fix StringName leaks in VariantParser ([GH-83619](https://github.com/godotengine/godot/pull/83619)). -- Improve threading in ClassDB and EditorHelp ([GH-83695](https://github.com/godotengine/godot/pull/83695)). -- Fix wrong shader rename in 3-to-4 project converter ([GH-83708](https://github.com/godotengine/godot/pull/83708)). -- Clamp the height of description text for property selectors ([GH-83745](https://github.com/godotengine/godot/pull/83745)). -- Fix "as" capitalization in editor strings ([GH-83815](https://github.com/godotengine/godot/pull/83815)). -- Remove margins from editor scrollbars ([GH-83868](https://github.com/godotengine/godot/pull/83868)). -- Fix potential crash on failed move ([GH-83937](https://github.com/godotengine/godot/pull/83937)). -- Use Hashset for dependency list when moving ([GH-83941](https://github.com/godotengine/godot/pull/83941)). -- Limit custom icons size in various editor widgets ([GH-84011](https://github.com/godotengine/godot/pull/84011)). -- Add read-only info to resource embedded in other scenes ([GH-84048](https://github.com/godotengine/godot/pull/84048)). -- Ignore path error for built-in scripts/shaders ([GH-84077](https://github.com/godotengine/godot/pull/84077)). -- Change dropdown type filter from Texture to Texture2D in certain nodes ([GH-84113](https://github.com/godotengine/godot/pull/84113)). -- Fix file rename crash after toggling split mode ([GH-84217](https://github.com/godotengine/godot/pull/84217)). -- Fix crash on rename collision in thumbnail grid ([GH-84218](https://github.com/godotengine/godot/pull/84218)). -- Make remote inspector groups not foldable ([GH-84257](https://github.com/godotengine/godot/pull/84257)). -- Automatically pick the Android SDK path using environment variables ([GH-84285](https://github.com/godotengine/godot/pull/84285)). -- Fix pressing save in Import Defaults not working ([GH-84291](https://github.com/godotengine/godot/pull/84291)). -- Disconnect `EditorNode` from file dialogs on destruction ([GH-84302](https://github.com/godotengine/godot/pull/84302)). -- Fix CSGShape debug_collision_shape crash ([GH-84338](https://github.com/godotengine/godot/pull/84338)). -- Polish & fix editor help cache generation ([GH-84354](https://github.com/godotengine/godot/pull/84354)). -- Fix inverted condition when unwrapping lightmap ([GH-84374](https://github.com/godotengine/godot/pull/84374)). -- Fix engine configuration icons using old convention ([GH-84404](https://github.com/godotengine/godot/pull/84404)). -- Tweak FastNoiseLite property hints for better slider usability ([GH-84494](https://github.com/godotengine/godot/pull/84494)). -- Fix pressing Enter being ignored in "Create Shader" dialog ([GH-84539](https://github.com/godotengine/godot/pull/84539)). -- Fix for stopping the Undo History being desynchronized from actual Undo queue ([GH-84557](https://github.com/godotengine/godot/pull/84557)). -- Correctly set up shortcut context in the shader editor ([GH-84614](https://github.com/godotengine/godot/pull/84614)). -- Save scene when saving built-in resource ([GH-84630](https://github.com/godotengine/godot/pull/84630)). -- Abort threaded preview generators on exit ([GH-84716](https://github.com/godotengine/godot/pull/84716)). -- Fix texture region editor not selecting restored snap mode ([GH-84762](https://github.com/godotengine/godot/pull/84762)). -- Reduced output spam from rapid property changes ([GH-84795](https://github.com/godotengine/godot/pull/84795)). -- Remove EditorFileDialog warning when skipping project directories ([GH-84797](https://github.com/godotengine/godot/pull/84797)). -- macOS: Cleanup default GL driver setting ([GH-84929](https://github.com/godotengine/godot/pull/84929)). -- Make script/shader editor save shortcuts unique again ([GH-84931](https://github.com/godotengine/godot/pull/84931)). -- Provide more context when scene fails to load ([GH-85083](https://github.com/godotengine/godot/pull/85083)). -- Add Save As... option to EditorResourcePicker ([GH-85150](https://github.com/godotengine/godot/pull/85150)). -- Avoid saving scene while already saving the scene ([GH-85154](https://github.com/godotengine/godot/pull/85154)). -- Fix project name being overwritten every time `show_dialog` is called ([GH-85169](https://github.com/godotengine/godot/pull/85169)). -- Rework the surface upgrade tool to inform users without blocking ([GH-85222](https://github.com/godotengine/godot/pull/85222)). -- Fix crash caused by conflicting menu option IDs ([GH-85227](https://github.com/godotengine/godot/pull/85227)). -- Suppress surface upgrade warnings when showing SurfaceUpgradeTool warning ([GH-85249](https://github.com/godotengine/godot/pull/85249)). -- Save and restore previous window mode when toggling full-screen ([GH-85427](https://github.com/godotengine/godot/pull/85427)). -- Disable a prohibitively slow code branch when reparenting nodes ([GH-85517](https://github.com/godotengine/godot/pull/85517)). +- Add a V-Sync editor setting ([GH-48364](https://github.com/godotengine/godot/pull/48364)). +- Automatically create folder in project manager create and import ([GH-56420](https://github.com/godotengine/godot/pull/56420)). +- Display the build date in the editor and when starting the engine ([GH-59247](https://github.com/godotengine/godot/pull/59247)). +- Implement project-wide node groups ([GH-60965](https://github.com/godotengine/godot/pull/60965)). +- Fix behavior of 'Editable Children' toggle ([GH-60974](https://github.com/godotengine/godot/pull/60974)). +- Decrease the default idle parse delay in the script editor ([GH-61814](https://github.com/godotengine/godot/pull/61814)). +- Store line change in script navigation history ([GH-63515](https://github.com/godotengine/godot/pull/63515)). +- Allow to set custom feature tags for testing ([GH-63529](https://github.com/godotengine/godot/pull/63529)). +- Add a dialog to customize run instances ([GH-65753](https://github.com/godotengine/godot/pull/65753)). +- Use `check_changed_settings_in_group()` everywhere ([GH-69032](https://github.com/godotengine/godot/pull/69032)). +- Allow easily renaming multiple nodes ([GH-69087](https://github.com/godotengine/godot/pull/69087)). +- Allow loading custom ProjectSettings instance ([GH-75048](https://github.com/godotengine/godot/pull/75048)). +- Add colored margin in Inspector for arrays and dictionaries ([GH-75482](https://github.com/godotengine/godot/pull/75482)). +- Fix missing script time for some functions in profiler ([GH-75623](https://github.com/godotengine/godot/pull/75623)). +- Add automatic checking for engine updates ([GH-75916](https://github.com/godotengine/godot/pull/75916)). +- Add tooltip plugin for AudioStream ([GH-77069](https://github.com/godotengine/godot/pull/77069)). +- Cache `TreeItem`s between runs in `EditorHelpSearch` ([GH-77471](https://github.com/godotengine/godot/pull/77471)). +- Add inheriting classes to `DocTools` ([GH-77554](https://github.com/godotengine/godot/pull/77554)). +- Add a way to invalidate preview cache ([GH-77697](https://github.com/godotengine/godot/pull/77697)). +- Fix incorrect check on importing project ([GH-77832](https://github.com/godotengine/godot/pull/77832)). +- Fix custom resource icons in FileSystem ([GH-77932](https://github.com/godotengine/godot/pull/77932)). +- Allow configuring the script filename casing rule ([GH-78119](https://github.com/godotengine/godot/pull/78119)). +- Add search keywords to the class reference ([GH-78990](https://github.com/godotengine/godot/pull/78990)). +- Enable optional minimal SteamAPI integration for usage time tracking (editor only) ([GH-79126](https://github.com/godotengine/godot/pull/79126)). +- Ignore directory entries in TPZ ([GH-79374](https://github.com/godotengine/godot/pull/79374)). +- Add size check to prevent popup bigger than the screen itself ([GH-79617](https://github.com/godotengine/godot/pull/79617)). +- Load project metadata file only when needed ([GH-79785](https://github.com/godotengine/godot/pull/79785)). +- Add a way to force history for undoredo ([GH-79796](https://github.com/godotengine/godot/pull/79796)). +- Remove exp hint of a few properties ([GH-80326](https://github.com/godotengine/godot/pull/80326)). +- Rework `update_property` for array ([GH-80706](https://github.com/godotengine/godot/pull/80706)). +- Add PhysicsMaterial icon ([GH-81044](https://github.com/godotengine/godot/pull/81044)). +- Improve "Add" button consistency in Project Settings ([GH-81905](https://github.com/godotengine/godot/pull/81905)). +- Set `open_dominant_script_on_scene_change` to off by default ([GH-81906](https://github.com/godotengine/godot/pull/81906)). +- Make the search bars in the "Project Settings" dialog grab focus when they appear ([GH-82283](https://github.com/godotengine/godot/pull/82283)). +- Add support for exporting script classes without a name ([GH-82528](https://github.com/godotengine/godot/pull/82528)). +- Fix saving branch as scene saves children without owner set ([GH-82802](https://github.com/godotengine/godot/pull/82802)). +- Allow to remove signal connections using `Delete` ([GH-82821](https://github.com/godotengine/godot/pull/82821)). +- Add context support for editor property name i18n ([GH-82852](https://github.com/godotengine/godot/pull/82852)). +- Add compatibility rename of `(v)align` properties of `Label` ([GH-82894](https://github.com/godotengine/godot/pull/82894)). +- Allow Ctrl + KP / and Ctrl + # to toggle comment in the script editor ([GH-83109](https://github.com/godotengine/godot/pull/83109)). +- (Un)Fold event categories by double click ([GH-83248](https://github.com/godotengine/godot/pull/83248)). +- Fix export variable of type Node pointing to a wrong child node when duplicating ([GH-83343](https://github.com/godotengine/godot/pull/83343)). +- Allow to load multiple animation/libraries at once in the animation manager ([GH-83503](https://github.com/godotengine/godot/pull/83503)). +- Only update `EditorSceneTabs` tabs when necessary ([GH-83957](https://github.com/godotengine/godot/pull/83957)). +- Fix UV editor not showing polygon correctly ([GH-84116](https://github.com/godotengine/godot/pull/84116)). +- Fix nodes being deselected upon reparenting ([GH-84135](https://github.com/godotengine/godot/pull/84135)). +- Extract `EditorDockManager` from `EditorNode` ([GH-84193](https://github.com/godotengine/godot/pull/84193)). +- Inspector: Fix clearing array/dictionary element with `<Object#null>` ([GH-84237](https://github.com/godotengine/godot/pull/84237)). +- Preserve inspector focus when opening script from scene tree ([GH-84284](https://github.com/godotengine/godot/pull/84284)). +- Allow dragging editable children ([GH-84310](https://github.com/godotengine/godot/pull/84310)). +- Hide private enums from documentation ([GH-84396](https://github.com/godotengine/godot/pull/84396)). +- Disable multi-window buttons instead of hiding them when support is unavailable ([GH-84515](https://github.com/godotengine/godot/pull/84515)). +- Fix errors on file rename or move in the Filesystem Dock ([GH-84520](https://github.com/godotengine/godot/pull/84520)). +- Add tooltip for toggling favorite nodes ([GH-84619](https://github.com/godotengine/godot/pull/84619)). +- Add PropertyListHelper ([GH-84635](https://github.com/godotengine/godot/pull/84635)). +- Clarify description of "group selected" ([GH-84788](https://github.com/godotengine/godot/pull/84788)). +- Fix unlimited project option ranges that could cause crashes ([GH-84800](https://github.com/godotengine/godot/pull/84800)). +- Fix folder color not showing up in file dialogs ([GH-84837](https://github.com/godotengine/godot/pull/84837)). +- Add "Show In FileSystem" to the Scene hierarchy right-click ([GH-84882](https://github.com/godotengine/godot/pull/84882)). +- Prevent race condition on initial breakpoints from DAP ([GH-84895](https://github.com/godotengine/godot/pull/84895)). +- Do not bother with line colors if `line_number_gutter` is not yet calculated ([GH-84907](https://github.com/godotengine/godot/pull/84907)). +- Improve search/replace bar behavior ([GH-84932](https://github.com/godotengine/godot/pull/84932)). +- Add an option to center children around the new parent when reparenting ([GH-84995](https://github.com/godotengine/godot/pull/84995)). +- Fix issue with 3D scene drag and drop preview node ([GH-85087](https://github.com/godotengine/godot/pull/85087)). +- Don't abort loading when `ext_resource` is missing ([GH-85159](https://github.com/godotengine/godot/pull/85159)). +- Add further details on properties returning `Packed*Array` ([GH-85207](https://github.com/godotengine/godot/pull/85207)). +- Don't insert newline while saving ([GH-85228](https://github.com/godotengine/godot/pull/85228)). +- Use the flat button style on switches in scene and node docks ([GH-85236](https://github.com/godotengine/godot/pull/85236)). +- Use `SafeNumeric` to protect `max_index` in ImportThreadData ([GH-85295](https://github.com/godotengine/godot/pull/85295)). +- Make copy & paste params skip `resource_path` ([GH-85362](https://github.com/godotengine/godot/pull/85362)). +- Improve SceneTreeEditor usability ([GH-85386](https://github.com/godotengine/godot/pull/85386)). +- Make it possible to show code hint and code completion at the same time ([GH-85436](https://github.com/godotengine/godot/pull/85436)). +- Improve Control hiding in PluginConfigDialog ([GH-85470](https://github.com/godotengine/godot/pull/85470)). +- Update NodePaths only in built-in resources ([GH-85502](https://github.com/godotengine/godot/pull/85502)). +- Expose `Node.is_part_of_edited_scene()` ([GH-85515](https://github.com/godotengine/godot/pull/85515)). +- Fix for Cmd-B shortcut conflict on macOS ([GH-85527](https://github.com/godotengine/godot/pull/85527)). +- Fix SnapGrid is almost invisible in light theme ([GH-85585](https://github.com/godotengine/godot/pull/85585)). +- Defer creating new editor process in "Quit to Project List" just like in "Reload Current Project" ([GH-85654](https://github.com/godotengine/godot/pull/85654)). +- Mark `gui/theme/custom` and `gui/theme/custom_font` as basic properties ([GH-85660](https://github.com/godotengine/godot/pull/85660)). +- Add separate feature tags for editor runtime ([GH-85678](https://github.com/godotengine/godot/pull/85678)). +- Hide Node dock successfully on undo/redo and deletion ([GH-85686](https://github.com/godotengine/godot/pull/85686)). +- Fix theme application in various editor dialogs ([GH-85745](https://github.com/godotengine/godot/pull/85745)). +- Improve engine startup/shutdown benchmarks ([GH-85885](https://github.com/godotengine/godot/pull/85885)). +- Add a editor FileSystem dock action to open a terminal in selected folder ([GH-85923](https://github.com/godotengine/godot/pull/85923)). +- Stop the searching of `find in files` in folders that have `.gdignore` ([GH-85943](https://github.com/godotengine/godot/pull/85943)). +- Tweak Help menu icons for better visibility of commonly used items ([GH-85978](https://github.com/godotengine/godot/pull/85978)). +- Disable Add button when theme item name is empty ([GH-86044](https://github.com/godotengine/godot/pull/86044)). +- Fix "Class name cannot be empty" error when sorting no import files sort by type ([GH-86064](https://github.com/godotengine/godot/pull/86064)). +- Stop using `RTR()` inside the "editor" folder ([GH-86143](https://github.com/godotengine/godot/pull/86143)). +- Properly select the newly duplicated file ([GH-86164](https://github.com/godotengine/godot/pull/86164)). +- Fix file disappearing when renaming dependencies ([GH-86177](https://github.com/godotengine/godot/pull/86177)). +- Fix duplicating multiple nodes at different depths in `SceneTreeDock` ([GH-86211](https://github.com/godotengine/godot/pull/86211)). +- Add option to add built-in strings in the POT generation ([GH-86222](https://github.com/godotengine/godot/pull/86222)). +- Use `set_value_no_signal` in editor property code ([GH-86266](https://github.com/godotengine/godot/pull/86266)). +- Allow node visibility to work with custom user-provided node types ([GH-86268](https://github.com/godotengine/godot/pull/86268)). +- Optimize scanning routines in the project manager ([GH-86271](https://github.com/godotengine/godot/pull/86271)). +- Fix scene dock search losing its default tooltip after typing an invalid filter ([GH-86278](https://github.com/godotengine/godot/pull/86278)). +- Add input action name to window title in input map editor ([GH-86280](https://github.com/godotengine/godot/pull/86280)). +- Add hover highlight to main editor buttons ([GH-86378](https://github.com/godotengine/godot/pull/86378)). +- Strip edges of editor layout names ([GH-86386](https://github.com/godotengine/godot/pull/86386)). +- Clear sub-resources list when no sub-resource exists ([GH-86388](https://github.com/godotengine/godot/pull/86388)). +- Fix internal profiling button being visible when disabled in settings ([GH-86398](https://github.com/godotengine/godot/pull/86398)). +- Improve action name for ungroup button in Scene dock ([GH-86431](https://github.com/godotengine/godot/pull/86431)). +- Improve performance of the 'Create New Node' dialog ([GH-86447](https://github.com/godotengine/godot/pull/86447)). +- Use ObjectID's instead of node pointers to track scene groups to prevent crash ([GH-86462](https://github.com/godotengine/godot/pull/86462)). +- Store horizontal and vertical split offsets separately in FileSystem dock ([GH-86476](https://github.com/godotengine/godot/pull/86476)). +- Fix scene parser reading non-built-in scripts for POT generation ([GH-86479](https://github.com/godotengine/godot/pull/86479)). +- Improve `EditorDirDialog` ([GH-86486](https://github.com/godotengine/godot/pull/86486)). +- Improve Path2D editing ([GH-86542](https://github.com/godotengine/godot/pull/86542)). +- Project upgrade tool: Better space handling in "export" ([GH-86598](https://github.com/godotengine/godot/pull/86598)). +- Don't update tree on deselect ([GH-86605](https://github.com/godotengine/godot/pull/86605)). +- Add option for editor to follow system theme and accent colors ([GH-86610](https://github.com/godotengine/godot/pull/86610)). +- Fix possible crash (use after free) in ScriptTextEditor ([GH-86633](https://github.com/godotengine/godot/pull/86633)). +- Improved synchronization of Transforms during live debug sessions ([GH-86659](https://github.com/godotengine/godot/pull/86659)). +- Automatically add path to built-in shaders ([GH-86668](https://github.com/godotengine/godot/pull/86668)). +- Stop escaping `'` on POT generation ([GH-86669](https://github.com/godotengine/godot/pull/86669)). +- Improve saving of built-in resources ([GH-86705](https://github.com/godotengine/godot/pull/86705)). +- Removed unused code related to command palette ([GH-86723](https://github.com/godotengine/godot/pull/86723)). +- Update modified shortcuts in command palette ([GH-86727](https://github.com/godotengine/godot/pull/86727)). +- Fix missing autocompletion for inheriting classes ([GH-86729](https://github.com/godotengine/godot/pull/86729)). +- Ignore internal children when replacing node ([GH-86745](https://github.com/godotengine/godot/pull/86745)). +- Add autocompletion for ProjectSettings' methods ([GH-86758](https://github.com/godotengine/godot/pull/86758)). +- Add autocompletion for InputMap's methods ([GH-86764](https://github.com/godotengine/godot/pull/86764)). +- Allow to move FileSystem dock to bottom and drag resources across bottom docks ([GH-86765](https://github.com/godotengine/godot/pull/86765)). +- Display functions that were previously forgotten in Profiler ([GH-86772](https://github.com/godotengine/godot/pull/86772)). +- Allow opening scenes with missing scene dependency ([GH-86781](https://github.com/godotengine/godot/pull/86781)). +- Allow all editor modes to select nodes in the viewport ([GH-86804](https://github.com/godotengine/godot/pull/86804)). +- Added compatibility for Blend Mode in `Light2D`/`PointLight2D` when converting from Godot 3 to 4 ([GH-86811](https://github.com/godotengine/godot/pull/86811)). +- Parse the names of children of `TabContainer`s on POT generation ([GH-86878](https://github.com/godotengine/godot/pull/86878)). +- Add autocompletion for a few EditorInterface methods ([GH-86893](https://github.com/godotengine/godot/pull/86893)). +- A couple of enhancements to user-visible threading semantics ([GH-86957](https://github.com/godotengine/godot/pull/86957)). +- Fix missing icons for custom resources in EditorResourcePicker ([GH-86979](https://github.com/godotengine/godot/pull/86979)). +- Implement `trim_final_newlines` setting and functionality ([GH-87099](https://github.com/godotengine/godot/pull/87099)). +- Capitalize OIDN in editor settings and properties ([GH-87108](https://github.com/godotengine/godot/pull/87108)). +- Fix thumbnail disappears if FileSystemDock is floated ([GH-87121](https://github.com/godotengine/godot/pull/87121)). +- Fix icon corrupted when nested array editors are opened before opening main array editor ([GH-87143](https://github.com/godotengine/godot/pull/87143)). +- Fix reloading current scene forgetting path ([GH-87170](https://github.com/godotengine/godot/pull/87170)). +- Add tooltips to the export buttons ([GH-87183](https://github.com/godotengine/godot/pull/87183)). +- Add autocompletion for TranslationServer ([GH-87191](https://github.com/godotengine/godot/pull/87191)). +- Optimize SceneTree's `change_scene_to_file` autocompletion ([GH-87197](https://github.com/godotengine/godot/pull/87197)). +- Add support for search shortcut to all docks ([GH-87200](https://github.com/godotengine/godot/pull/87200)). +- Handle clickable `[url]` tags in `print_rich()` editor output log ([GH-87216](https://github.com/godotengine/godot/pull/87216)). +- Add color in built-in documentation for overridden properties ([GH-87255](https://github.com/godotengine/godot/pull/87255)). +- Reorganize project manager code ([GH-87266](https://github.com/godotengine/godot/pull/87266)). +- Display path in tooltips of sub-resource list ([GH-87280](https://github.com/godotengine/godot/pull/87280)). +- Improve editor theme generation after the refactor ([GH-87293](https://github.com/godotengine/godot/pull/87293)). +- Replace built-in docs codeblock's leading spaces with tabs ([GH-87301](https://github.com/godotengine/godot/pull/87301)). +- Add copy codeblock button to built-in documentation ([GH-87363](https://github.com/godotengine/godot/pull/87363)). +- Fix shortcut name consistency in SceneTreeDock ([GH-87419](https://github.com/godotengine/godot/pull/87419)). +- Improve layout and UX of the project manager ([GH-87443](https://github.com/godotengine/godot/pull/87443)). +- Fix selection regression in `EditorHelpSearch` ([GH-87476](https://github.com/godotengine/godot/pull/87476)). +- Make the text editor consistent with the script editor ([GH-87510](https://github.com/godotengine/godot/pull/87510)). +- Remove incorrect C# rename from the project converter ([GH-87533](https://github.com/godotengine/godot/pull/87533)). +- Improve appearance of Node configuration warnings ([GH-87535](https://github.com/godotengine/godot/pull/87535)). +- Fix editor will freeze when modifying filesystem filter path in Split Mode ([GH-87563](https://github.com/godotengine/godot/pull/87563)). +- Change scene drag-and-drop modifier behavior in the 2D and 3D editors ([GH-87623](https://github.com/godotengine/godot/pull/87623)). +- Generate script resource preview without parsing ([GH-87625](https://github.com/godotengine/godot/pull/87625)). +- Fix editor profiler script function sort order ([GH-87661](https://github.com/godotengine/godot/pull/87661)). +- Fix editor properties vector ratio breaking when an element is set to zero ([GH-87740](https://github.com/godotengine/godot/pull/87740)). +- Some editor code cleanup ([GH-87755](https://github.com/godotengine/godot/pull/87755)). +- Extract BottomPanel from EditorNode ([GH-87760](https://github.com/godotengine/godot/pull/87760)). +- Remove duplicated callings `set()` from SceneTreeDock ([GH-87834](https://github.com/godotengine/godot/pull/87834)). +- Remove unnecessary focus methods and directly bind to `set_close_on_escape` ([GH-87870](https://github.com/godotengine/godot/pull/87870)). +- Fix sorting of files/dirs in dialogs ([GH-87874](https://github.com/godotengine/godot/pull/87874)). +- Fix frame number underflow in visual profiler ([GH-87876](https://github.com/godotengine/godot/pull/87876)). +- Do not use `NOTIFICATION_PHYSICS_PROCESS` for 2D Editor ([GH-87886](https://github.com/godotengine/godot/pull/87886)). +- Fix `display/window/size/window_{width,height}_override` to permit `0` ([GH-87907](https://github.com/godotengine/godot/pull/87907)). +- Check if history exists before discarding ([GH-87980](https://github.com/godotengine/godot/pull/87980)). +- Refactor and fix issues in Editor Dock Manager ([GH-88003](https://github.com/godotengine/godot/pull/88003)). +- Tweak error and warning colors and fix `StatusWarning` icon visibility on light themes ([GH-88058](https://github.com/godotengine/godot/pull/88058)). +- Web: Refactor Editor web server ([GH-88063](https://github.com/godotengine/godot/pull/88063)). +- Add editor shortcuts to toggle bottom panel visibility ([GH-88081](https://github.com/godotengine/godot/pull/88081)). +- Use indeterminate progressbars for editor downloads (export templates & assets) ([GH-88084](https://github.com/godotengine/godot/pull/88084)). +- Show update spinner by default in `dev_build=yes` editor builds ([GH-88106](https://github.com/godotengine/godot/pull/88106)). +- Fix data race against `EditorFileSystem.scanning_changes_done` ([GH-88124](https://github.com/godotengine/godot/pull/88124)). +- Use `SafeFlag` for `EditorHTTPServer.server_quit` ([GH-88155](https://github.com/godotengine/godot/pull/88155)). +- Use highlighted version of the tab icon in the bottom file system dock ([GH-88191](https://github.com/godotengine/godot/pull/88191)). +- Asset Library author link, description popup size and UX details ([GH-88229](https://github.com/godotengine/godot/pull/88229)). +- Fix update property for dictionaries so that it updates only what is necessary ([GH-88231](https://github.com/godotengine/godot/pull/88231)). +- Fix an edge case bug in drag-and-drop Node3D spawning ([GH-88269](https://github.com/godotengine/godot/pull/88269)). +- Rework how script is edited when clicking icon ([GH-88288](https://github.com/godotengine/godot/pull/88288)). +- Add support for search shortcut to signal connection dialog ([GH-88317](https://github.com/godotengine/godot/pull/88317)). +- Fix skipping normal category followed by custom one ([GH-88318](https://github.com/godotengine/godot/pull/88318)). +- Focus value editor on type change in Dictionary and Array editors ([GH-88322](https://github.com/godotengine/godot/pull/88322)). +- Add const lvalue ref to `editor/*` container parameters ([GH-88368](https://github.com/godotengine/godot/pull/88368)). +- Improve look of Donors list in Editor's About ([GH-88370](https://github.com/godotengine/godot/pull/88370)). +- Move EditorNode setting registration so they are in class reference ([GH-88380](https://github.com/godotengine/godot/pull/88380)). +- Fix Skeleton3D insert key tooltips ([GH-88386](https://github.com/godotengine/godot/pull/88386)). +- Fix resource previews not created in compatibility rendering ([GH-88391](https://github.com/godotengine/godot/pull/88391)). +- Show keywords in `EditorHelpSearch` ([GH-88450](https://github.com/godotengine/godot/pull/88450)). +- Hide Search Results by default and show it on first search ([GH-88465](https://github.com/godotengine/godot/pull/88465)). +- Improve merging of docs on generation ([GH-88514](https://github.com/godotengine/godot/pull/88514)). +- Add separate program case for Godot Resources ([GH-88523](https://github.com/godotengine/godot/pull/88523)). +- Fix crash on documentation generation on macOS ([GH-88545](https://github.com/godotengine/godot/pull/88545)). +- Fix crash on changing resource type of dictionary new key/value while editing the resource ([GH-88572](https://github.com/godotengine/godot/pull/88572)). +- Add `android` to auto-generated `.gitignore` ([GH-88591](https://github.com/godotengine/godot/pull/88591)). +- Remove error when property is outside inspector ([GH-88597](https://github.com/godotengine/godot/pull/88597)). +- Improve user experience for VCS metadata generator menu button to mitigate accidentally overriding ([GH-88609](https://github.com/godotengine/godot/pull/88609)). +- Add a `h_separation` between icons in `CheckButton`/`CheckBox` ([GH-88615](https://github.com/godotengine/godot/pull/88615)). +- Dictionary Editor: Keep the type of the last added item ([GH-88636](https://github.com/godotengine/godot/pull/88636)). +- Fix editor hover style margins when Draw Extra Borders is enabled ([GH-88652](https://github.com/godotengine/godot/pull/88652)). +- Add tokenized search support to Quick Open dialog and FileSystem filter ([GH-88660](https://github.com/godotengine/godot/pull/88660)). +- Remove some redundant method calls from ScriptEditor ([GH-88675](https://github.com/godotengine/godot/pull/88675)). +- Improve Run Instances Dialog ([GH-88685](https://github.com/godotengine/godot/pull/88685)). +- Fix undo/redo behavior of ColorPicker and add ability to cancel/confirm color selection ([GH-88690](https://github.com/godotengine/godot/pull/88690)). +- Fix leak of scene used for customization during export ([GH-88726](https://github.com/godotengine/godot/pull/88726)). +- Fix removing element in array inspector not changing page when emptying page ([GH-88731](https://github.com/godotengine/godot/pull/88731)). +- Fix the text editor theme not being applied on editor start ([GH-88742](https://github.com/godotengine/godot/pull/88742)). +- Inspector `(N changes)` indicator propagates upwards ([GH-88814](https://github.com/godotengine/godot/pull/88814)). +- Fix toggling a plugin makes its name black ([GH-88817](https://github.com/godotengine/godot/pull/88817)). +- Add create folder icon ([GH-88825](https://github.com/godotengine/godot/pull/88825)). +- Add browse folder and browse file icons ([GH-88827](https://github.com/godotengine/godot/pull/88827)). +- Save scene and global checkbox options of History window ([GH-88833](https://github.com/godotengine/godot/pull/88833)). +- Fix paste Value can empty a dictionary depending on right-click location ([GH-88849](https://github.com/godotengine/godot/pull/88849)). +- Remove redundant space after enum/flags word in editor docs ([GH-88911](https://github.com/godotengine/godot/pull/88911)). +- Modify shortcut for closing scene on macOS only ([GH-88913](https://github.com/godotengine/godot/pull/88913)). +- Allow docks to be closed and opened ([GH-89017](https://github.com/godotengine/godot/pull/89017)). +- Add autocompletion for EditorSettings' methods ([GH-89043](https://github.com/godotengine/godot/pull/89043)). +- Use `META_UNDERLINE_ON_HOVER` in built-in class reference ([GH-89049](https://github.com/godotengine/godot/pull/89049)). +- Display deprecated/experimental messages in tooltips ([GH-89058](https://github.com/godotengine/godot/pull/89058)). +- Remember search text in Find/Replace in Files dialog ([GH-89085](https://github.com/godotengine/godot/pull/89085)). +- Improve how Project & Editor Settings look in built-in docs ([GH-89086](https://github.com/godotengine/godot/pull/89086)). +- Do not attempt to set cursor shape in headless mode ([GH-89099](https://github.com/godotengine/godot/pull/89099)). +- Add missing `variablesReference` field to DAP `evaluate` request ([GH-89110](https://github.com/godotengine/godot/pull/89110)). +- Fix undo action names for node replacement ([GH-89121](https://github.com/godotengine/godot/pull/89121)). +- Fix documentation of localization related editor settings ([GH-89135](https://github.com/godotengine/godot/pull/89135)). +- Change Editable Children menu action to be keyboard shortcuttable ([GH-89142](https://github.com/godotengine/godot/pull/89142)). +- Add Enter shortcut to add a shader global in the editor ([GH-89184](https://github.com/godotengine/godot/pull/89184)). +- Fix AssetLibrary not going online when clicking button ([GH-89200](https://github.com/godotengine/godot/pull/89200)). +- Fix wrong undo-redo action when dropping files containing circular dependencies ([GH-89204](https://github.com/godotengine/godot/pull/89204)). +- Don't refresh mirrors for development builds in editor export template manager ([GH-89236](https://github.com/godotengine/godot/pull/89236)). +- Add `FolderCreate` icon to the project dialog ([GH-89240](https://github.com/godotengine/godot/pull/89240)). +- Fix region section not ignoring #region and #endregion when in a string ([GH-89242](https://github.com/godotengine/godot/pull/89242)). +- Don't store values when loading them ([GH-89248](https://github.com/godotengine/godot/pull/89248)). +- Allow connecting signals to existing methods without opening the script editor ([GH-89249](https://github.com/godotengine/godot/pull/89249)). +- Speed up inspector updates for TileMap ([GH-89251](https://github.com/godotengine/godot/pull/89251)). +- Add missing normal and hover states to `EditorLogFilterButton` ([GH-89255](https://github.com/godotengine/godot/pull/89255)). +- Fix how scripts reload outside of ScriptEditor ([GH-89261](https://github.com/godotengine/godot/pull/89261)). +- Editor Help: Add syntax highlighting for code blocks ([GH-89263](https://github.com/godotengine/godot/pull/89263)). +- Move `snap_controls_to_pixels` from process to projects settings changed method ([GH-89264](https://github.com/godotengine/godot/pull/89264)). +- Fix possible crash when converting a node to other in visual shader ([GH-89292](https://github.com/godotengine/godot/pull/89292)). +- Fix ScriptCreateDialog so it does not select the file extension when it's opened ([GH-89315](https://github.com/godotengine/godot/pull/89315)). +- Fix compiler warning when highlighting codeblocks in editor help ([GH-89332](https://github.com/godotengine/godot/pull/89332)). +- Defer `ActionMapEditor::_action_edited` signal to prevent tree updates when tree is blocked ([GH-89346](https://github.com/godotengine/godot/pull/89346)). +- Fix PluginConfigDialog crash in editor build without any language support ([GH-89378](https://github.com/godotengine/godot/pull/89378)). +- Select method name edit when opening connection dialog ([GH-89405](https://github.com/godotengine/godot/pull/89405)). +- Allow batch drag and drop in typed array of Node and NodePath ([GH-89406](https://github.com/godotengine/godot/pull/89406)). +- Fix main editor button margins while using a custom theme ([GH-89462](https://github.com/godotengine/godot/pull/89462)). +- Fix some translations not properly falling back ([GH-89489](https://github.com/godotengine/godot/pull/89489)). +- Make the "Clear Output" shortcut not require panel focus ([GH-89505](https://github.com/godotengine/godot/pull/89505)). +- Remove redundant code from `EditorSpinSlider` ([GH-89518](https://github.com/godotengine/godot/pull/89518)). +- Fix translation fallback not working in the Project Manager ([GH-89519](https://github.com/godotengine/godot/pull/89519)). +- Fix FileSystem dock auto translating files ([GH-89546](https://github.com/godotengine/godot/pull/89546)). +- Fix unexpected auto translation of editor `Tree` content ([GH-89599](https://github.com/godotengine/godot/pull/89599)). +- Make "Pick Color"'s result less precise, keep only 3 decimals ([GH-89630](https://github.com/godotengine/godot/pull/89630)). +- Fix same-name (sub)groups interfering in Inspector ([GH-89631](https://github.com/godotengine/godot/pull/89631)). +- Resource file not found error when loading Favorite icon ([GH-89642](https://github.com/godotengine/godot/pull/89642)). +- Add `Open in Terminal` to the file system empty click ([GH-89658](https://github.com/godotengine/godot/pull/89658)). +- Fix text color in `EditorHelpHighlighter` ([GH-89704](https://github.com/godotengine/godot/pull/89704)). +- Add progress bar when updating scene groups ([GH-89739](https://github.com/godotengine/godot/pull/89739)). +- Remove stray item icon from tabs menu ([GH-89747](https://github.com/godotengine/godot/pull/89747)). +- Make project naming setting available in project manager ([GH-89788](https://github.com/godotengine/godot/pull/89788)). +- Disable Clear All button when not filtering in Settings ([GH-89798](https://github.com/godotengine/godot/pull/89798)). +- Translate "Line N" as a whole ([GH-89799](https://github.com/godotengine/godot/pull/89799)). +- Fix heap-use-after-free when converting scene group to global ([GH-89801](https://github.com/godotengine/godot/pull/89801)). +- Add necessary flags when opening directory with xfce4-terminal ([GH-89803](https://github.com/godotengine/godot/pull/89803)). +- Disable shader editor's undo/redo menu items when they do nothing ([GH-89806](https://github.com/godotengine/godot/pull/89806)). +- Don't error multiple times when trying to load missing default bus layout ([GH-89808](https://github.com/godotengine/godot/pull/89808)). +- Fix missing i18n for some editor strings ([GH-89811](https://github.com/godotengine/godot/pull/89811)). +- macOS: Use `expand_to_title` for the project manager ([GH-89831](https://github.com/godotengine/godot/pull/89831)). +- Extremely minor tooltip updates for Debug menu ([GH-89837](https://github.com/godotengine/godot/pull/89837)). +- Fix wrong values displayed after duplicating an audio bus ([GH-89841](https://github.com/godotengine/godot/pull/89841)). +- Improve replication editor's pin button ([GH-89883](https://github.com/godotengine/godot/pull/89883)). +- Fix wrong extension filter for dependency editor ([GH-89912](https://github.com/godotengine/godot/pull/89912)). +- Disable auto-translation in sub-resource list menu ([GH-89915](https://github.com/godotengine/godot/pull/89915)). +- Refactor check for overridden methods in inner classes ([GH-89922](https://github.com/godotengine/godot/pull/89922)). +- Relax grid parameter constraints in texture region editor ([GH-89931](https://github.com/godotengine/godot/pull/89931)). +- Fix unexpected auto-translation of more editor components ([GH-89963](https://github.com/godotengine/godot/pull/89963)). +- Reset `tab_closing_menu_option` when canceling closing editor ([GH-89974](https://github.com/godotengine/godot/pull/89974)). +- Disable auto-translation of titles in `AssetLib` ([GH-89978](https://github.com/godotengine/godot/pull/89978)). +- Fix node duplication in update after external changes ([GH-89992](https://github.com/godotengine/godot/pull/89992)). +- Fix debugger tree error on editor start ([GH-90022](https://github.com/godotengine/godot/pull/90022)). +- Fix scroll to description ([GH-90035](https://github.com/godotengine/godot/pull/90035)). +- Fix FileSystemDock behavior when dropping an item in the current folder ([GH-90062](https://github.com/godotengine/godot/pull/90062)). +- Include 'Orphan Resource Explorer' and 'Upgrade Mesh Surfaces' in Command Palette ([GH-90078](https://github.com/godotengine/godot/pull/90078)). +- [Project Manager] Replace title bar logo with color variant ([GH-90080](https://github.com/godotengine/godot/pull/90080)). +- Improve string extraction of ETR POT file ([GH-90162](https://github.com/godotengine/godot/pull/90162)). +- Expose `goto_help` for GDExtension on `ScriptEditor` ([GH-90189](https://github.com/godotengine/godot/pull/90189)). +- Fix crash on invalid values in EditorPropertyArray/Dict ([GH-90265](https://github.com/godotengine/godot/pull/90265)). +- SceneTreeEditor: Fix crash when TreeItem is removed before callback ([GH-90266](https://github.com/godotengine/godot/pull/90266)). +- Ignore `ERR_FILE_CANT_OPEN` error when loading ([GH-90269](https://github.com/godotengine/godot/pull/90269)). +- Prevent dropping Resource to the same resource picker ([GH-90278](https://github.com/godotengine/godot/pull/90278)). +- Fix duplicated folder reference in Godot Editor after changing filename case ([GH-90280](https://github.com/godotengine/godot/pull/90280)). +- Inspect hovered node while dragging ([GH-90378](https://github.com/godotengine/godot/pull/90378)). +- Fix `_node_assign` will crash when `base_node` is nullptr ([GH-90414](https://github.com/godotengine/godot/pull/90414)). +- Add option to copy absolute path in file system dock popup ([GH-90421](https://github.com/godotengine/godot/pull/90421)). +- Correctly replace scene root when `must_reload` in `EditorData::check_and_update_scene()` ([GH-90432](https://github.com/godotengine/godot/pull/90432)). +- Move engine build profile editor to Tools submenu ([GH-90441](https://github.com/godotengine/godot/pull/90441)). +- Fix `theme_override` tooltip caching ([GH-90446](https://github.com/godotengine/godot/pull/90446)). +- Fix caret last fit when moving to line end ([GH-90455](https://github.com/godotengine/godot/pull/90455)). +- Fix enum detection for unnamed classes ([GH-90488](https://github.com/godotengine/godot/pull/90488)). +- Fix connection dialog raise error when it was previously opened in another scene ([GH-90514](https://github.com/godotengine/godot/pull/90514)). +- Fix folder colors not saving after project.godot is modified externally ([GH-90525](https://github.com/godotengine/godot/pull/90525)). +- Make the inherited scene root node unable to change type ([GH-90536](https://github.com/godotengine/godot/pull/90536)). +- Fix crash when dragging scene files to 2D/3D screen ([GH-90559](https://github.com/godotengine/godot/pull/90559)). +- Make the loading scene open in the current scene tab if the current scene is empty ([GH-90566](https://github.com/godotengine/godot/pull/90566)). +- Rearrange "Open In" menu items of FileSystem dock ([GH-90570](https://github.com/godotengine/godot/pull/90570)). +- Improve error when scene/resource is saved with newer format ([GH-90571](https://github.com/godotengine/godot/pull/90571)). +- Fix heap-use-after-free error in TileMapLayerEditor ([GH-90583](https://github.com/godotengine/godot/pull/90583)). +- Fix folder colors not present in editor dir dialog ([GH-90651](https://github.com/godotengine/godot/pull/90651)). +- Fix going forward backward in editor selection history ([GH-90653](https://github.com/godotengine/godot/pull/90653)). +- Improve UX when saving newer files on disk ([GH-90660](https://github.com/godotengine/godot/pull/90660)). +- Prevent crash when dropping Resource that can't load ([GH-90664](https://github.com/godotengine/godot/pull/90664)). +- Rename Q&A to Forum in the Help top bar ([GH-90676](https://github.com/godotengine/godot/pull/90676)). +- Fix editor's file explorer will show directories that should be skipped ([GH-90680](https://github.com/godotengine/godot/pull/90680)). +- Allow closing scene tab preview using Escape ([GH-90720](https://github.com/godotengine/godot/pull/90720)). +- Change update checker version source ([GH-90742](https://github.com/godotengine/godot/pull/90742)). +- Display Godot version and last edited timestamp in project manager ([GH-90770](https://github.com/godotengine/godot/pull/90770)). +- Don't show scene group progress for 1 scene ([GH-90784](https://github.com/godotengine/godot/pull/90784)). +- Disable Create button for abstract classes ([GH-90807](https://github.com/godotengine/godot/pull/90807)). +- Avoid double editing when clicking AnimatedSprite ([GH-90815](https://github.com/godotengine/godot/pull/90815)). +- Fix folder color not cleared for removed subfolders ([GH-90829](https://github.com/godotengine/godot/pull/90829)). +- Fix input map shortcuts incorrectly edited on cancel ([GH-90835](https://github.com/godotengine/godot/pull/90835)). +- Fix folder scan replacing project list ([GH-90845](https://github.com/godotengine/godot/pull/90845)). +- Use minor version in EditorSettings file name ([GH-90875](https://github.com/godotengine/godot/pull/90875)). +- Add option to open online doc for selected class in script editor ([GH-90952](https://github.com/godotengine/godot/pull/90952)). +- Organize existing code for editor plugins ([GH-90975](https://github.com/godotengine/godot/pull/90975)). +- Hide update status label when no action is required ([GH-91026](https://github.com/godotengine/godot/pull/91026)). +- Add editor setting to keep bottom panel state on play and stop game ([GH-91033](https://github.com/godotengine/godot/pull/91033)). +- Allow setting editor dock tabs to icon only ([GH-91039](https://github.com/godotengine/godot/pull/91039)). +- Remove `uv_editor_bounds` editor setting ([GH-91073](https://github.com/godotengine/godot/pull/91073)). +- Further speed up closing multiple scripts ([GH-91081](https://github.com/godotengine/godot/pull/91081)). +- Increase width of project settings window ([GH-91087](https://github.com/godotengine/godot/pull/91087)). +- Fix error when moving FileSystem dock ([GH-91090](https://github.com/godotengine/godot/pull/91090)). +- Avoid double handling of rename in the file system dock ([GH-91112](https://github.com/godotengine/godot/pull/91112)). +- Register text enter for script base class ([GH-91113](https://github.com/godotengine/godot/pull/91113)). +- Add show in filesystem option for file favorites ([GH-91158](https://github.com/godotengine/godot/pull/91158)). +- Don't edit current when changing docks v2 ([GH-91168](https://github.com/godotengine/godot/pull/91168)). +- Improve Audio Bus button pressed state visibility ([GH-91236](https://github.com/godotengine/godot/pull/91236)). +- Add text to icon-only interpolation OptionButton in blend space editor ([GH-91238](https://github.com/godotengine/godot/pull/91238)). +- Only add warning label for Layout group in Control category ([GH-91252](https://github.com/godotengine/godot/pull/91252)). +- Fix reparenting after hover delay ([GH-91265](https://github.com/godotengine/godot/pull/91265)). +- Rework global class hiding in addons ([GH-91337](https://github.com/godotengine/godot/pull/91337)). +- Increase threshold for files per directory in editor Find in Files ([GH-91338](https://github.com/godotengine/godot/pull/91338)). +- Remove code duplication for adding global script class ([GH-91379](https://github.com/godotengine/godot/pull/91379)). +- Fix editor spin slider RTL and margin ([GH-91384](https://github.com/godotengine/godot/pull/91384)). +- Fix crash when switching main screen from a disabled plugin main screen if code editor is floating ([GH-91396](https://github.com/godotengine/godot/pull/91396)). +- Ensure `--doctool` is run from root directory ([GH-91407](https://github.com/godotengine/godot/pull/91407)). +- Fix selecting root when opening scene ([GH-91435](https://github.com/godotengine/godot/pull/91435)). +- DAP: Fix typo in parsing of PackedVector3Array ([GH-91468](https://github.com/godotengine/godot/pull/91468)). +- Fix `FileSystemDock` thumbnails sometimes not displaying ([GH-91471](https://github.com/godotengine/godot/pull/91471)). +- Keep docks menu open when opening dock ([GH-91484](https://github.com/godotengine/godot/pull/91484)). +- Prevent some shortcut errors when generating docs ([GH-91515](https://github.com/godotengine/godot/pull/91515)). +- Fix EditorInspector crash when exiting ([GH-91538](https://github.com/godotengine/godot/pull/91538)). +- Remove error messages caused by Save on Focus feature ([GH-91555](https://github.com/godotengine/godot/pull/91555)). +- Fix infinite call loop on theme change ([GH-91595](https://github.com/godotengine/godot/pull/91595)). +- Update `ConnectDialog::_filter_method_list` to be case insensitive for search string ([GH-91598](https://github.com/godotengine/godot/pull/91598)). +- Limit icon size in `EditorDebuggerTree` ([GH-91622](https://github.com/godotengine/godot/pull/91622)). +- Fix temporary Euler when editing quaternion ([GH-91678](https://github.com/godotengine/godot/pull/91678)). +- Fix i18n in AudioStreamInteractive transition editor ([GH-91693](https://github.com/godotengine/godot/pull/91693)). +- Revert `as_sortable_control()` change in SplitContainer ([GH-91708](https://github.com/godotengine/godot/pull/91708)). +- Improve transition enabled header in interactive music editor ([GH-91709](https://github.com/godotengine/godot/pull/91709)). +- Fix `EditorHelpBitTooltip` + `ProgressDialog` causes crash ([GH-91716](https://github.com/godotengine/godot/pull/91716)). +- Fix `PropertyListHelper::_get_property` returning a valid value even if an index is outside the array valid indices ([GH-91760](https://github.com/godotengine/godot/pull/91760)). +- Fix Sprite2D editor history mismatch ([GH-91777](https://github.com/godotengine/godot/pull/91777)). +- Select next text to replace ([GH-91779](https://github.com/godotengine/godot/pull/91779)). +- Fix long category name display in Inspector ([GH-91820](https://github.com/godotengine/godot/pull/91820)). +- Fix FileBrowse and FolderBrowse icon style fill not getting replaced ([GH-91821](https://github.com/godotengine/godot/pull/91821)). +- Move "Add a new scene" button when Scene Tabs settings change ([GH-91859](https://github.com/godotengine/godot/pull/91859)). +- Change default parenting behavior when drag-and-dropping to 2d and 3d editor ([GH-91874](https://github.com/godotengine/godot/pull/91874)). +- Make performance monitor names translatable ([GH-91927](https://github.com/godotengine/godot/pull/91927)). +- Add Dutch translation for Linux desktop file ([GH-91928](https://github.com/godotengine/godot/pull/91928)). +- Fix categories and tooltips in `TileSet` editor ([GH-91932](https://github.com/godotengine/godot/pull/91932)). +- Skip unnecessary updates to scene groups and scripts ([GH-91980](https://github.com/godotengine/godot/pull/91980)). +- Create AudioStreamPlayer when dropping AudioStream ([GH-92004](https://github.com/godotengine/godot/pull/92004)). +- Fix default NodePaths saved in scene ([GH-92095](https://github.com/godotengine/godot/pull/92095)). +- Disable follow focus while updating inspector ([GH-92108](https://github.com/godotengine/godot/pull/92108)). +- Change the AudioStreamPlayer icons to be clearer ([GH-92116](https://github.com/godotengine/godot/pull/92116)). +- Fix log rebuilding crashing when there's no messages ([GH-92128](https://github.com/godotengine/godot/pull/92128)). +- Editor Feature Profile: Only rebuild selected TreeItem and all children when a property is edited ([GH-92136](https://github.com/godotengine/godot/pull/92136)). +- Don't translate preview in node batch rename dialog ([GH-92192](https://github.com/godotengine/godot/pull/92192)). +- Fix unchecking theme overrides not creating an undo action ([GH-92207](https://github.com/godotengine/godot/pull/92207)). +- Fix array variable with `@export_multiline` not registering changes ([GH-92225](https://github.com/godotengine/godot/pull/92225)). +- Prevent label width from flickering rapidly in editor frametime panel ([GH-92231](https://github.com/godotengine/godot/pull/92231)). +- Fix scene hash not updated when scene is empty ([GH-92253](https://github.com/godotengine/godot/pull/92253)). +- Fix TextEdit HScroll hiding after wrapping ([GH-92271](https://github.com/godotengine/godot/pull/92271)). +- Fix theme StyleBox override parameter completion ([GH-92296](https://github.com/godotengine/godot/pull/92296)). +- Fix crash on dictionary initialization after return to default in C# ([GH-92351](https://github.com/godotengine/godot/pull/92351)). +- Fix profiler seek line color in light modes, update on theme change ([GH-92389](https://github.com/godotengine/godot/pull/92389)). +- Avoid editor error reporting using resource loader thread's call queues ([GH-92426](https://github.com/godotengine/godot/pull/92426)). +- Select text in SpriteFramesEditor spin boxes on focus ([GH-92442](https://github.com/godotengine/godot/pull/92442)). +- Prevent connect `scroll_to_paragraph` multiple times to `class_desc` ([GH-92454](https://github.com/godotengine/godot/pull/92454)). +- Set `doc_name` even when categories are hidden in the inspector ([GH-92457](https://github.com/godotengine/godot/pull/92457)). +- Make signal connections dialog method picker respect bind/unbind ([GH-92465](https://github.com/godotengine/godot/pull/92465)). +- Fix error when dropping image onto the scene dock ([GH-92470](https://github.com/godotengine/godot/pull/92470)). +- Add missing space around the ratio lock button ([GH-92482](https://github.com/godotengine/godot/pull/92482)). +- Add range hint for `SubViewportContainer.stretch_shrink` ([GH-92500](https://github.com/godotengine/godot/pull/92500)). +- Fix AudioStreamPlayer icons, improve audio resource picker styling ([GH-92504](https://github.com/godotengine/godot/pull/92504)). +- Fix Window position preview in the editor ([GH-92506](https://github.com/godotengine/godot/pull/92506)). +- Remove unused `base_hint` from EditorPropertyNodePath ([GH-92511](https://github.com/godotengine/godot/pull/92511)). +- Enable custom separators to treat different characters as words ([GH-92514](https://github.com/godotengine/godot/pull/92514)). +- Update Add Scene button after TabBar resizes ([GH-92559](https://github.com/godotengine/godot/pull/92559)). +- Update editor `Window` preview position when resizing window ([GH-92577](https://github.com/godotengine/godot/pull/92577)). +- Rework and simplify update checking logic ([GH-92597](https://github.com/godotengine/godot/pull/92597)). +- Fix project settings reloading ([GH-92633](https://github.com/godotengine/godot/pull/92633)). +- Consistently display script icons for nodes in connect dialog's scene tree editor ([GH-92648](https://github.com/godotengine/godot/pull/92648)). +- Tweak property name style selector in the editor inspector ([GH-92665](https://github.com/godotengine/godot/pull/92665)). +- Fix huge .tscn icon and icon in background of File System panel ([GH-92669](https://github.com/godotengine/godot/pull/92669)). +- Swap last edited date and version/warning in Project Manager ([GH-92751](https://github.com/godotengine/godot/pull/92751)). +- Call `EditorNode::set_edited_scene()` manually instead of via the `replacing_by` signal ([GH-92760](https://github.com/godotengine/godot/pull/92760)). +- Add Globals tab to reorganize Project Settings dialog ([GH-92770](https://github.com/godotengine/godot/pull/92770)). +- Fix editor screenshots menu button's tooltip ([GH-92836](https://github.com/godotengine/godot/pull/92836)). +- Remove unused order variable from EditorResourcePreview ([GH-92871](https://github.com/godotengine/godot/pull/92871)). +- Add missing inspector dock update after node deletion ([GH-92930](https://github.com/godotengine/godot/pull/92930)). +- Fix theme updating of the inspector sections ([GH-93000](https://github.com/godotengine/godot/pull/93000)). +- Fix EditorFileSystem `update_files` after #92893 ([GH-93006](https://github.com/godotengine/godot/pull/93006)). +- System info: Remove empty parentheses when video adapter driver name is unknown ([GH-93033](https://github.com/godotengine/godot/pull/93033)). +- Fix `EditorHelpBit` title height is wrong on initialization ([GH-93040](https://github.com/godotengine/godot/pull/93040)). +- Fix find highlight when switching scripts ([GH-93056](https://github.com/godotengine/godot/pull/93056)). +- Fix EditorProperty spacing ([GH-93089](https://github.com/godotengine/godot/pull/93089)). +- Fix not being able to reopen signals panel immediately after connecting a signal ([GH-93110](https://github.com/godotengine/godot/pull/93110)). +- Fix crash when trying to undo SpriteFrames animation rename ([GH-93112](https://github.com/godotengine/godot/pull/93112)). +- Material: Fix marking as ready ([GH-93127](https://github.com/godotengine/godot/pull/93127)). +- Center the label in EditorObjectSelector ([GH-93129](https://github.com/godotengine/godot/pull/93129)). +- Fix noticeable freeze after saving a scene ([GH-93147](https://github.com/godotengine/godot/pull/93147)). +- Fix bug when downloading export templates and re-opening the template manager ([GH-93148](https://github.com/godotengine/godot/pull/93148)). +- Add missing TTR's for EditorProgress ([GH-93150](https://github.com/godotengine/godot/pull/93150)). +- EditorProgress: Use `BackgroundProgress` instead of `ProgressDialog` when called for a thread ([GH-93160](https://github.com/godotengine/godot/pull/93160)). +- Allow theming movie writer button icon color ([GH-93223](https://github.com/godotengine/godot/pull/93223)). +- Allow theming renderer colors ([GH-93229](https://github.com/godotengine/godot/pull/93229)). +- Unload addons before quitting to allow cleanup ([GH-93238](https://github.com/godotengine/godot/pull/93238)). +- Prevent generating preview for zero sized texture ([GH-93255](https://github.com/godotengine/godot/pull/93255)). +- Fix incorrect autoload path in error ([GH-93294](https://github.com/godotengine/godot/pull/93294)). +- Add missing RTL styles for InspectorActionButton ([GH-93318](https://github.com/godotengine/godot/pull/93318)). +- Add missing style overrides for viewport overlay buttons ([GH-93361](https://github.com/godotengine/godot/pull/93361)). +- Fix determining the availability of a new version ([GH-93391](https://github.com/godotengine/godot/pull/93391)). +- Make inspector spacing more themable ([GH-93435](https://github.com/godotengine/godot/pull/93435)). +- Add missing RTL styles for MainScreenButton ([GH-93520](https://github.com/godotengine/godot/pull/93520)). +- Include "PopupMenu" labels in POT gen ([GH-93521](https://github.com/godotengine/godot/pull/93521)). +- Add brief description tooltips to EditorResourcePicker ([GH-93523](https://github.com/godotengine/godot/pull/93523)). +- Update import dock when selecting resource in resource panel ([GH-93533](https://github.com/godotengine/godot/pull/93533)). +- Fix reselecting scene tree node after inspecting a resource ([GH-93543](https://github.com/godotengine/godot/pull/93543)). +- Center the label of EditorValidationPanel ([GH-93544](https://github.com/godotengine/godot/pull/93544)). +- Remove editor pseudolocalization debug feature ([GH-93554](https://github.com/godotengine/godot/pull/93554)). +- Fix crash on exit with shader editor ([GH-93558](https://github.com/godotengine/godot/pull/93558)). +- Fix clear custom color on invalid `tree_item_inspected` causing `Index p_column = 0 is out of bounds (cells.size() = 0).` error message ([GH-93576](https://github.com/godotengine/godot/pull/93576)). +- Add comment for editor particles Restart Emission shortcut not using Cmd on macOS ([GH-93581](https://github.com/godotengine/godot/pull/93581)). +- Add missing punctuation to the default TextEdit word separators ([GH-93656](https://github.com/godotengine/godot/pull/93656)). +- Center the label in overview of script editor ([GH-93661](https://github.com/godotengine/godot/pull/93661)). +- Fix find result current match count issues ([GH-93674](https://github.com/godotengine/godot/pull/93674)). +- Fix unnecessary overbright modulates used in a few editors ([GH-93720](https://github.com/godotengine/godot/pull/93720)). +- Speed up scene group scanning for text scenes ([GH-93723](https://github.com/godotengine/godot/pull/93723)). +- Make the frame time and info boxes use same margins ([GH-93736](https://github.com/godotengine/godot/pull/93736)). +- Set max width for icons in the quick open popup ([GH-93743](https://github.com/godotengine/godot/pull/93743)). +- macOS: Change the distraction-free mode shortcut ([GH-93789](https://github.com/godotengine/godot/pull/93789)). +- Update Node dock when theme changes ([GH-93868](https://github.com/godotengine/godot/pull/93868)). +- Fix a bunch of orphan StringName errors at ProjectSettings/Editor exit ([GH-93888](https://github.com/godotengine/godot/pull/93888)). +- Fix custom resources often missing from Quick Load dialog ([GH-93909](https://github.com/godotengine/godot/pull/93909)). +- Fix default font variation values handling in the property inspector ([GH-93957](https://github.com/godotengine/godot/pull/93957)). +- Fix `EditorHelpBitTooltip` for Signals dock ([GH-93967](https://github.com/godotengine/godot/pull/93967)). +- Update font preview directly instead of invalidating property list ([GH-93968](https://github.com/godotengine/godot/pull/93968)). +- Ignore trailing slashes in new project’s path when disabling Create Folder ([GH-94015](https://github.com/godotengine/godot/pull/94015)). +- Fix first time of Toggle Last Opened Bottom Panel opens Output panel ([GH-94040](https://github.com/godotengine/godot/pull/94040)). +- Fix Toggle Last Opened Bottom Panel not working after restoring FileSystem Dock to the side ([GH-94053](https://github.com/godotengine/godot/pull/94053)). +- Fix ScriptEditor `request_save_previous_state` signal type ([GH-94057](https://github.com/godotengine/godot/pull/94057)). +- Let EditorLog use the right call queue for thread safety ([GH-94079](https://github.com/godotengine/godot/pull/94079)). +- Fix editor inspector crashing when the old object is no longer valid ([GH-94101](https://github.com/godotengine/godot/pull/94101)). +- Fix wrong inspected node after drag&drop ([GH-94105](https://github.com/godotengine/godot/pull/94105)). +- Make `fdialog_project` up to become the child of `ProjectManager` instead of child of `ProjectDialog` ([GH-94113](https://github.com/godotengine/godot/pull/94113)). +- Unload addons when using `--import` or `--quit` ([GH-94116](https://github.com/godotengine/godot/pull/94116)). +- Fix edited node being removed before editor plugin handles focus loss ([GH-94162](https://github.com/godotengine/godot/pull/94162)). +- Fix resources being skipped in InstancePlaceholder ([GH-94345](https://github.com/godotengine/godot/pull/94345)). +- Fix removing a folder that contains a file is not removed from the FileSystem Dock ([GH-94435](https://github.com/godotengine/godot/pull/94435)). +- Fix crash when adding scenes with a group to the level scene ([GH-94450](https://github.com/godotengine/godot/pull/94450)). +- Consider tabs when calculating column for jump to error ([GH-94474](https://github.com/godotengine/godot/pull/94474)). +- Disable unique name in scene when making a node the root node ([GH-94491](https://github.com/godotengine/godot/pull/94491)). +- Improve Curve preview colors for consistency ([GH-94494](https://github.com/godotengine/godot/pull/94494)). +- Fix incorrect Curve editor preview thumbnail scaling ([GH-94571](https://github.com/godotengine/godot/pull/94571)). +- Fix editor crash when editor settings resource is invalid ([GH-94593](https://github.com/godotengine/godot/pull/94593)). +- Increase threshold for displaying scene group update progress ([GH-94594](https://github.com/godotengine/godot/pull/94594)). +- Change .gitignore to only exclude root android template folder ([GH-94597](https://github.com/godotengine/godot/pull/94597)). +- Fix Object encoded as id in dictionaries to be represented as int in the inspector ([GH-94610](https://github.com/godotengine/godot/pull/94610)). +- Fix certain resource previews empty with GL compat ([GH-94619](https://github.com/godotengine/godot/pull/94619)). +- Parse `auto_translate` when generating a POT file ([GH-94622](https://github.com/godotengine/godot/pull/94622)). +- Fix node gets wrongly selected after moving another node in the tree ([GH-94649](https://github.com/godotengine/godot/pull/94649)). +- Android Editor: Make progress dialog visible again ([GH-94662](https://github.com/godotengine/godot/pull/94662)). +- Fix editor settings still displayed when replaced ([GH-94932](https://github.com/godotengine/godot/pull/94932)). +- Split editor documentation cache by minor version ([GH-94980](https://github.com/godotengine/godot/pull/94980)). +- Fix global class cache file not present when no class name ([GH-94991](https://github.com/godotengine/godot/pull/94991)). +- Fix project name cleared when browsing path ([GH-95062](https://github.com/godotengine/godot/pull/95062)). +- [Android editor] Enable the display scale option in the Project manager's quick settings ([GH-95082](https://github.com/godotengine/godot/pull/95082)). +- [Android editor] Fix issue with importing projects ([GH-95086](https://github.com/godotengine/godot/pull/95086)). +- Don't drop `PackedScene` as property ([GH-95090](https://github.com/godotengine/godot/pull/95090)). +- Initialize project name when importing project ([GH-95245](https://github.com/godotengine/godot/pull/95245)). +- Fix use-after-free in `EditorHelp` ([GH-95307](https://github.com/godotengine/godot/pull/95307)). +- Fix order of Lock and Group icons in SceneTree ([GH-95329](https://github.com/godotengine/godot/pull/95329)). +- Fix label update for dict on item deletion ([GH-95364](https://github.com/godotengine/godot/pull/95364)). +- Fix FileSystem not updated on file deletion ([GH-95533](https://github.com/godotengine/godot/pull/95533)). #### Export -- Add a "version" project setting and use it in new export presets ([GH-35555](https://github.com/godotengine/godot/pull/35555)). -- Implement iOS one-click deploy ([GH-70662](https://github.com/godotengine/godot/pull/70662)). -- Add options to show icon in Android TV and run app as Android launcher ([GH-78164](https://github.com/godotengine/godot/pull/78164)). -- Add a button in the export dialog to fix missing texture formats ([GH-78457](https://github.com/godotengine/godot/pull/78457)). -- iOS: Add `export_project_only` flag ([GH-78641](https://github.com/godotengine/godot/pull/78641)). -- Re-architect how Android plugins are packaged and handled at export time ([GH-78958](https://github.com/godotengine/godot/pull/78958)). -- Fix export options of scripted `EditorExportPlugin`s ([GH-79025](https://github.com/godotengine/godot/pull/79025)). -- Android: Add option to always use WiFi to connect to remote debug ([GH-79504](https://github.com/godotengine/godot/pull/79504)). -- Improve headings for the export mode in the Export dialog ([GH-79725](https://github.com/godotengine/godot/pull/79725)). -- [macOS Export] Disable unpacked .app bundle export on Windows ([GH-79950](https://github.com/godotengine/godot/pull/79950)). -- Fix Windows console wrapper and icon being swapped ([GH-80357](https://github.com/godotengine/godot/pull/80357)). -- Add export setting to control whether to show the Godot app in the app library ([GH-80569](https://github.com/godotengine/godot/pull/80569)). -- Fix redundant enter tree notification in project export texture format ([GH-80967](https://github.com/godotengine/godot/pull/80967)). -- [iOS export] Switch export target extension based on export type ([GH-81365](https://github.com/godotengine/godot/pull/81365)). -- Expose `EditorExportPlatform::get_os_name()` ([GH-81430](https://github.com/godotengine/godot/pull/81430)). -- Fix `SubViewport` with `UPDATE_WHEN_VISIBLE` not working properly in exported project ([GH-81607](https://github.com/godotengine/godot/pull/81607)). -- [macOS export] Fix GDExtension framework `+x` flag errors, allow recursive signing on non macOS platform ([GH-81969](https://github.com/godotengine/godot/pull/81969)). -- Fix TextServer data export ([GH-82103](https://github.com/godotengine/godot/pull/82103)). -- iOS: Fix build on Xcode 14 and older ([GH-83088](https://github.com/godotengine/godot/pull/83088)). -- macOS: Remove deprecated altool notarization support, disable rcodesign for C# version ([GH-83482](https://github.com/godotengine/godot/pull/83482)). -- Use "version" project setting as macOS/iOS "short_version" fallback ([GH-83686](https://github.com/godotengine/godot/pull/83686)). -- Improve app / file version validation ([GH-84296](https://github.com/godotengine/godot/pull/84296)). -- [macOS export] Improve icon generation ([GH-84521](https://github.com/godotengine/godot/pull/84521)). -- Preserve the output from the gradle build command ([GH-84779](https://github.com/godotengine/godot/pull/84779)). -- Prevent the surface upgrade tool from running during export ([GH-85136](https://github.com/godotengine/godot/pull/85136)). -- iOS: Check if Xcode is installed in one-click deploy code ([GH-85168](https://github.com/godotengine/godot/pull/85168)). +- Provide ability to override `EditorExportPlugin::_export_end()` in C++ ([GH-72572](https://github.com/godotengine/godot/pull/72572)). +- Ensure Android keystore username and password are checked on export ([GH-83702](https://github.com/godotengine/godot/pull/83702)). +- [iOS export] Add export options for performance capabilities and min. iOS version ([GH-84162](https://github.com/godotengine/godot/pull/84162)). +- Update the validation logic for the package name ([GH-84676](https://github.com/godotengine/godot/pull/84676)). +- Add `single`/`double` as export features automatically ([GH-84711](https://github.com/godotengine/godot/pull/84711)). +- Fix order of operations for macOS template check ([GH-84990](https://github.com/godotengine/godot/pull/84990)). +- [iOS one-click] Add support for Xcode 15 devicectl ([GH-85546](https://github.com/godotengine/godot/pull/85546)). +- iOS: Use `mdfind` to check if Xcode is installed in one-click deploy code ([GH-85774](https://github.com/godotengine/godot/pull/85774)). +- Add option to install android build template for export ([GH-85819](https://github.com/godotengine/godot/pull/85819)). +- Ensure more export errors are reported to users ([GH-85845](https://github.com/godotengine/godot/pull/85845)). +- Add PWA option to ensure cross-origin isolation headers on web export ([GH-86089](https://github.com/godotengine/godot/pull/86089)). +- D3D12: Automatically copy runtime DLLs during export ([GH-86093](https://github.com/godotengine/godot/pull/86093)). +- Set an appropriate minimum size for labels in windows that display incorrectly ([GH-86145](https://github.com/godotengine/godot/pull/86145)). +- [iOS export] Improve `.xcframework` exporting ([GH-86288](https://github.com/godotengine/godot/pull/86288)). +- iOS: Remove deprecated LaunchImages support and switch to Storyboard by default ([GH-86312](https://github.com/godotengine/godot/pull/86312)). +- Specify the path to the Java SDK used for the Android gradle build ([GH-86383](https://github.com/godotengine/godot/pull/86383)). +- Add logging when macOS export will fail due to disabled texture formats ([GH-86769](https://github.com/godotengine/godot/pull/86769)). +- Hide Keystore Release password on Android's Export window ([GH-86882](https://github.com/godotengine/godot/pull/86882)). +- [macOS export] Fix RLE icon generation ([GH-86934](https://github.com/godotengine/godot/pull/86934)). +- [macOS/iOS export] Add option to set custom Info.plist data ([GH-87029](https://github.com/godotengine/godot/pull/87029)). +- Add clearer error message for missing project icon during Android export ([GH-87208](https://github.com/godotengine/godot/pull/87208)). +- Add basic multimesh data needed for headless export to the Dummy rendering server ([GH-87390](https://github.com/godotengine/godot/pull/87390)). +- Add DummyShader handling to Dummy RenderingServer to ensure shader parameters are saved in headless export ([GH-87392](https://github.com/godotengine/godot/pull/87392)). +- GDScript: Reintroduce binary tokenization on export ([GH-87634](https://github.com/godotengine/godot/pull/87634)). +- [macOS export] Allow unpacked .app export in "Distribution" export mode ([GH-87657](https://github.com/godotengine/godot/pull/87657)). +- Remove workaround in GLTF exporter that double converts `ra` textures to `rg` ([GH-87775](https://github.com/godotengine/godot/pull/87775)). +- Don't invoke adb with no runnable Android preset ([GH-87823](https://github.com/godotengine/godot/pull/87823)). +- macOS: Generate min. `Info.plist` for frameworks if it's missing. Validate framework bundle ID characters ([GH-87908](https://github.com/godotengine/godot/pull/87908)). +- Fix data race regarding `server_quit` in `EditorExportPlatformWeb` ([GH-88043](https://github.com/godotengine/godot/pull/88043)). +- Assign missing surface data fields in dummy render server ([GH-88210](https://github.com/godotengine/godot/pull/88210)). +- Allow export plugins to override export option values ([GH-88291](https://github.com/godotengine/godot/pull/88291)). +- Android: Allow using alternative Gradle build directory ([GH-88297](https://github.com/godotengine/godot/pull/88297)). +- Unify settings for PC texture formats, removed obsoleted ETC feature ([GH-88325](https://github.com/godotengine/godot/pull/88325)). +- GDScript: Fix extension comparison for exported scripts ([GH-88365](https://github.com/godotengine/godot/pull/88365)). +- Add export setting to specify whether the native libraries should be compressed for the gradle build ([GH-88385](https://github.com/godotengine/godot/pull/88385)). +- Add an `Advanced Options` toggle to the editor export preset ([GH-88419](https://github.com/godotengine/godot/pull/88419)). +- Display a warning if device CPU architecture is not active in the export preset ([GH-88611](https://github.com/godotengine/godot/pull/88611)). +- Physics: Fix exporting with 3D disabled ([GH-88668](https://github.com/godotengine/godot/pull/88668)). +- Update the list of advanced export options for the Android platform ([GH-88840](https://github.com/godotengine/godot/pull/88840)). +- GDScript: Canonicalize script path in FQCN ([GH-88853](https://github.com/godotengine/godot/pull/88853)). +- Don't attempt shutting down adb on exit if not started ([GH-88865](https://github.com/godotengine/godot/pull/88865)). +- GDScript: Fix paths in `ResourceFormatLoaderGDScript::load()` ([GH-89005](https://github.com/godotengine/godot/pull/89005)). +- Linux: Handle export preset compat with 'Linux/X11' platform name ([GH-89044](https://github.com/godotengine/godot/pull/89044)). +- Update the Android export validation logic to account for the custom gradle android source template ([GH-89173](https://github.com/godotengine/godot/pull/89173)). +- Use relative file base offset for embedded PCK ([GH-89214](https://github.com/godotengine/godot/pull/89214)). +- Fix reporting exit code when command line export fails ([GH-89234](https://github.com/godotengine/godot/pull/89234)). +- iOS: Restore backward compatibility with old export templates ([GH-89348](https://github.com/godotengine/godot/pull/89348)). +- GDScript: Fix continuation lines in `GDScriptTokenizerBuffer` ([GH-89472](https://github.com/godotengine/godot/pull/89472)). +- Windows: Fix exporting as ZIP when console wrapper and/or embedded PCK is enabled ([GH-89511](https://github.com/godotengine/godot/pull/89511)). +- Fix `gdextensionlibs.json` storage path in Android gradle build ([GH-89579](https://github.com/godotengine/godot/pull/89579)). +- [iOS Export] Check directory content before deleting old export leftovers ([GH-89790](https://github.com/godotengine/godot/pull/89790)). +- Allow skipping imported resource files from export ([GH-90365](https://github.com/godotengine/godot/pull/90365)). +- [iOS export] Add support for privacy manifest configuration ([GH-90375](https://github.com/godotengine/godot/pull/90375)). +- Android: Add `POST_NOTIFICATIONS` permission to the list of permissions available in the Export dialog ([GH-90377](https://github.com/godotengine/godot/pull/90377)). +- [iOS Export] Fix adding static libs to the Xcode project ([GH-90379](https://github.com/godotengine/godot/pull/90379)). +- Windows: Support all possible suffixes for console wrapper ([GH-90387](https://github.com/godotengine/godot/pull/90387)). +- [macOS export] Detect embedded helper executables using MachO header ([GH-90428](https://github.com/godotengine/godot/pull/90428)). +- Add `--import` command-line flag ([GH-90431](https://github.com/godotengine/godot/pull/90431)). +- Android: Standardize permission descriptions, add urls, remove deprecated tag from non-deprecated permission ([GH-90546](https://github.com/godotengine/godot/pull/90546)). +- Fix issue with resolving the path for the Android keystore file ([GH-90603](https://github.com/godotengine/godot/pull/90603)). +- Fix the logic to load export preset's options overrides ([GH-90606](https://github.com/godotengine/godot/pull/90606)). +- Automatically generate the Android debug keystore ([GH-90611](https://github.com/godotengine/godot/pull/90611)). +- Web: Fix serve.py utility on Windows ([GH-90698](https://github.com/godotengine/godot/pull/90698)). +- Fix issue causing the `copyAndRename*` task to fail on occasions on Windows machines ([GH-90802](https://github.com/godotengine/godot/pull/90802)). +- Splash image support and new progress bar for HTML5 Web Export ([GH-91128](https://github.com/godotengine/godot/pull/91128)). +- Fix export dialog sizing issue on small devices ([GH-91291](https://github.com/godotengine/godot/pull/91291)). +- Add more Remote Debug options to the web platform ([GH-91369](https://github.com/godotengine/godot/pull/91369)). +- [macOS export] Add support for privacy manifest configuration ([GH-91377](https://github.com/godotengine/godot/pull/91377)). +- Default to non-threaded export setting for the web ([GH-91623](https://github.com/godotengine/godot/pull/91623)). +- Web: Fix splash screen background color in HTML shell ([GH-91852](https://github.com/godotengine/godot/pull/91852)). +- Web: Fix quotes style in HTML shell head include ([GH-91856](https://github.com/godotengine/godot/pull/91856)). +- Disable remote debug button when there are no runnable presets ([GH-92032](https://github.com/godotengine/godot/pull/92032)). +- Use `GLOBAL_GET` for `window_{height,width}_override` ([GH-92075](https://github.com/godotengine/godot/pull/92075)). +- Fix web export state for Remote Debug ([GH-92163](https://github.com/godotengine/godot/pull/92163)). +- Ensure that Godot's version of `libc++_shared.so` is always selected ([GH-92525](https://github.com/godotengine/godot/pull/92525)). +- Fix iOS exports never embedding framework bundles ([GH-92692](https://github.com/godotengine/godot/pull/92692)). +- [iOS export] Automatically generate ARM64 simulator library from device library if it's missing ([GH-92750](https://github.com/godotengine/godot/pull/92750)). +- Fix issues related to code-signing for macOS exports ([GH-93101](https://github.com/godotengine/godot/pull/93101)). +- Android: Revert hiding of custom templates under the `Advanced Options` toggle ([GH-93551](https://github.com/godotengine/godot/pull/93551)). +- Web: Add "threads"/"nothreads" feature tags to export presets ([GH-93556](https://github.com/godotengine/godot/pull/93556)). +- Add `nothreads` feature tag to signify lack of `THREADS_ENABLED` ([GH-93563](https://github.com/godotengine/godot/pull/93563)). +- EditorExportPlugin: Call `_export_file` for all resource types ([GH-93878](https://github.com/godotengine/godot/pull/93878)). +- Fix error when exporting files without import parameters ([GH-94405](https://github.com/godotengine/godot/pull/94405)). +- Fix issue preventing enabling the remote button for Android/iOS ([GH-94425](https://github.com/godotengine/godot/pull/94425)). +- [macOS export] Do not stop export on signing errors ([GH-94677](https://github.com/godotengine/godot/pull/94677)). +- Fix Android export failing with custom keystores and no JDK setup in the OS environment ([GH-94809](https://github.com/godotengine/godot/pull/94809)). +- Windows: Improve editor grouping, set friendly name registry key for exported projects ([GH-94976](https://github.com/godotengine/godot/pull/94976)). +- iOS: Fix dylib GDExtension conversion ([GH-95323](https://github.com/godotengine/godot/pull/95323)). #### GDExtension -- Fix GDExtension classes derived from abstract GDExtension classes always being registered as abstract ([GH-67512](https://github.com/godotengine/godot/pull/67512)). -- Add GDExtension support for OpenXR extension wrappers ([GH-68259](https://github.com/godotengine/godot/pull/68259)). -- Allow GDExtension to register unexposed classes ([GH-70329](https://github.com/godotengine/godot/pull/70329)). -- Set vararg methods' ptrcall of builtin classes, and let them can be called without arguments ([GH-76047](https://github.com/godotengine/godot/pull/76047)). -- Add GDExtension function to construct StringName directly from `char*` ([GH-78580](https://github.com/godotengine/godot/pull/78580)). -- Allow implementing `get_class_category` in GDExtension ([GH-78995](https://github.com/godotengine/godot/pull/78995)). -- Allow CallableCustom objects to be created from GDExtensions ([GH-79005](https://github.com/godotengine/godot/pull/79005)). -- Allow resizing Strings from GDExtension ([GH-79156](https://github.com/godotengine/godot/pull/79156)). -- Prevent GDExtensions from trying to remove editor plugins at shutdown ([GH-79492](https://github.com/godotengine/godot/pull/79492)). -- Fix `_get_property_list` not working correctly in parent classes ([GH-79683](https://github.com/godotengine/godot/pull/79683)). -- Add `_bind_compatibility_methods` to Object ([GH-79702](https://github.com/godotengine/godot/pull/79702)). -- Fix incorrect virtual function in `VideoStream.set_paused` ([GH-79710](https://github.com/godotengine/godot/pull/79710)). -- Add support for indexed properties in GDExtension ([GH-79763](https://github.com/godotengine/godot/pull/79763)). -- Add `get_script_instance` to GDExtension ([GH-80040](https://github.com/godotengine/godot/pull/80040)). -- `PtrToArg::convert()` uses const-reference where possible ([GH-80075](https://github.com/godotengine/godot/pull/80075)). -- Fix or workaround recent extension API compatibility issues ([GH-80168](https://github.com/godotengine/godot/pull/80168)). -- Copy DLL to a temp file before opening ([GH-80188](https://github.com/godotengine/godot/pull/80188)). -- CI: Make extension API compatibility check mandatory ([GH-80220](https://github.com/godotengine/godot/pull/80220)). -- Implement reloading of GDExtensions ([GH-80284](https://github.com/godotengine/godot/pull/80284)). -- Add compatibility notice after #78266 ([GH-80374](https://github.com/godotengine/godot/pull/80374)). -- Expose PlaceHolderScriptInstance to GDExtension ([GH-80394](https://github.com/godotengine/godot/pull/80394)). -- Fix version check for GDExtension ([GH-80591](https://github.com/godotengine/godot/pull/80591)). -- Use `String::resize()` and `CharString` in `text_server_adv` again ([GH-80642](https://github.com/godotengine/godot/pull/80642)). -- Add functions for non-ptr style virtual calls in GDExtension ([GH-80671](https://github.com/godotengine/godot/pull/80671)). -- SCons: Fix ThorVG build option in TextServers with #80095 ([GH-80713](https://github.com/godotengine/godot/pull/80713)). -- Remove DLL copy if it fails to load ([GH-80720](https://github.com/godotengine/godot/pull/80720)). -- Godot Android plugin re-architecture ([GH-80740](https://github.com/godotengine/godot/pull/80740)). -- Exclude unexposed classes from the `extension_api.json` ([GH-80852](https://github.com/godotengine/godot/pull/80852)). -- Fix overriding `_export_begin`, `_export_file` and `_export_end` from GDExtension ([GH-80999](https://github.com/godotengine/godot/pull/80999)). -- Allocate `GDExtensionScriptInstanceInfo2` for compatibility on the heap to prevent crash ([GH-81206](https://github.com/godotengine/godot/pull/81206)). -- Use godot-cpp 4.1 for the "Godot CPP" CI workflow to prevent circular dependency ([GH-81238](https://github.com/godotengine/godot/pull/81238)). -- fix `bool` unknown in C ([GH-81247](https://github.com/godotengine/godot/pull/81247)). -- Allow implementing `ScriptInstance::validate_property()` from GDExtension ([GH-81261](https://github.com/godotengine/godot/pull/81261)). -- Fix bindings of `PhysicsServer3DRenderingServerHandler` ([GH-81298](https://github.com/godotengine/godot/pull/81298)). -- Add compatibility methods for RenderingDevice BarrierMask ([GH-81356](https://github.com/godotengine/godot/pull/81356)). -- Allow implementing `Object::_validate_property()` from GDExtension ([GH-81515](https://github.com/godotengine/godot/pull/81515)). -- Fix method hashes with default arguments ([GH-81521](https://github.com/godotengine/godot/pull/81521)). -- Delete left-over DLL copy before making a new copy ([GH-81576](https://github.com/godotengine/godot/pull/81576)). -- Expose `texture_create_from_extension` to GDExtension ([GH-82168](https://github.com/godotengine/godot/pull/82168)). -- Remove redundant method bind hash check ([GH-82191](https://github.com/godotengine/godot/pull/82191)). -- Optionally include documentation in GDExtension API dump ([GH-82331](https://github.com/godotengine/godot/pull/82331)). -- Fix type of `notification_func` ([GH-82332](https://github.com/godotengine/godot/pull/82332)). -- Moved `face_index` field in 3D `RayResult` to end of struct ([GH-82403](https://github.com/godotengine/godot/pull/82403)). -- Fix inconsistent `last_modified_time` handling in GDExtension ([GH-82603](https://github.com/godotengine/godot/pull/82603)). -- Don't deprecate old method of getting script category ([GH-82682](https://github.com/godotengine/godot/pull/82682)). -- Fixes to allow object-less callables throughout Godot ([GH-82695](https://github.com/godotengine/godot/pull/82695)). -- Web: Catch using GDExtensions in a non-dlink build ([GH-82790](https://github.com/godotengine/godot/pull/82790)). -- Convert `validated_call()` to `ptrcall()` (rather than `call()`) ([GH-82794](https://github.com/godotengine/godot/pull/82794)). -- Expose `Object::free_instance_binding()` to GDExtension ([GH-82799](https://github.com/godotengine/godot/pull/82799)). -- Resolve relative icon paths for GDExtensions ([GH-82842](https://github.com/godotengine/godot/pull/82842)). -- Fix extensions loading/initializing even when entry point fails ([GH-82861](https://github.com/godotengine/godot/pull/82861)). -- Remove I/O error popup when failing to load/unload extension ([GH-82907](https://github.com/godotengine/godot/pull/82907)). -- On Linux, favor local symbols when loading a shared library ([GH-82973](https://github.com/godotengine/godot/pull/82973)). -- Use correct return pointer for validated calls that return `Variant` ([GH-83054](https://github.com/godotengine/godot/pull/83054)). -- Fix incorrect error message about vararg methods ([GH-83107](https://github.com/godotengine/godot/pull/83107)). -- Fix missing editor singletons when dumping extension api ([GH-83239](https://github.com/godotengine/godot/pull/83239)). -- Prevent issues with the editor trying to reload GDExtensions through its usual mechanism ([GH-83285](https://github.com/godotengine/godot/pull/83285)). -- Add brief description in GDExtension API dump with docs ([GH-83318](https://github.com/godotengine/godot/pull/83318)). -- Fix comment in `gdextension_interface.h` ([GH-83415](https://github.com/godotengine/godot/pull/83415)). -- Allow coexistence of GDScript and GDExtension virtual methods in the same object ([GH-83583](https://github.com/godotengine/godot/pull/83583)). -- Add `path` option to `ScriptLanguageExtension::_validate` ([GH-83588](https://github.com/godotengine/godot/pull/83588)). -- Fix `variant_iter_get()` actually calling `iter_next()` ([GH-83681](https://github.com/godotengine/godot/pull/83681)). -- Fixed error on loading extensions ([GH-83734](https://github.com/godotengine/godot/pull/83734)). -- Use `ObjectID` when creating custom callable ([GH-83800](https://github.com/godotengine/godot/pull/83800)). -- Linux: Disable `RTLD_DEEPBIND` mode for `dlopen()` in sanitizer builds ([GH-84210](https://github.com/godotengine/godot/pull/84210)). -- Save and compare modification times separately for reload ([GH-84315](https://github.com/godotengine/godot/pull/84315)). -- [iOS, GDExtension] Fix loading and exporting static libraries and xcframeworks ([GH-84493](https://github.com/godotengine/godot/pull/84493)). -- Change `GDExtension`'s `library_path` back to an absolute path ([GH-84620](https://github.com/godotengine/godot/pull/84620)). -- Remove Android specific abis from the export preset feature list ([GH-84720](https://github.com/godotengine/godot/pull/84720)). -- Check that `GDExtensionCompatHashes` are valid when generating `extension_api.json` ([GH-84973](https://github.com/godotengine/godot/pull/84973)). -- iOS: Fix GDExtension init callback array reallocation ([GH-85216](https://github.com/godotengine/godot/pull/85216)). +- Allow registering "runtime classes" from GDExtension ([GH-82554](https://github.com/godotengine/godot/pull/82554)). +- Add an interface for loading extra documentation ([GH-83747](https://github.com/godotengine/godot/pull/83747)). +- Fix some DEFVALs to use the right type ([GH-84906](https://github.com/godotengine/godot/pull/84906)). +- Fix updating cached singletons when reloading GDScripts ([GH-85373](https://github.com/godotengine/godot/pull/85373)). +- CI: Add 4.2-stable.expected file for GDExtension compatibility checks ([GH-85748](https://github.com/godotengine/godot/pull/85748)). +- Fix overriding `CollisionObject3D::_mouse_enter()` and `_mouse_exit()` from GDExtension ([GH-85870](https://github.com/godotengine/godot/pull/85870)). +- Fix operator documentation in GDExtension API dump with docs ([GH-86087](https://github.com/godotengine/godot/pull/86087)). +- Replace `GDVIRTUAL_CALL` with `GDVIRTUAL_REQUIRED_CALL` where applicable ([GH-86169](https://github.com/godotengine/godot/pull/86169)). +- Correctly register editor-only module classes with the API ([GH-86209](https://github.com/godotengine/godot/pull/86209)). +- Fix `ScriptLanguageExtension::_find_function` argument names ([GH-86520](https://github.com/godotengine/godot/pull/86520)). +- Distinguish between dynamic library not found and can't be opened ([GH-86682](https://github.com/godotengine/godot/pull/86682)). +- Fix Android dynamic library loading ([GH-86792](https://github.com/godotengine/godot/pull/86792)). +- Editor: Add missing virtual bind to `EditorNode3DGizmo(Plugin)` ([GH-86881](https://github.com/godotengine/godot/pull/86881)). +- Fix virtual calls for GDExtension in `CollisionObject2D` ([GH-86908](https://github.com/godotengine/godot/pull/86908)). +- Add renaming of PDB files to avoid blocking them ([GH-87117](https://github.com/godotengine/godot/pull/87117)). +- Allow GDExtensions to register virtual methods and call them on scripts ([GH-87758](https://github.com/godotengine/godot/pull/87758)). +- Expose `NOTIFICATION_EXTENSION_RELOADED` to `ClassDB` ([GH-87863](https://github.com/godotengine/godot/pull/87863)). +- Add null check for GDExtension deinitialization ([GH-87938](https://github.com/godotengine/godot/pull/87938)). +- Fix `gdextension_compat_hashes.cpp` for double precision builds ([GH-88188](https://github.com/godotengine/godot/pull/88188)). +- Fix loading GDExtension dependencies on Android ([GH-88381](https://github.com/godotengine/godot/pull/88381)). +- Allow GDExtensions to set a `compatibility_maximum` ([GH-88417](https://github.com/godotengine/godot/pull/88417)). +- Unbind GDExtension methods that can't reasonably be used ([GH-88418](https://github.com/godotengine/godot/pull/88418)). +- Fix `-Wtype-limits` warning in `compatibility_maximum` patch check ([GH-88527](https://github.com/godotengine/godot/pull/88527)). +- Expose OpenXR hand tracker handles ([GH-88566](https://github.com/godotengine/godot/pull/88566)). +- Allow registering "runtime classes" in modules (not just GDExtension) ([GH-88683](https://github.com/godotengine/godot/pull/88683)). +- Use godot-cpp 4.2 for the "Godot CPP" CI workflow ([GH-88736](https://github.com/godotengine/godot/pull/88736)). +- Fix calling ancestor methods on runtime classes ([GH-88870](https://github.com/godotengine/godot/pull/88870)). +- Add extension support for argument count to `ScriptInstance` ([GH-89050](https://github.com/godotengine/godot/pull/89050)). +- Pass count when freeing method and property lists for script instances ([GH-89055](https://github.com/godotengine/godot/pull/89055)). +- TextServer: Use GDVIRTUAL_REQUIRED_CALL for required extensions methods, update extension docs ([GH-89207](https://github.com/godotengine/godot/pull/89207)). +- OpenXR: Allow GDExtensions to provide multiple, ordered composition layers ([GH-89460](https://github.com/godotengine/godot/pull/89460)). +- Print correct path when unable to find GDExtension library ([GH-89677](https://github.com/godotengine/godot/pull/89677)). +- Bind constants related to 6DOF joints ([GH-89851](https://github.com/godotengine/godot/pull/89851)). +- Fix `Resource::get_rid override` not working in GDExtension ([GH-90273](https://github.com/godotengine/godot/pull/90273)). +- XR: Fix binds for composition layer virtuals ([GH-90391](https://github.com/godotengine/godot/pull/90391)). +- Use `likely()` in `PtrToArg<T *>` when checking for null `Object *`s ([GH-90394](https://github.com/godotengine/godot/pull/90394)). +- Fix GDExtension hot reload for classes not created via `ClassDB::instantiate()` ([GH-90447](https://github.com/godotengine/godot/pull/90447)). +- Defer call to `set_break_language` ([GH-90776](https://github.com/godotengine/godot/pull/90776)). +- Compatibility: Add stub for VisualShaderNodeComment ([GH-90797](https://github.com/godotengine/godot/pull/90797)). +- Expose `ClassDB::class_get_property_default_value` method ([GH-90916](https://github.com/godotengine/godot/pull/90916)). +- Fix missing library path breaking hot reloading ([GH-90961](https://github.com/godotengine/godot/pull/90961)). +- Fix GDExtension documentation disappearing after hot-reload ([GH-91126](https://github.com/godotengine/godot/pull/91126)). +- Fix ptrcalls to static GDExtension methods ([GH-91153](https://github.com/godotengine/godot/pull/91153)). +- Provide `free_property_list_func` with length of array ([GH-91179](https://github.com/godotengine/godot/pull/91179)). +- Bind compatibility GDExtension methods removed in #88418 ([GH-91502](https://github.com/godotengine/godot/pull/91502)). +- Generate docs from GDExtensions using `--gdextension-docs` with `--doctool` ([GH-91518](https://github.com/godotengine/godot/pull/91518)). +- Add default implementation of `ScriptLanguageExtension::preferred_file_name_casing` ([GH-91570](https://github.com/godotengine/godot/pull/91570)). +- Prevent crash during shutdown as singletons are deleted ([GH-91806](https://github.com/godotengine/godot/pull/91806)). +- Release Engine after unregistering GDExtensions ([GH-92060](https://github.com/godotengine/godot/pull/92060)). +- Don't use `ERR_PRINT_ONCE()` for runtime class error because it will hide errors ([GH-92216](https://github.com/godotengine/godot/pull/92216)). +- Fix `ClassDB` not checking for editor classes properly ([GH-92345](https://github.com/godotengine/godot/pull/92345)). +- [TextServer, GDExtension] Fix building text servers as GDExtension, expose new/changed low-level methods to GDExtension API ([GH-92715](https://github.com/godotengine/godot/pull/92715)). +- Use GDExtension `to_string` in Node ([GH-92827](https://github.com/godotengine/godot/pull/92827)). +- Make `profiling_get_frame_data` call the correct GDVIRTUAL method ([GH-93281](https://github.com/godotengine/godot/pull/93281)). +- Object: Use const correct `GDExtensionConstStringNamePtr` ([GH-93288](https://github.com/godotengine/godot/pull/93288)). +- Fix setting base class properties on a runtime class ([GH-94089](https://github.com/godotengine/godot/pull/94089)). +- GDExtension docs: Advise bindings to use `uint64_t` for bitfields ([GH-94307](https://github.com/godotengine/godot/pull/94307)). +- Fix to restore `library_path` as absolute path ([GH-94373](https://github.com/godotengine/godot/pull/94373)). #### GDScript -- Highlight doc comments in a different color ([GH-72751](https://github.com/godotengine/godot/pull/72751)). -- Fix jumping to function definition using `Ctrl+LMB` or the "Lookup Symbol" button ([GH-73196](https://github.com/godotengine/godot/pull/73196)). -- Improve GDScript identifier tokenization ([GH-73226](https://github.com/godotengine/godot/pull/73226)). -- Add code region folding to CodeEdit ([GH-74843](https://github.com/godotengine/godot/pull/74843)). -- Add raw string literals (r-strings) ([GH-74995](https://github.com/godotengine/godot/pull/74995)). -- Show script errors from depended scripts ([GH-75216](https://github.com/godotengine/godot/pull/75216)). -- Fix for not being able to ignore shadowing warnings on class scope ([GH-75620](https://github.com/godotengine/godot/pull/75620)). -- Add a script method to get its class icon ([GH-75656](https://github.com/godotengine/godot/pull/75656)). -- Improve call analysis ([GH-75988](https://github.com/godotengine/godot/pull/75988)). -- Support threads in the script debugger ([GH-76582](https://github.com/godotengine/godot/pull/76582)). -- Fix conflict between property and group names ([GH-78254](https://github.com/godotengine/godot/pull/78254)). -- Add error message when a GDScript resource fails to load ([GH-78540](https://github.com/godotengine/godot/pull/78540)). -- Check `get_node()` shorthand in static functions ([GH-78552](https://github.com/godotengine/godot/pull/78552)). -- Editor: Remove unused Class Name field from Create Script dialog ([GH-78573](https://github.com/godotengine/godot/pull/78573)). -- Fix incorrect error message for utility functions ([GH-78882](https://github.com/godotengine/godot/pull/78882)). -- Add `@deprecated` and `@experimental` doc comment tags ([GH-78941](https://github.com/godotengine/godot/pull/78941)). -- Fix regression with GDScript enum descriptions now showing up in documentation ([GH-78953](https://github.com/godotengine/godot/pull/78953)). -- Add static analysis error reporting in `GDScriptCache::get_full_script()` ([GH-79163](https://github.com/godotengine/godot/pull/79163)). -- Make onready variables created from dropping nodes include custom types ([GH-79198](https://github.com/godotengine/godot/pull/79198)). -- Solve `_populate_class_members()` cyclic dependency problem ([GH-79205](https://github.com/godotengine/godot/pull/79205)). -- Properly track extents of constants ([GH-79301](https://github.com/godotengine/godot/pull/79301)). -- Load global classes when running debug tests ([GH-79425](https://github.com/godotengine/godot/pull/79425)). -- Fix subscript resolution for constant non-metatypes ([GH-79510](https://github.com/godotengine/godot/pull/79510)). -- Change GDScript tests to use InstancePlaceholder as the example abstract class ([GH-79524](https://github.com/godotengine/godot/pull/79524)). -- Highlight comment markers (`TODO`, `FIXME`, etc.) ([GH-79761](https://github.com/godotengine/godot/pull/79761)). -- Fix bug with identifier shadowed below in current scope ([GH-79880](https://github.com/godotengine/godot/pull/79880)). -- Replace ptrcalls on MethodBind to validated calls ([GH-79893](https://github.com/godotengine/godot/pull/79893)). -- Add validation for `@export_node_path` annotation arguments ([GH-79935](https://github.com/godotengine/godot/pull/79935)). -- Optimize operators by assuming the types ([GH-79990](https://github.com/godotengine/godot/pull/79990)). -- Add constant string support for POT generator ([GH-80020](https://github.com/godotengine/godot/pull/80020)). -- Implement pattern guards for match statement ([GH-80085](https://github.com/godotengine/godot/pull/80085)). -- Fix regression with native signal not found ([GH-80165](https://github.com/godotengine/godot/pull/80165)). -- Add static typing for `for` loop variable ([GH-80247](https://github.com/godotengine/godot/pull/80247)). -- Assign temporary path to preloaded resources ([GH-80281](https://github.com/godotengine/godot/pull/80281)). -- Fix completion option location not found ([GH-80283](https://github.com/godotengine/godot/pull/80283)). -- Allow mixed indentation on blank lines ([GH-80365](https://github.com/godotengine/godot/pull/80365)). -- Fix `get_method` from named lambda ([GH-80506](https://github.com/godotengine/godot/pull/80506)). -- Fix "Identifier not found" error when accessing inner class from inside ([GH-80510](https://github.com/godotengine/godot/pull/80510)). -- Fix superfluous `"` in error message ([GH-80568](https://github.com/godotengine/godot/pull/80568)). -- Check if any global script class is shadowed by a variable ([GH-80587](https://github.com/godotengine/godot/pull/80587)). -- Fixes LSP connection error when launched in a separate thread ([GH-80686](https://github.com/godotengine/godot/pull/80686)). -- Improve DocGen ([GH-80745](https://github.com/godotengine/godot/pull/80745)). -- Fix expected argument count for `Callable` call errors ([GH-80844](https://github.com/godotengine/godot/pull/80844)). -- Fix lambda resolution with cyclic references ([GH-80923](https://github.com/godotengine/godot/pull/80923)). -- Allow using local constants as types ([GH-80964](https://github.com/godotengine/godot/pull/80964)). -- Language Server: Improve hovered symbol resolution, fix renaming bugs, implement reference lookup ([GH-80973](https://github.com/godotengine/godot/pull/80973)). -- Fix `_get_debug_tooltip` crash if tooltip string is too large ([GH-81018](https://github.com/godotengine/godot/pull/81018)). -- Fix highlighting of hex numbers with separators ([GH-81039](https://github.com/godotengine/godot/pull/81039)). -- Fix `get_*_list()` methods return incorrect info ([GH-81079](https://github.com/godotengine/godot/pull/81079)). -- Optimize GDScript VM codegen for MSVC ([GH-81200](https://github.com/godotengine/godot/pull/81200)). -- Fix subclass methods not inheriting RPC info ([GH-81201](https://github.com/godotengine/godot/pull/81201)). -- Fix an error when dragging nodes into built-in scripts because script does not inherit Node ([GH-81299](https://github.com/godotengine/godot/pull/81299)). -- Don't make array literal typed in weak type context ([GH-81332](https://github.com/godotengine/godot/pull/81332)). -- Add an optional `untyped_declaration` warning ([GH-81355](https://github.com/godotengine/godot/pull/81355)). -- Remove `REDUNDANT_FOR_VARIABLE_TYPE` warning ([GH-81440](https://github.com/godotengine/godot/pull/81440)). -- Fix compilation of expressions compiling other classes ([GH-81577](https://github.com/godotengine/godot/pull/81577)). -- Fix dumping of signal API parameters ([GH-81599](https://github.com/godotengine/godot/pull/81599)). -- Fix some lambda bugs ([GH-81605](https://github.com/godotengine/godot/pull/81605)). -- Fix lambda hot reloading ([GH-81628](https://github.com/godotengine/godot/pull/81628)). -- Fix POT generator crash on assignee with index ([GH-81653](https://github.com/godotengine/godot/pull/81653)). -- Fix and improve doc comment parsing ([GH-81699](https://github.com/godotengine/godot/pull/81699)). -- Add check for `super()` methods not being implemented ([GH-81808](https://github.com/godotengine/godot/pull/81808)). -- LSP: Fix autocomplete quote handling ([GH-81833](https://github.com/godotengine/godot/pull/81833)). -- LSP: Add `--lsp-port` as a command line argument ([GH-81844](https://github.com/godotengine/godot/pull/81844)). -- Rewrite a small comment in GDScript tokenizer code ([GH-81881](https://github.com/godotengine/godot/pull/81881)). -- Make array literal typed if `for` loop variable type is specified ([GH-82030](https://github.com/godotengine/godot/pull/82030)). -- GDScript DocGen: Fix and improve appearance of metatypes and values ([GH-82067](https://github.com/godotengine/godot/pull/82067)). -- Prevent constructing and inheriting engine singletons ([GH-82098](https://github.com/godotengine/godot/pull/82098)). -- Fix `--gdscript-docs` tool failing when autoloads are used in the project ([GH-82116](https://github.com/godotengine/godot/pull/82116)). -- Add `INFERRED_DECLARATION` warning ([GH-82139](https://github.com/godotengine/godot/pull/82139)). -- Fix duplication of inherited script properties ([GH-82186](https://github.com/godotengine/godot/pull/82186)). -- Fix crash with `GDScriptNativeClass` ([GH-82294](https://github.com/godotengine/godot/pull/82294)). -- Fix for GDScriptHighlighter dictionaries as function arguments ([GH-82326](https://github.com/godotengine/godot/pull/82326)). -- Add return type covariance and parameter type contravariance ([GH-82477](https://github.com/godotengine/godot/pull/82477)). -- Improve highlighting of types ([GH-82516](https://github.com/godotengine/godot/pull/82516)). -- Fix `UNSAFE_CALL_ARGUMENT` warning for `Variant` constructors ([GH-82547](https://github.com/godotengine/godot/pull/82547)). -- Core: Fix `Object::has_method()` for script static methods ([GH-82767](https://github.com/godotengine/godot/pull/82767)). -- Fix `native_type` is empty for autoload without script ([GH-82784](https://github.com/godotengine/godot/pull/82784)). -- Fix unresolved datatype for incomplete binary operator ([GH-82789](https://github.com/godotengine/godot/pull/82789)). -- Add error when exporting node in non `Node`-derived classes ([GH-82843](https://github.com/godotengine/godot/pull/82843)). -- Fixes internal Script Editor crash with External Editor active ([GH-82956](https://github.com/godotengine/godot/pull/82956)). -- Fix external editor hot reload for GDScript ([GH-82986](https://github.com/godotengine/godot/pull/82986)). -- Fix GDScript cache assigning UID as scene path ([GH-83039](https://github.com/godotengine/godot/pull/83039)). -- GDScript DocGen: Fix regression with return metatypes ([GH-83049](https://github.com/godotengine/godot/pull/83049)). -- Deleting unnecessary include in GDScriptParser ([GH-83050](https://github.com/godotengine/godot/pull/83050)). -- Fix modifying base script exports not propagating to derived scripts ([GH-83123](https://github.com/godotengine/godot/pull/83123)). -- Add autocompletion for static variables accessed via class ([GH-83150](https://github.com/godotengine/godot/pull/83150)). -- Code Editor: Fix regression with using doc comments for code regions ([GH-83216](https://github.com/godotengine/godot/pull/83216)). -- Fix unresolved datatype for incomplete expressions ([GH-83257](https://github.com/godotengine/godot/pull/83257)). -- Fix grammar typo in GDScript error message ([GH-83455](https://github.com/godotengine/godot/pull/83455)). -- Fix non-static call is allowed in static var lambda body ([GH-83486](https://github.com/godotengine/godot/pull/83486)). -- Fix `GDScriptCache::get_full_script` eating parsing errors because of early exit ([GH-83540](https://github.com/godotengine/godot/pull/83540)). -- Don't optimize division and modulo on debug ([GH-83569](https://github.com/godotengine/godot/pull/83569)). -- Fix comment typo in `gdscript_parser.h` ([GH-83792](https://github.com/godotengine/godot/pull/83792)). -- SCons: Fix build with GDScript LSP disabled ([GH-84191](https://github.com/godotengine/godot/pull/84191)). -- Fix lambda cross-thread dynamics (take 2) ([GH-85248](https://github.com/godotengine/godot/pull/85248)). -- Fix GDScript thread-exit routine assuming thread-enter was called ([GH-85432](https://github.com/godotengine/godot/pull/85432)). +- Add editor settings for autocompletion with NodePath and StringName ([GH-66481](https://github.com/godotengine/godot/pull/66481)). +- Add `@export_custom` annotation ([GH-72912](https://github.com/godotengine/godot/pull/72912)). +- Improve autocompletion with `get_node` ([GH-79386](https://github.com/godotengine/godot/pull/79386)). +- Update completion menu even if no options exist ([GH-79387](https://github.com/godotengine/godot/pull/79387)). +- Add module description in markdown ([GH-81345](https://github.com/godotengine/godot/pull/81345)). +- Documentation: Add support for deprecated/experimental messages ([GH-81458](https://github.com/godotengine/godot/pull/81458)). +- Include lambda dependencies ([GH-81629](https://github.com/godotengine/godot/pull/81629)). +- Change GDScriptDataType `container_element_type` to vector container ([GH-81662](https://github.com/godotengine/godot/pull/81662)). +- Add `@export_storage` annotation ([GH-82122](https://github.com/godotengine/godot/pull/82122)). +- Core: Allow methods of built-in `Variant` types to be used as Callables ([GH-82264](https://github.com/godotengine/godot/pull/82264)). +- Improve error messages for invalid indexing ([GH-82639](https://github.com/godotengine/godot/pull/82639)). +- Allow `@export`ed Arrays to set property hints for their elements ([GH-82952](https://github.com/godotengine/godot/pull/82952)). +- Fix `@warning_ignore` annotation issues ([GH-83037](https://github.com/godotengine/godot/pull/83037)). +- Allow empty parentheses for property getter declaration ([GH-83120](https://github.com/godotengine/godot/pull/83120)). +- Highlight code region comments ([GH-83220](https://github.com/godotengine/godot/pull/83220)). +- Fix `UNSAFE_CAST` warning ([GH-84043](https://github.com/godotengine/godot/pull/84043)). +- Fix crash when extending taken-over named class ([GH-84148](https://github.com/godotengine/godot/pull/84148)). +- Autocompletion: Mark datatype as constant for constant arrays ([GH-84492](https://github.com/godotengine/godot/pull/84492)). +- Fix autocompletion for enum members in the core classes ([GH-84532](https://github.com/godotengine/godot/pull/84532)). +- Fix autocompletion after DOLLAR token ([GH-84706](https://github.com/godotengine/godot/pull/84706)). +- Fix DAP breakpoints being cleared on closed scripts ([GH-84898](https://github.com/godotengine/godot/pull/84898)). +- Add unit test runner for autocompletion ([GH-85178](https://github.com/godotengine/godot/pull/85178)). +- Filter groups and categories from autocompletion ([GH-85196](https://github.com/godotengine/godot/pull/85196)). +- Handle global classes when resolving type from `PropertyInfo` ([GH-85215](https://github.com/godotengine/godot/pull/85215)). +- Prefer identifiers annotated type if assigned type is incompatible to it ([GH-85224](https://github.com/godotengine/godot/pull/85224)). +- Handle global classes when resolving property location ([GH-85239](https://github.com/godotengine/godot/pull/85239)). +- Generate `arghint` for script types ([GH-85382](https://github.com/godotengine/godot/pull/85382)). +- Suggest scene unique nodes in `get_node` autocompletion ([GH-85384](https://github.com/godotengine/godot/pull/85384)). +- Make annotations register statically in parser ([GH-85487](https://github.com/godotengine/godot/pull/85487)). +- Move "Expected indented block" error message's line number back to where the error is ([GH-85488](https://github.com/godotengine/godot/pull/85488)). +- Stop caching packed scenes in GDScript cache (on preload) ([GH-85501](https://github.com/godotengine/godot/pull/85501)). +- Speed up `GDScript::get_must_clear_dependencies()` ([GH-85603](https://github.com/godotengine/godot/pull/85603)). +- Make GDScriptAnalyzer aware of properties from other languages ([GH-85703](https://github.com/godotengine/godot/pull/85703)). +- Adjust `STATIC_CALLED_ON_INSTANCE` warning to not force native type ([GH-85918](https://github.com/godotengine/godot/pull/85918)). +- Fix accessing static function as `Callable` in static context ([GH-86088](https://github.com/godotengine/godot/pull/86088)). +- Fix POT generator skips some nodes ([GH-86091](https://github.com/godotengine/godot/pull/86091)). +- Fix regression when autocompleting subscript on get node ([GH-86111](https://github.com/godotengine/godot/pull/86111)). +- Fix type highlighting ([GH-86176](https://github.com/godotengine/godot/pull/86176)). +- Fix the autocomplete function for the `self` keyword ([GH-86341](https://github.com/godotengine/godot/pull/86341)). +- Fix POT generator skips some nodes (part 2) ([GH-86471](https://github.com/godotengine/godot/pull/86471)). +- Fix symbol lookup in index subscript ([GH-86554](https://github.com/godotengine/godot/pull/86554)). +- Lambda hotswap fixes ([GH-86569](https://github.com/godotengine/godot/pull/86569)). +- Improve sorting of enum autocompletion ([GH-86667](https://github.com/godotengine/godot/pull/86667)). +- Hot-reload changed scripts only ([GH-86676](https://github.com/godotengine/godot/pull/86676)). +- Add `StringName` support to `@GDScript.len` ([GH-86704](https://github.com/godotengine/godot/pull/86704)). +- Allow utility functions to be used as `Callable` ([GH-86823](https://github.com/godotengine/godot/pull/86823)). +- Allow specifying a scene in completion tests ([GH-86961](https://github.com/godotengine/godot/pull/86961)). +- Add tests for `get_node` autocompletion ([GH-86973](https://github.com/godotengine/godot/pull/86973)). +- Improve error message when a GDScript instance fails to be constructed ([GH-86999](https://github.com/godotengine/godot/pull/86999)). +- Simplify script paths to ensure proper resource path checks ([GH-87124](https://github.com/godotengine/godot/pull/87124)). +- Handle GDScript in `_type_from_variant` for autocompletion ([GH-87278](https://github.com/godotengine/godot/pull/87278)). +- Allow `free()` to be used as Callable ([GH-87294](https://github.com/godotengine/godot/pull/87294)). +- Better hide internal properties from users ([GH-87381](https://github.com/godotengine/godot/pull/87381)). +- Use autoload singleton name in `GDScriptDocGen` ([GH-87421](https://github.com/godotengine/godot/pull/87421)). +- Make `GDScriptUtilityCallable` return call error when method is invalid ([GH-87783](https://github.com/godotengine/godot/pull/87783)). +- Add `is not` operator ([GH-87939](https://github.com/godotengine/godot/pull/87939)). +- Prevent running `String` number functions on invalid literal ([GH-87941](https://github.com/godotengine/godot/pull/87941)). +- Set `has_type` false if it is `BUILTIN` but `Variant::NIL` ([GH-88020](https://github.com/godotengine/godot/pull/88020)). +- Enable Add Type Hints editor setting by default ([GH-88026](https://github.com/godotengine/godot/pull/88026)). +- Fix NodePath autocompletion to ensure paths are quoted when required ([GH-88071](https://github.com/godotengine/godot/pull/88071)). +- Add fallback argument hints for default values ([GH-88211](https://github.com/godotengine/godot/pull/88211)). +- Fix type highlighting after whitespace ([GH-88876](https://github.com/godotengine/godot/pull/88876)). +- Clean up some unused code ([GH-88899](https://github.com/godotengine/godot/pull/88899)). +- Core: Add `Callable.create` static method for `Variant` callables ([GH-88948](https://github.com/godotengine/godot/pull/88948)). +- Fix some test file paths ([GH-89151](https://github.com/godotengine/godot/pull/89151)). +- Fix use after free in `GDScriptLanguage::debug_get_globals` ([GH-89274](https://github.com/godotengine/godot/pull/89274)). +- Allow LSP to process multiple messages per poll ([GH-89284](https://github.com/godotengine/godot/pull/89284)). +- Fix enum autocompletion for core classes ([GH-89382](https://github.com/godotengine/godot/pull/89382)). +- Update `@GDScript` documentation ([GH-89484](https://github.com/godotengine/godot/pull/89484)). +- Fix missing gutter icon for inner class method overrides ([GH-89545](https://github.com/godotengine/godot/pull/89545)). +- Fix object iterator opcodes ([GH-89639](https://github.com/godotengine/godot/pull/89639)). +- Correctly report invalid read-only access ([GH-89648](https://github.com/godotengine/godot/pull/89648)). +- Fix `for` expression is highlighted as type ([GH-89659](https://github.com/godotengine/godot/pull/89659)). +- Improve DocGen for non-constant expressions ([GH-89738](https://github.com/godotengine/godot/pull/89738)). +- Completion Tests: Add script to owner ([GH-89884](https://github.com/godotengine/godot/pull/89884)). +- Fix uninitialized local variables not being reset ([GH-89990](https://github.com/godotengine/godot/pull/89990)). +- Fix errors when renaming/moving/deleting global scripts ([GH-90186](https://github.com/godotengine/godot/pull/90186)). +- Don't pass `self` when calling a static function from a non-static context ([GH-90223](https://github.com/godotengine/godot/pull/90223)). +- Fix multiline array/dictionary match statements ([GH-90373](https://github.com/godotengine/godot/pull/90373)). +- Add tests for signal await with parameters ([GH-90398](https://github.com/godotengine/godot/pull/90398)). +- Fix highlighting escapes in multiline raw strings ([GH-90419](https://github.com/godotengine/godot/pull/90419)). +- Don't warn on unassigned for builtin-typed variables ([GH-90442](https://github.com/godotengine/godot/pull/90442)). +- Infer type with string format operator ([GH-90448](https://github.com/godotengine/godot/pull/90448)). +- Register the export info correctly when a script is used as the variable type for Node ([GH-90487](https://github.com/godotengine/godot/pull/90487)). +- Resolve types from autoload scenes ([GH-90498](https://github.com/godotengine/godot/pull/90498)). +- Assume constructor to be accessible from class ([GH-90552](https://github.com/godotengine/godot/pull/90552)). +- Allow casting enum to int ([GH-90580](https://github.com/godotengine/godot/pull/90580)). +- Fix out of date errors in depended scripts ([GH-90601](https://github.com/godotengine/godot/pull/90601)). +- Fix some export annotation issues ([GH-90716](https://github.com/godotengine/godot/pull/90716)). +- Warn when enum variable has no default ([GH-90756](https://github.com/godotengine/godot/pull/90756)). +- Suppress unused constant warning with underscore ([GH-90794](https://github.com/godotengine/godot/pull/90794)). +- LSP: Have `GDScriptWorkspace::list_script_files` respect `.gdignore` ([GH-90949](https://github.com/godotengine/godot/pull/90949)). +- Fix test `reset_uninit_local_vars.gd` failure ([GH-91120](https://github.com/godotengine/godot/pull/91120)). +- Perform validated calls with static methods ([GH-91192](https://github.com/godotengine/godot/pull/91192)). +- Call implicit ready on base script first ([GH-91364](https://github.com/godotengine/godot/pull/91364)). +- Fix access non-static members in static context ([GH-91412](https://github.com/godotengine/godot/pull/91412)). +- Initialize static variables with defaults in-editor ([GH-91472](https://github.com/godotengine/godot/pull/91472)). +- Autocompletion: Analyze CLASS types as they are encountered ([GH-91653](https://github.com/godotengine/godot/pull/91653)). +- Show custom icons in autocompletion suggestions ([GH-91923](https://github.com/godotengine/godot/pull/91923)). +- Add support for `atr` and `atr_n` to POT generator ([GH-91951](https://github.com/godotengine/godot/pull/91951)). +- Fix `STANDALONE_EXPRESSION` warning for `preload()` ([GH-92027](https://github.com/godotengine/godot/pull/92027)). +- Fix segfault on invalid script ([GH-92035](https://github.com/godotengine/godot/pull/92035)). +- Fix broken built-in script reloading ([GH-92177](https://github.com/godotengine/godot/pull/92177)). +- Fix lambdas capturing non-local variables ([GH-92241](https://github.com/godotengine/godot/pull/92241)). +- Fix completion for `new` arguments ([GH-92251](https://github.com/godotengine/godot/pull/92251)). +- Fix synchronization of global class name ([GH-92303](https://github.com/godotengine/godot/pull/92303)). +- DAP: Add `--dap-port` as a command line argument ([GH-92336](https://github.com/godotengine/godot/pull/92336)). +- [GDScript LSP] Fix `show_native_symbol_in_editor` ([GH-92386](https://github.com/godotengine/godot/pull/92386)). +- Fix subscript resolution on constant non-metatype GDScript base ([GH-92544](https://github.com/godotengine/godot/pull/92544)). +- Do not produce `INFERRED_DECLARATION` on type import ([GH-92558](https://github.com/godotengine/godot/pull/92558)). +- Partially allow member lookup on invalid scripts ([GH-92609](https://github.com/godotengine/godot/pull/92609)). +- Invalidate cached parser chain when reloading ([GH-92616](https://github.com/godotengine/godot/pull/92616)). +- Add more autocompletion tests ([GH-92688](https://github.com/godotengine/godot/pull/92688)). +- Editor: Hide GDScript internal functions from method selectors ([GH-92802](https://github.com/godotengine/godot/pull/92802)). +- Add coloring for completion of Color components ([GH-92874](https://github.com/godotengine/godot/pull/92874)). +- Fix goto definition for `new` method ([GH-92885](https://github.com/godotengine/godot/pull/92885)). +- Avoid deadlock possibility in multi-threaded load ([GH-93032](https://github.com/godotengine/godot/pull/93032)). +- Autocompletion: Add support for string name option in more places ([GH-93057](https://github.com/godotengine/godot/pull/93057)). +- Fix mismatched external parser with binary exports ([GH-93166](https://github.com/godotengine/godot/pull/93166)). +- Enhance handling of cyclic dependencies ([GH-93346](https://github.com/godotengine/godot/pull/93346)). +- Fix non-global class export ([GH-93384](https://github.com/godotengine/godot/pull/93384)). +- Fix symbol lookup for native enums ([GH-93566](https://github.com/godotengine/godot/pull/93566)). +- Fix editor crash when invalid global class script path ([GH-93575](https://github.com/godotengine/godot/pull/93575)). +- Add `CONFUSABLE_CAPTURE_REASSIGNMENT` warning ([GH-93691](https://github.com/godotengine/godot/pull/93691)). +- Fix false positive `CONFUSABLE_CAPTURE_REASSIGNMENT` warnings ([GH-93699](https://github.com/godotengine/godot/pull/93699)). +- Autocompletion: Don't use `in` operator to decide over variant lookup ([GH-93815](https://github.com/godotengine/godot/pull/93815)). +- Fix GDScript analyzer error when instantiating EditorPlugins ([GH-93942](https://github.com/godotengine/godot/pull/93942)). +- Fix `get_argument_count` for lambda `Callable`s ([GH-93964](https://github.com/godotengine/godot/pull/93964)). +- Fix implicit cast to typed array when passing parameter ([GH-94025](https://github.com/godotengine/godot/pull/94025)). +- Fix `get_method` for lambda self `Callable`s ([GH-94076](https://github.com/godotengine/godot/pull/94076)). +- Fix "Mismatched external parser" for autoloads ([GH-94131](https://github.com/godotengine/godot/pull/94131)). +- Call setter on simple setter chain without getter ([GH-94138](https://github.com/godotengine/godot/pull/94138)). +- Make errors on `RefCounted.free()` more accurate ([GH-94238](https://github.com/godotengine/godot/pull/94238)). +- Restore support for `Token::UNDERSCORE` in identifiers ([GH-94327](https://github.com/godotengine/godot/pull/94327)). +- Autocompletion: Register depended parsers with the main parser ([GH-94424](https://github.com/godotengine/godot/pull/94424)). +- Speed up `GDScriptLanguage::finish` ([GH-94505](https://github.com/godotengine/godot/pull/94505)). +- Fix false positive cases of `ENUM_VARIABLE_WITHOUT_DEFAULT` ([GH-94635](https://github.com/godotengine/godot/pull/94635)). +- Fix incorrect default values in `_make_arguments_hint()` ([GH-94664](https://github.com/godotengine/godot/pull/94664)). +- Fix incorrect setter call for reference types ([GH-94674](https://github.com/godotengine/godot/pull/94674)). +- GDScriptTestRunner: Fix compiler error output ([GH-94676](https://github.com/godotengine/godot/pull/94676)). +- GDScriptCache: Clear abandoned parser refs ([GH-94678](https://github.com/godotengine/godot/pull/94678)). +- Fix locals clearing after exiting `while` block ([GH-94730](https://github.com/godotengine/godot/pull/94730)). +- Fix common mismatched external parser errors (second try) ([GH-94871](https://github.com/godotengine/godot/pull/94871)). +- Fix unnecessary calls to `remove_parser` ([GH-95115](https://github.com/godotengine/godot/pull/95115)). +- Fix resolve class inheritance after file rename ([GH-95330](https://github.com/godotengine/godot/pull/95330)). #### GUI -- Add option to allow echo events in menu shortcuts ([GH-36493](https://github.com/godotengine/godot/pull/36493)). -- Expose and rename ItemList's `_check_shape_changed` to `force_update_list_size` ([GH-63634](https://github.com/godotengine/godot/pull/63634)). -- Add Duplicate Lines shortcut to CodeTextEditor ([GH-66553](https://github.com/godotengine/godot/pull/66553)). -- Refactor `mouse_entered` and `mouse_exited` signals ([GH-67791](https://github.com/godotengine/godot/pull/67791)). -- Fix cursor behavior for multiselect in Tree while holding CTRL ([GH-71024](https://github.com/godotengine/godot/pull/71024)). -- Fix code completion override of home and end keys ([GH-71519](https://github.com/godotengine/godot/pull/71519)). -- ItemList: Clarify distinction between disabled and selected in sending signals ([GH-74250](https://github.com/godotengine/godot/pull/74250)). -- Add `inner_item_margin_*` Theme constants to the Tree control ([GH-75460](https://github.com/godotengine/godot/pull/75460)). -- Expose finding valid focus neighbors of a `Control` by side ([GH-76027](https://github.com/godotengine/godot/pull/76027)). -- Fix RichTextLabel character line and paragraph index getters ([GH-76759](https://github.com/godotengine/godot/pull/76759)). -- Add a `[pulse]` built-in effect to RichTextLabel ([GH-77117](https://github.com/godotengine/godot/pull/77117)). -- Fix unnecessary break when calculating the height of visible lines ([GH-77280](https://github.com/godotengine/godot/pull/77280)). -- Prevent disappearance of mouse when SpinBox is hidden while dragging ([GH-77804](https://github.com/godotengine/godot/pull/77804)). -- Make it possible to change character transform in RichTextEffect ([GH-77819](https://github.com/godotengine/godot/pull/77819)). -- Add `loop` property to VideoStreamPlayer ([GH-77857](https://github.com/godotengine/godot/pull/77857)). -- Expose VideoStreamPlayer video length ([GH-77858](https://github.com/godotengine/godot/pull/77858)). -- Ensure that `_drop_physics_mouseover` only happens when necessary ([GH-78078](https://github.com/godotengine/godot/pull/78078)). -- Use S, V in hue bar of ColorPicker ([GH-78100](https://github.com/godotengine/godot/pull/78100)). -- Move registration of `fallbacks` property in the base Font class ([GH-78266](https://github.com/godotengine/godot/pull/78266)). -- Add ability to set the tooltip text of a `TreeItem` button ([GH-78393](https://github.com/godotengine/godot/pull/78393)). -- Make GraphEdit's cpp virtuals equal to gdscript ([GH-78426](https://github.com/godotengine/godot/pull/78426)). -- Fix ColorPicker margin theme property ([GH-78468](https://github.com/godotengine/godot/pull/78468)). -- Embedded Popups store their safe_rect in their embedder ([GH-78476](https://github.com/godotengine/godot/pull/78476)). -- Fix text overlapping icon in `Tree` ([GH-78756](https://github.com/godotengine/godot/pull/78756)). -- Enable `InputEvent`-filtering in `SubViewportContainer` ([GH-78762](https://github.com/godotengine/godot/pull/78762)). -- Fix disabled slider highlighting ([GH-78776](https://github.com/godotengine/godot/pull/78776)). -- Fix delay on tab resizing when (un)hovering tabs ([GH-78777](https://github.com/godotengine/godot/pull/78777)). -- Fix invalid minimum size for translated messages in option button ([GH-78835](https://github.com/godotengine/godot/pull/78835)). -- Fix incorrect property names in `FontFile::_get_property_list()` ([GH-78907](https://github.com/godotengine/godot/pull/78907)). -- Add compatibility properties to `TouchScreenButton` ([GH-78940](https://github.com/godotengine/godot/pull/78940)). -- RTL: Add `pop_all`, `push_context` and `pop_context` methods, and use it for `print_rich` to avoid unclosed tags ([GH-79011](https://github.com/godotengine/godot/pull/79011)). -- Move cached values into `color_mode.cpp` and apply fixes to OKHSL ([GH-79037](https://github.com/godotengine/godot/pull/79037)). -- Bind missing default value for `RichTextLabel` methods ([GH-79053](https://github.com/godotengine/godot/pull/79053)). -- Rename `button_pressed` default signal binding to avoid shadowing ([GH-79064](https://github.com/godotengine/godot/pull/79064)). -- Revert "Fix focusloss of non-exclusive `AcceptDialog` with `close_on_escape`" ([GH-79084](https://github.com/godotengine/godot/pull/79084)). -- Allow to focus individual tabs in `TabBar`/`TabContainer` ([GH-79104](https://github.com/godotengine/godot/pull/79104)). -- Enabled missing Tree title button font and font size theme settings ([GH-79165](https://github.com/godotengine/godot/pull/79165)). -- Debug CanvasItem redraw ([GH-79169](https://github.com/godotengine/godot/pull/79169)). -- Deselect curve point with RMB on the empty space ([GH-79175](https://github.com/godotengine/godot/pull/79175)). -- Add `closed` property to Line2D ([GH-79182](https://github.com/godotengine/godot/pull/79182)). -- Update FileDialog button activity when `file_mode` is changed ([GH-79211](https://github.com/godotengine/godot/pull/79211)). -- Make `SubViewportContainer` event propagation aware of focused Control ([GH-79248](https://github.com/godotengine/godot/pull/79248)). -- HarfBuzz: Update to version 8.0.0 ([GH-79260](https://github.com/godotengine/godot/pull/79260)). -- ICU4C: Update to version 73.2 ([GH-79272](https://github.com/godotengine/godot/pull/79272)). -- FreeType: Update to version 2.13.1 ([GH-79273](https://github.com/godotengine/godot/pull/79273)). -- Check `FLAG_POPUP` to close an AcceptDialog when parent is focused ([GH-79293](https://github.com/godotengine/godot/pull/79293)). -- Remove GraphNode's comment property and related functionality ([GH-79307](https://github.com/godotengine/godot/pull/79307)). -- Clean up/refactor GraphEdit ([GH-79308](https://github.com/godotengine/godot/pull/79308)). -- Clean up/refactor GraphNode and make it more flexible ([GH-79311](https://github.com/godotengine/godot/pull/79311)). -- Fix `Tree` performance regression by using cache ([GH-79325](https://github.com/godotengine/godot/pull/79325)). -- macOS: Add `about_to_open` and `popup_hide` callback for the global menus ([GH-79361](https://github.com/godotengine/godot/pull/79361)). -- Add a default theme for unfocused Windows ([GH-79393](https://github.com/godotengine/godot/pull/79393)). -- Fix Button clipping when internal margins exist ([GH-79455](https://github.com/godotengine/godot/pull/79455)). -- Fix native popups auto-closing when interacting with non-client area ([GH-79456](https://github.com/godotengine/godot/pull/79456)). -- Make `OptionButton` resize when disabling "Fit to Longest Item" ([GH-79494](https://github.com/godotengine/godot/pull/79494)). -- Add drag'n'drop text option for `LineEdit` and `RichTextLabel` ([GH-79563](https://github.com/godotengine/godot/pull/79563)). -- macOS: Fix uncapped frame rate for windows in the non-active workspaces ([GH-79572](https://github.com/godotengine/godot/pull/79572)). -- Fix `root_node_layout_direction` project setting being incorrectly exposed as a range ([GH-79611](https://github.com/godotengine/godot/pull/79611)). -- Fix corner radius not scaling with theme scale in the default theme ([GH-79640](https://github.com/godotengine/godot/pull/79640)). -- Snap CharFX offset to nearest pixel when setting is enabled ([GH-79705](https://github.com/godotengine/godot/pull/79705)). -- Remove spaces from input of HTML color in color picker ([GH-79782](https://github.com/godotengine/godot/pull/79782)). -- Correctly display tooltips for buttons in Tree when they overlap cell content ([GH-79792](https://github.com/godotengine/godot/pull/79792)). -- Prevent SubViewportContainer overriding Subviewport's cursor with its own cursor ([GH-79805](https://github.com/godotengine/godot/pull/79805)). -- RichTextLabel: Ensure the `select_all` function selects all items ([GH-79818](https://github.com/godotengine/godot/pull/79818)). -- [Text Server] Fix ellipsis outline drawing ([GH-79844](https://github.com/godotengine/godot/pull/79844)). -- Label: Remove extra line spacing from Label minimum size calculations ([GH-79913](https://github.com/godotengine/godot/pull/79913)). -- Fix Tree check propagation not unchecking parent items ([GH-79946](https://github.com/godotengine/godot/pull/79946)). -- Free submenu children when clearing PopupMenu ([GH-79965](https://github.com/godotengine/godot/pull/79965)). -- Expose `Window`'s `_get_contents_minimum_size()` to scripting ([GH-80178](https://github.com/godotengine/godot/pull/80178)). -- Handle potential platform-specific `Window` mouse-enter/exit bugs gracefully ([GH-80187](https://github.com/godotengine/godot/pull/80187)). -- Add shortcut handling to `OptionButton` ([GH-80203](https://github.com/godotengine/godot/pull/80203)). -- Improve `Window._get_contents_minimum_size()`'s code ([GH-80219](https://github.com/godotengine/godot/pull/80219)). -- Expose the `TabBar` of a `TabContainer` ([GH-80227](https://github.com/godotengine/godot/pull/80227)). -- Fix scrolling `PopupMenu` on keyboard/controller input ([GH-80271](https://github.com/godotengine/godot/pull/80271)). -- Further separate icon from text of buttons in both editor and default themes ([GH-80285](https://github.com/godotengine/godot/pull/80285)). -- Dismiss currently visible or upcoming tooltips when pressing Escape ([GH-80364](https://github.com/godotengine/godot/pull/80364)). -- Fix `OptionButton` minimum size when "Fit Longest Item" is enabled ([GH-80366](https://github.com/godotengine/godot/pull/80366)). -- Fix `Button` text when the overrun behavior is other than "No Trimming" ([GH-80402](https://github.com/godotengine/godot/pull/80402)). -- RTL: Add support for image dynamic updating, padding, tooltips and size in percent ([GH-80410](https://github.com/godotengine/godot/pull/80410)). -- Fix CodeEdit completion being very slow in certain cases ([GH-80472](https://github.com/godotengine/godot/pull/80472)). -- Support other input methods on Popup/Dialogs' `_input_from_window` ([GH-80594](https://github.com/godotengine/godot/pull/80594)). -- [Bitmap fonts] Add support for scaling ([GH-80605](https://github.com/godotengine/godot/pull/80605)). -- RTL: Improve scroll bar responsiveness during updates ([GH-80606](https://github.com/godotengine/godot/pull/80606)). -- Add buttons to reorder inspector array items without dragging ([GH-80617](https://github.com/godotengine/godot/pull/80617)). -- Fix 2D/3D viewport context switching issues when script editor is floating ([GH-80647](https://github.com/godotengine/godot/pull/80647)). -- TextServer: Fix system font fallback and caret/selection behavior for composite characters ([GH-80650](https://github.com/godotengine/godot/pull/80650)). -- Allow comma as a decimal separator for SpinBox ([GH-80699](https://github.com/godotengine/godot/pull/80699)). -- TextServer: Fix issues with character breaks, add more tests ([GH-80777](https://github.com/godotengine/godot/pull/80777)). -- Fix crash when hiding subwindow during popup of new subwindow ([GH-80780](https://github.com/godotengine/godot/pull/80780)). -- Exit early in `TextEdit::_get_column_pos_of_word` to improve highlight performance ([GH-80809](https://github.com/godotengine/godot/pull/80809)). -- Fix "Go to parent folder" in `EditorFileDialog` ([GH-80821](https://github.com/godotengine/godot/pull/80821)). -- RTL: Fix `remove_paragraph` crashes ([GH-80847](https://github.com/godotengine/godot/pull/80847)). -- RTL: Adds "lang" tag to allow overriding language specific text rendering without starting a new paragraph ([GH-80848](https://github.com/godotengine/godot/pull/80848)). -- RTL: Improve performance by using list iterators for item/paragraph removal ([GH-80857](https://github.com/godotengine/godot/pull/80857)). -- Fix ColorPicker deferred mode not working for sliders ([GH-80916](https://github.com/godotengine/godot/pull/80916)). -- TextServer: Store extra spacing of individual font variations ([GH-80954](https://github.com/godotengine/godot/pull/80954)). -- Deselect multi caret when alt clicking on it ([GH-80956](https://github.com/godotengine/godot/pull/80956)). -- FileDialog: Avoid selecting the first item automatically in Open Folder Mode ([GH-81034](https://github.com/godotengine/godot/pull/81034)). -- Fix setting TabContainer's `font_hovered_color` theme property ([GH-81040](https://github.com/godotengine/godot/pull/81040)). -- RTL: Fix character line index for non-visual characters and characters on the line edge ([GH-81064](https://github.com/godotengine/godot/pull/81064)). -- Move default theme files to `scene/theme` ([GH-81065](https://github.com/godotengine/godot/pull/81065)). -- Only allow finite numbers in `Range.value` ([GH-81076](https://github.com/godotengine/godot/pull/81076)). -- Fix SpinBox not clearing text on improper input ([GH-81094](https://github.com/godotengine/godot/pull/81094)). -- TextServer: Fix SVG emoji placement ([GH-81103](https://github.com/godotengine/godot/pull/81103)). -- Fix a crash when plugin tries to call `make_mesh_previews` on enable ([GH-81121](https://github.com/godotengine/godot/pull/81121)). -- Unfocus LineEdit when pressing Escape ([GH-81128](https://github.com/godotengine/godot/pull/81128)). -- Implement a system to contextualize global themes ([GH-81130](https://github.com/godotengine/godot/pull/81130)). -- ItemList: Draw separators before selected style boxes ([GH-81155](https://github.com/godotengine/godot/pull/81155)). -- Fix TreeItem range slider not working properly ([GH-81174](https://github.com/godotengine/godot/pull/81174)). -- Fix ItemList not updating when icon scale changes ([GH-81268](https://github.com/godotengine/godot/pull/81268)). -- Fix ThemeDB initialization in tests ([GH-81305](https://github.com/godotengine/godot/pull/81305)). -- Register theme properties with ThemeDB ([GH-81312](https://github.com/godotengine/godot/pull/81312)). -- Update and properly list versions of the built-in fonts ([GH-81326](https://github.com/godotengine/godot/pull/81326)). -- Fix `TextEdit.get_rect_at_line_column returning` negative pos even though cursor is in viewable area of the control ([GH-81354](https://github.com/godotengine/godot/pull/81354)). -- TextServer: Use locale or first span language to select preferred direction for neutral text ([GH-81361](https://github.com/godotengine/godot/pull/81361)). -- Remove unnecessary validity checks from `Button` and `TextureRect` ([GH-81383](https://github.com/godotengine/godot/pull/81383)). -- Fix TextEdit placeholder with Inherited text direction ([GH-81396](https://github.com/godotengine/godot/pull/81396)). -- TextServer: Pass Dictionary properties by value and check property values instead of references ([GH-81406](https://github.com/godotengine/godot/pull/81406)). -- Fix subpixel layouts in text rendering ([GH-81438](https://github.com/godotengine/godot/pull/81438)). -- LineEdit: Update line edit offset on text delete ([GH-81443](https://github.com/godotengine/godot/pull/81443)). -- Correctly setup tooltip's style as theme variation ([GH-81463](https://github.com/godotengine/godot/pull/81463)). -- Fix submenu alignment with parent menu item ([GH-81477](https://github.com/godotengine/godot/pull/81477)). -- Fix accessing editor theme items throughout the UI ([GH-81516](https://github.com/godotengine/godot/pull/81516)). -- Hide the `dialog_text` property from `FileDialog` ([GH-81546](https://github.com/godotengine/godot/pull/81546)). -- Bind remaining theme properties to their respective classes ([GH-81551](https://github.com/godotengine/godot/pull/81551)). -- Improve the looks of 2D/3D viewport contextual toolbars ([GH-81557](https://github.com/godotengine/godot/pull/81557)). -- Use bound theme properties for documentation ([GH-81573](https://github.com/godotengine/godot/pull/81573)). -- Make `GraphEdit` toolbar more customizable ([GH-81582](https://github.com/godotengine/godot/pull/81582)). -- Fix GraphEdit port valid connections incorrectly checking sides ([GH-81600](https://github.com/godotengine/godot/pull/81600)). -- Expose `PopupMenu` `activate_item_by_event` method ([GH-81621](https://github.com/godotengine/godot/pull/81621)). -- Fix SpinBox will reset unsubmitted text when redrawing ([GH-81638](https://github.com/godotengine/godot/pull/81638)). -- Remove the equality check for `TabBar.set_tab_metadata` ([GH-81648](https://github.com/godotengine/godot/pull/81648)). -- Enable transparent background for GUI tooltips ([GH-81669](https://github.com/godotengine/godot/pull/81669)). -- Connect `CodeHighlighter` with `TextEdit` without friend-access ([GH-81921](https://github.com/godotengine/godot/pull/81921)). -- Replace flat buttons with flat-styled buttons with a visible pressed state ([GH-81939](https://github.com/godotengine/godot/pull/81939)). -- Check for type variations in inherited themes ([GH-82218](https://github.com/godotengine/godot/pull/82218)). -- Fix tooltips behaving incorrectly on `Tree` nodes ([GH-82226](https://github.com/godotengine/godot/pull/82226)). -- Add Font and Mesh icons that aren't grayed out ([GH-82302](https://github.com/godotengine/godot/pull/82302)). -- Rename close requests to delete requests in `GraphEdit` ([GH-82370](https://github.com/godotengine/godot/pull/82370)). -- Make hovered tabs be drawn with the unselected's width at minimum ([GH-82384](https://github.com/godotengine/godot/pull/82384)). -- Document, cleanup and fix some theme properties ([GH-82409](https://github.com/godotengine/godot/pull/82409)). -- TextServer: Store font extra spacing variations without making a full copy of font ([GH-82475](https://github.com/godotengine/godot/pull/82475)). -- FileDialog: Make `set_visible` compatible with native dialogs ([GH-82552](https://github.com/godotengine/godot/pull/82552)). -- Tweak the region folding icons ([GH-82653](https://github.com/godotengine/godot/pull/82653)). -- Fix storing invalid item height values in `ItemList` ([GH-82660](https://github.com/godotengine/godot/pull/82660)). -- SystemFont: Check name when selecting the best matching face from a collection ([GH-82712](https://github.com/godotengine/godot/pull/82712)). -- [File Dialog] Do not open native file dialogs in the edited scene ([GH-82743](https://github.com/godotengine/godot/pull/82743)). -- Organize TextEdit's inspector ([GH-82776](https://github.com/godotengine/godot/pull/82776)). -- Place LineEdit secret in its own section ([GH-82811](https://github.com/godotengine/godot/pull/82811)). -- Accept cancel event when unfocusing LineEdit ([GH-82914](https://github.com/godotengine/godot/pull/82914)). -- Fix right-click menu position for the debugger breakpoint tree ([GH-82924](https://github.com/godotengine/godot/pull/82924)). -- RTL: Remove unnecessary glyph position rounding ([GH-82970](https://github.com/godotengine/godot/pull/82970)). -- Do not apply extra spacing twice ([GH-83062](https://github.com/godotengine/godot/pull/83062)). -- Allow clicking buttons of non-selectable TreeItems ([GH-83065](https://github.com/godotengine/godot/pull/83065)). -- Remove vertical scrollbar padding from line width calc ([GH-83286](https://github.com/godotengine/godot/pull/83286)). -- Fix phantom tab right button ([GH-83296](https://github.com/godotengine/godot/pull/83296)). -- Fix incorrect offset of `PopupMenu` separator icons ([GH-83517](https://github.com/godotengine/godot/pull/83517)). -- Add bulk change guards to successive theme overrides in Editor and GUI ([GH-83626](https://github.com/godotengine/godot/pull/83626)). -- Fix `TabBar` and `TabContainer` dragging issues ([GH-83637](https://github.com/godotengine/godot/pull/83637)). -- Fix missing initial position modes for the main window ([GH-83824](https://github.com/godotengine/godot/pull/83824)). -- TextServerAdvanced: Keep dynamically loaded ICU data in memory ([GH-83827](https://github.com/godotengine/godot/pull/83827)). -- Increase precision of RAW mode in ColorPicker ([GH-83851](https://github.com/godotengine/godot/pull/83851)). -- Fix GraphNode slot index inconsistency ([GH-83892](https://github.com/godotengine/godot/pull/83892)). -- Save current tab in `TabBar` and `TabContainer` ([GH-83893](https://github.com/godotengine/godot/pull/83893)). -- Fix BaseButton `shortcut_feedback`'s timer will raise error when the button is removed from the scene tree ([GH-83925](https://github.com/godotengine/godot/pull/83925)). -- Translate TextEdit placeholder ([GH-83946](https://github.com/godotengine/godot/pull/83946)). -- Ensure input event is valid in `PopupMenu::activate_item_by_event` ([GH-83952](https://github.com/godotengine/godot/pull/83952)). -- [Menu Bar] Update min. size when items are added/removed/changed ([GH-83961](https://github.com/godotengine/godot/pull/83961)). -- Fix disabled tabs being selected when removing the current one ([GH-83963](https://github.com/godotengine/godot/pull/83963)). -- Fix `TabContainer` drag to rearrange issue ([GH-83966](https://github.com/godotengine/godot/pull/83966)). -- Fix TreeItem truncating node names too much when using a custom icon ([GH-84001](https://github.com/godotengine/godot/pull/84001)). -- Add foreign validation warning for rename actions ([GH-84022](https://github.com/godotengine/godot/pull/84022)). -- Include empty type variations in `Theme::get_type_list` ([GH-84127](https://github.com/godotengine/godot/pull/84127)). -- [Text Mesh] Fix incorrectly cached glyph offsets ([GH-84180](https://github.com/godotengine/godot/pull/84180)). -- Fix `activate_item_by_event` infinite recursion crash ([GH-84183](https://github.com/godotengine/godot/pull/84183)). -- TextServer: Fix glyph comparator ambiguous output ([GH-84232](https://github.com/godotengine/godot/pull/84232)). -- RTL: Fix underline/strikethrough line color changes ([GH-84233](https://github.com/godotengine/godot/pull/84233)). -- TextServer: Fix line breaks for dropcap and resizing embedded objects ([GH-84287](https://github.com/godotengine/godot/pull/84287)). -- Fix `ColorPicker` shape icon is invisible until shape is changed ([GH-84535](https://github.com/godotengine/godot/pull/84535)). -- Make mouse enter/exit notifications match mouse events ([GH-84547](https://github.com/godotengine/godot/pull/84547)). -- RTL: Fix list bullet alignment ([GH-84605](https://github.com/godotengine/godot/pull/84605)). -- Warn about autowrapped labels in containers ([GH-84662](https://github.com/godotengine/godot/pull/84662)). -- Allow auto-generated node names in `PopupMenu::add_submenu_item` ([GH-84668](https://github.com/godotengine/godot/pull/84668)). -- Add protection in `RichTextLabel.update_image` to prevent crash ([GH-84833](https://github.com/godotengine/godot/pull/84833)). -- Make Tree's `set_selected` check if the TreeItem belongs to the tree ([GH-84870](https://github.com/godotengine/godot/pull/84870)). -- Fix remapped font reloading on locale change ([GH-84873](https://github.com/godotengine/godot/pull/84873)). -- RTL: Fix excessive underline and table border draw calls ([GH-84874](https://github.com/godotengine/godot/pull/84874)). -- Add GraphEdit connection layer child as internal ([GH-85009](https://github.com/godotengine/godot/pull/85009)). -- Fix crash when hiding a Control during mouse-entering ([GH-85284](https://github.com/godotengine/godot/pull/85284)). -- Fix crash on late mouse enter/exit event arrival ([GH-85418](https://github.com/godotengine/godot/pull/85418)). +- Use black for font outlines by default instead of white ([GH-54641](https://github.com/godotengine/godot/pull/54641)). +- Make the drawing logic clearer in `Button` ([GH-64351](https://github.com/godotengine/godot/pull/64351)). +- Toggle control expand flag directly via top bar ([GH-65258](https://github.com/godotengine/godot/pull/65258)). +- Add FlowContainer wrap options for center alignment ([GH-72323](https://github.com/godotengine/godot/pull/72323)). +- Show selected end of line in TextEdit ([GH-72341](https://github.com/godotengine/godot/pull/72341)). +- Add option to reverse FlowContainer fill direction (HFlow bottom-to-top, VFlow right-to-left) ([GH-74195](https://github.com/godotengine/godot/pull/74195)). +- DisplayServer: Use screen "usable rect" instead of full rect to calculate initial window rect ([GH-75489](https://github.com/godotengine/godot/pull/75489)). +- Make editor inspector follow focus ([GH-78960](https://github.com/godotengine/godot/pull/78960)). +- Fix read-only EditorSpinSlider display ([GH-80544](https://github.com/godotengine/godot/pull/80544)). +- Trigger zoom from pan gestures when pressing ctrl ([GH-80994](https://github.com/godotengine/godot/pull/80994)). +- Add Ctrl + L / Cmd + Shift + G shortcut to focus path bar in FileDialog ([GH-81177](https://github.com/godotengine/godot/pull/81177)). +- Enable scrolling of output with UI scale changes ([GH-82079](https://github.com/godotengine/godot/pull/82079)). +- Option to put TabContainer tabs at bottom ([GH-82468](https://github.com/godotengine/godot/pull/82468)). +- Fix opening docs writing extra navigation history ([GH-82498](https://github.com/godotengine/godot/pull/82498)). +- [Text Overrun] Add option to set custom ellipsis character, add support for system font fallback ([GH-82661](https://github.com/godotengine/godot/pull/82661)). +- Add `set_slot_custom_icon` and `get_slot_custom_icon` to GraphNode ([GH-82669](https://github.com/godotengine/godot/pull/82669)). +- PopupMenu: Handle `physical_keycode` and `key_label` of shortcuts ([GH-82897](https://github.com/godotengine/godot/pull/82897)). +- PopupMenu: Handle shortcuts with "global" flag directly ([GH-82900](https://github.com/godotengine/godot/pull/82900)). +- Support updating tooltip immediately after editor description change ([GH-82916](https://github.com/godotengine/godot/pull/82916)). +- Show revert button for MeshInstance3D blendshape values ([GH-82984](https://github.com/godotengine/godot/pull/82984)). +- Add automatic translation of items to ItemList ([GH-83577](https://github.com/godotengine/godot/pull/83577)). +- Make ProgressBar reflect the real value in the percent label when "allow greater" is checked ([GH-83623](https://github.com/godotengine/godot/pull/83623)). +- Add dotted grid to GraphEdit ([GH-83785](https://github.com/godotengine/godot/pull/83785)). +- Fix dock visibility issues ([GH-84122](https://github.com/godotengine/godot/pull/84122)). +- Label: Add get_character_bounds method to get bounding rectangles of the characters ([GH-84185](https://github.com/godotengine/godot/pull/84185)). +- RichTextLabel: Fix `remove_paragraph` crash by popping current ([GH-84312](https://github.com/godotengine/godot/pull/84312)). +- Allow additional hexadecimal color codes in ColorPicker ([GH-84442](https://github.com/godotengine/godot/pull/84442)). +- Cache allowed types in EditorResourcePicker ([GH-84443](https://github.com/godotengine/godot/pull/84443)). +- Don't check resource type assigned in property ([GH-84446](https://github.com/godotengine/godot/pull/84446)). +- Display a revert icon on ColorPicker's old sample ([GH-84527](https://github.com/godotengine/godot/pull/84527)). +- Fetch override list from ThemeDB ([GH-84760](https://github.com/godotengine/godot/pull/84760)). +- Fetch theme editor items from ThemeDB ([GH-84763](https://github.com/godotengine/godot/pull/84763)). +- VideoPlayer: Fix reloading translation remapped stream ([GH-84794](https://github.com/godotengine/godot/pull/84794)). +- Implement disabled state for Checkbox in Tree ([GH-84845](https://github.com/godotengine/godot/pull/84845)). +- Hide ineffective TextureProgressBar properties in the editor ([GH-84940](https://github.com/godotengine/godot/pull/84940)). +- Use disabled icons for CheckBox in DefaultTheme ([GH-84946](https://github.com/godotengine/godot/pull/84946)). +- Fix conflicted indeterminate state in asset importer ([GH-84953](https://github.com/godotengine/godot/pull/84953)). +- Editor: Add option to override editor UI layout direction ([GH-85000](https://github.com/godotengine/godot/pull/85000)). +- Fetch argument options from ThemeDB ([GH-85015](https://github.com/godotengine/godot/pull/85015)). +- Highlight error lines in minimap ([GH-85054](https://github.com/godotengine/godot/pull/85054)). +- Restored Control properties when you undo a parenting of a Control to a Container ([GH-85181](https://github.com/godotengine/godot/pull/85181)). +- Fix updating delimiter cache of `CodeEdit` when typing on the first line ([GH-85191](https://github.com/godotengine/godot/pull/85191)). +- Make sure `Window`'s title is respected before we compute the size ([GH-85312](https://github.com/godotengine/godot/pull/85312)). +- Fix crash on hiding grandparent Control on mouse exit ([GH-85313](https://github.com/godotengine/godot/pull/85313)). +- Fixes for undo in text editor grouping unrelated actions ([GH-85325](https://github.com/godotengine/godot/pull/85325)). +- RTL: Fix CharFX character offset calculation ([GH-85363](https://github.com/godotengine/godot/pull/85363)). +- Add methods to add submenus without using names ([GH-85477](https://github.com/godotengine/godot/pull/85477)). +- Limit window size updates on title change ([GH-85542](https://github.com/godotengine/godot/pull/85542)). +- Ensure slider grabs focus only when it can ([GH-85652](https://github.com/godotengine/godot/pull/85652)). +- Fix unnecessarily quantizing current color in color picker ([GH-85749](https://github.com/godotengine/godot/pull/85749)). +- Fix size and visuals of the `InputEventConfigurationDialog` ([GH-85790](https://github.com/godotengine/godot/pull/85790)). +- Allow dragging selection when selecting whole words in `LineEdit` ([GH-85801](https://github.com/godotengine/godot/pull/85801)). +- Limit window size updates on title translation change ([GH-85828](https://github.com/godotengine/godot/pull/85828)). +- Correctly enforce minimum window size in editor ([GH-85887](https://github.com/godotengine/godot/pull/85887)). +- Windows: Set application user model ID to prevent editor / running project and different versions of editor taskbar icon stacking ([GH-85905](https://github.com/godotengine/godot/pull/85905)). +- TextServer: Implement soft hyphen handling ([GH-85940](https://github.com/godotengine/godot/pull/85940)). +- Expose a method to get hovered Control in Viewport ([GH-85966](https://github.com/godotengine/godot/pull/85966)). +- Prevent crash when calling `set_text()` on a removed TreeItem ([GH-86028](https://github.com/godotengine/godot/pull/86028)). +- Fix theme access in the Groups editor ([GH-86031](https://github.com/godotengine/godot/pull/86031)). +- Fix `ColorPicker`'s alpha slider arrow offset ([GH-86034](https://github.com/godotengine/godot/pull/86034)). +- TextServer: Do not draw non-visual characters ([GH-86065](https://github.com/godotengine/godot/pull/86065)). +- Fix so undoing complex operations in `TextEdit` will restore selections ([GH-86118](https://github.com/godotengine/godot/pull/86118)). +- Remember last `color_mode` and `picker_shape` in `ColorPicker`s in the editor ([GH-86129](https://github.com/godotengine/godot/pull/86129)). +- Fix Popup hover and height calculation are off by some pixels ([GH-86141](https://github.com/godotengine/godot/pull/86141)). +- Rework `GraphEdit` connections (drawing, API, optimizations) ([GH-86158](https://github.com/godotengine/godot/pull/86158)). +- Fix various issues with the folder color lookup ([GH-86171](https://github.com/godotengine/godot/pull/86171)). +- Fix `Node` selection when navigating `Tree` with Arrow keys ([GH-86218](https://github.com/godotengine/godot/pull/86218)). +- Fix changing `gui_embed_subwindows` while a child window is displayed ([GH-86220](https://github.com/godotengine/godot/pull/86220)). +- macOS: Fix updating editor tab titles in the dock menu ([GH-86290](https://github.com/godotengine/godot/pull/86290)). +- Fix `MenuBar` and `MenuButton` hover position scaling properly with the scale factor multiplier ([GH-86304](https://github.com/godotengine/godot/pull/86304)). +- MenuBar: Store and use global menu item indices ([GH-86322](https://github.com/godotengine/godot/pull/86322)). +- Emit slider's `drag_started` signal before the first value change ([GH-86377](https://github.com/godotengine/godot/pull/86377)). +- Implement a `transient_to_focused` Window mode ([GH-86446](https://github.com/godotengine/godot/pull/86446)). +- Fix double `text_changed` signal when overwriting selection in LineEdit ([GH-86460](https://github.com/godotengine/godot/pull/86460)). +- Fix D&D viewport position calculation ([GH-86511](https://github.com/godotengine/godot/pull/86511)). +- Fix non-embedded tooltips, popups and dialogs resizing to match Viewport content scale factors != 1.0 ([GH-86553](https://github.com/godotengine/godot/pull/86553)). +- Make `LineEdit` scrolling show as much text as possible ([GH-86732](https://github.com/godotengine/godot/pull/86732)). +- In `merge_with` also merge some default fields of theme ([GH-86894](https://github.com/godotengine/godot/pull/86894)). +- Overhaul multicaret editing and selection in TextEdit ([GH-86978](https://github.com/godotengine/godot/pull/86978)). +- Fix `LineEdit` caret rendering/positioning on Undo ([GH-87012](https://github.com/godotengine/godot/pull/87012)). +- Button: Add autowrap feature ([GH-87025](https://github.com/godotengine/godot/pull/87025)). +- Refactor editor theme generation and add spacing presets ([GH-87085](https://github.com/godotengine/godot/pull/87085)). +- Allow no tabs to be selected in TabBar and TabContainer ([GH-87194](https://github.com/godotengine/godot/pull/87194)). +- macOS: Do not unbind PopupMenu from global menu on `clear` call ([GH-87249](https://github.com/godotengine/godot/pull/87249)). +- [Native File Dialog] Add support for adding custom options to the dialogs (w/o editor changes) ([GH-87303](https://github.com/godotengine/godot/pull/87303)). +- Add indeterminate mode to ProgressBar ([GH-87318](https://github.com/godotengine/godot/pull/87318)). +- TextServer: Fix precision loss in the string drawing methods ([GH-87335](https://github.com/godotengine/godot/pull/87335)). +- Add method to get "base" system UI color and system theme change callback ([GH-87384](https://github.com/godotengine/godot/pull/87384)). +- Expose `PopupMenu` `get_item_multistate()` and `set/get_item_multistate_max()` ([GH-87395](https://github.com/godotengine/godot/pull/87395)). +- Redraw `TreeItem` on more changes ([GH-87415](https://github.com/godotengine/godot/pull/87415)). +- Use callable for `TreeItem` custom draw ([GH-87417](https://github.com/godotengine/godot/pull/87417)). +- Fix issue where `set_global_position(global_position)` in `Control` resulted in a different result than `global_position` ([GH-87432](https://github.com/godotengine/godot/pull/87432)). +- Move `global_menu_*` methods to a separate `NativeMenu` class ([GH-87452](https://github.com/godotengine/godot/pull/87452)). +- Fix PopupMenu doesn't respect its ScrollContainer's margins ([GH-87462](https://github.com/godotengine/godot/pull/87462)). +- Fix forgetting `h_separation` when internal elements exist ([GH-87474](https://github.com/godotengine/godot/pull/87474)). +- Fix TextEdit IME issues ([GH-87479](https://github.com/godotengine/godot/pull/87479)). +- Rework the auto translation system ([GH-87530](https://github.com/godotengine/godot/pull/87530)). +- Replace internal usage of ImageTexture in VideoStreamPlayer for Texture2D ([GH-87555](https://github.com/godotengine/godot/pull/87555)). +- RTL: Connect image update signals ([GH-87587](https://github.com/godotengine/godot/pull/87587)). +- [TextServer / Font] Add support for customizable baseline offset ([GH-87668](https://github.com/godotengine/godot/pull/87668)). +- TreeItem: Add `get_button_color()` ([GH-87686](https://github.com/godotengine/godot/pull/87686)). +- Fix script editor `undo` shortcut with global menu enabled ([GH-87773](https://github.com/godotengine/godot/pull/87773)). +- Automatically set viewport background to transparent when window flag is set ([GH-87856](https://github.com/godotengine/godot/pull/87856)). +- Fix freeze in TextEdit with `scroll_past_end_of_file` and `fit_content_height` ([GH-87880](https://github.com/godotengine/godot/pull/87880)). +- Add 'Skip to next (text) occurrence' feature to text editor ([GH-87883](https://github.com/godotengine/godot/pull/87883)). +- macOS: Fix changing main menu item names ([GH-87912](https://github.com/godotengine/godot/pull/87912)). +- Only recurse depth wise in `Tree::_count_selected_items` ([GH-87943](https://github.com/godotengine/godot/pull/87943)). +- macOS: Do not show file type popup in the native file dialog if there's only one option, improve `*.*` filter handling ([GH-87954](https://github.com/godotengine/godot/pull/87954)). +- Fix `set_item_submenu` infinite recursion crash ([GH-87967](https://github.com/godotengine/godot/pull/87967)). +- Implement GraphFrame and integrate it in VisualShader ([GH-88014](https://github.com/godotengine/godot/pull/88014)). +- Fix `Slider`'s mouse drag position when grabber is centered ([GH-88068](https://github.com/godotengine/godot/pull/88068)). +- TextServer: Fix bitmap font kerning override ([GH-88089](https://github.com/godotengine/godot/pull/88089)). +- TextServer: Add extra fallback step, to lookup for individual characters ([GH-88091](https://github.com/godotengine/godot/pull/88091)). +- Tweak property order in the inspector for OptionButton ([GH-88145](https://github.com/godotengine/godot/pull/88145)). +- Add PropertyListHelper to PopupMenu ([GH-88162](https://github.com/godotengine/godot/pull/88162)). +- Font: Do not use trim with ellipsis in the basic Font string drawing functions ([GH-88185](https://github.com/godotengine/godot/pull/88185)). +- Fix vertical alignment of editor version `LinkButton` in the bottom panel ([GH-88197](https://github.com/godotengine/godot/pull/88197)). +- Fix recursive Tree expand/collapse shortcuts not working ([GH-88265](https://github.com/godotengine/godot/pull/88265)). +- Fix `TabBar` size when theme changes ([GH-88293](https://github.com/godotengine/godot/pull/88293)). +- Add `is_visible_in_tree` in `TreeItem` ([GH-88300](https://github.com/godotengine/godot/pull/88300)). +- [Fallback TextServer] Add support for non breaking spaces ([GH-88344](https://github.com/godotengine/godot/pull/88344)). +- Fix ItemList click detection gaps ([GH-88347](https://github.com/godotengine/godot/pull/88347)). +- Editor: Improve clarity and style of `ResourcePicker` menu ([GH-88435](https://github.com/godotengine/godot/pull/88435)). +- Editor: Add missing ellipses to menu options that open dialogs ([GH-88436](https://github.com/godotengine/godot/pull/88436)). +- Improve text editor status bar and zooming UX ([GH-88474](https://github.com/godotengine/godot/pull/88474)). +- Tweak property order in the inspector for TabBar ([GH-88477](https://github.com/godotengine/godot/pull/88477)). +- Fix `LineEdit` delete all the way to the left/right when something is selected ([GH-88479](https://github.com/godotengine/godot/pull/88479)). +- Fix error spam when adding tabs to `TabBar` without deselect ([GH-88494](https://github.com/godotengine/godot/pull/88494)). +- Fix regression in auto translation overhaul ([GH-88521](https://github.com/godotengine/godot/pull/88521)). +- TextEdit: Add support for optional wrapped line indentation ([GH-88546](https://github.com/godotengine/godot/pull/88546)). +- Hide separators in ItemList in editor theme ([GH-88575](https://github.com/godotengine/godot/pull/88575)). +- Fix item positioning, text alignment & unwanted clipping of ItemList items ([GH-88577](https://github.com/godotengine/godot/pull/88577)). +- Fix `RichTextLabel`'s tag stack being overridden on translation change ([GH-88598](https://github.com/godotengine/godot/pull/88598)). +- Fix implementation of `property_can_revert()` in PropertyListHelper ([GH-88665](https://github.com/godotengine/godot/pull/88665)). +- Don't translate filenames in FileSystem dock ([GH-88716](https://github.com/godotengine/godot/pull/88716)). +- If SpinBox text can't be parsed use last updated text ([GH-88794](https://github.com/godotengine/godot/pull/88794)). +- Mention how Control focus loss affects `Viewport.gui_focus_change` ([GH-88811](https://github.com/godotengine/godot/pull/88811)). +- Fix crash when selecting re-added `TreeItem::Cell` ([GH-88917](https://github.com/godotengine/godot/pull/88917)). +- Fix mouse entered notifications ([GH-88992](https://github.com/godotengine/godot/pull/88992)). +- RTL: Add optional `push_meta` argument to control how meta underline is drawn ([GH-89024](https://github.com/godotengine/godot/pull/89024)). +- Add auto translation to `Tree` ([GH-89032](https://github.com/godotengine/godot/pull/89032)). +- Fix issues with text clearing in `RichTextLabel` ([GH-89100](https://github.com/godotengine/godot/pull/89100)). +- Label3D: Calculate AABB from the full text rect instead of individual glyphs ([GH-89145](https://github.com/godotengine/godot/pull/89145)). +- RTL: Fix meta hover area detection ([GH-89158](https://github.com/godotengine/godot/pull/89158)). +- TextServer: Fix fallback line breaking code adding two breaks for CR-LF ([GH-89171](https://github.com/godotengine/godot/pull/89171)). +- Window: Allow to override viewport and project settings and force use of native window ([GH-89172](https://github.com/godotengine/godot/pull/89172)). +- NativeMenu: Add checks to avoid unnecessary warnings ([GH-89224](https://github.com/godotengine/godot/pull/89224)). +- Add text tooltip for TabBar & TabContainer ([GH-89247](https://github.com/godotengine/godot/pull/89247)). +- NativeMenu: Implement native popup menu support on Windows ([GH-89273](https://github.com/godotengine/godot/pull/89273)). +- StatusIndicator: Add method to get indicator icon screen rect ([GH-89275](https://github.com/godotengine/godot/pull/89275)). +- Fix packed scene translation parser missing strings ([GH-89286](https://github.com/godotengine/godot/pull/89286)). +- Add pre-4.3 Editor theme color names for compatibility ([GH-89302](https://github.com/godotengine/godot/pull/89302)). +- Fix Label3D, TextMesh & Font not following project default theme in editor ([GH-89311](https://github.com/godotengine/godot/pull/89311)). +- Font: Add option to disable embedded bitmaps loading ([GH-89383](https://github.com/godotengine/godot/pull/89383)). +- RTL: Use "visible characters" property for inline object visibility ([GH-89395](https://github.com/godotengine/godot/pull/89395)). +- Fix some AcceptDialog argument types ([GH-89419](https://github.com/godotengine/godot/pull/89419)). +- Fix help label will be partly outside the view area at 150% editor scale ([GH-89437](https://github.com/godotengine/godot/pull/89437)). +- Fix bug related to multicursor and backspacing with brackets ([GH-89469](https://github.com/godotengine/godot/pull/89469)). +- Fix `Control::set_global_position` for rotated/scaled transforms ([GH-89502](https://github.com/godotengine/godot/pull/89502)). +- Fix NativeMenu layout direction on macOS, add extra check for Windows menu ([GH-89506](https://github.com/godotengine/godot/pull/89506)). +- Label: Move shadow drawing into a separate draw step ([GH-89510](https://github.com/godotengine/godot/pull/89510)). +- NativeMenu: Fix MinGW build ([GH-89513](https://github.com/godotengine/godot/pull/89513)). +- NativeMenu: Fix changes lost due to incorrect rebase (menu goes under task bar, dark mode, item text get, docs) and check to ensure help menu is not using native menu on Windows ([GH-89540](https://github.com/godotengine/godot/pull/89540)). +- StatusIndicator: Switch API to use Texture2D instead of Image, improve handling on macOS, add method to set native popup menu directly ([GH-89588](https://github.com/godotengine/godot/pull/89588)). +- Fix TextEdit selection end of line drawing for wrapped lines and gaps ([GH-89625](https://github.com/godotengine/godot/pull/89625)). +- Fix `empty_clicked` signal in Tree when using `hide_root` ([GH-89664](https://github.com/godotengine/godot/pull/89664)). +- Font: Apply oversampling to the "embolden" strength ([GH-89666](https://github.com/godotengine/godot/pull/89666)). +- Do not apply `force_native` to the edited scene windows ([GH-89673](https://github.com/godotengine/godot/pull/89673)). +- Add minimum width/height to dialog buttons ([GH-89693](https://github.com/godotengine/godot/pull/89693)). +- RTL: Move shadow and foreground/background boxes drawing into a separate draw steps ([GH-89705](https://github.com/godotengine/godot/pull/89705)). +- Fix a pixel misalignment in the blue robot logo ([GH-89711](https://github.com/godotengine/godot/pull/89711)). +- [Native File Dialog] Add support for using native dialogs in the editor ([GH-89735](https://github.com/godotengine/godot/pull/89735)). +- Prefer family name in fonts' names table ([GH-89817](https://github.com/godotengine/godot/pull/89817)). +- Correct FileDialog Theme overrides ([GH-89845](https://github.com/godotengine/godot/pull/89845)). +- MenuBar: Use NativeMenu RIDs instead of indices to track items ([GH-89875](https://github.com/godotengine/godot/pull/89875)). +- NativeMenu: Move files to the `display` subfolder ([GH-89900](https://github.com/godotengine/godot/pull/89900)). +- Remove Control z-index warning ([GH-89956](https://github.com/godotengine/godot/pull/89956)). +- Fix TreeItem shows cell edit in the wrong column when `select_mode=Row` and TreeItem has multiple columns ([GH-89977](https://github.com/godotengine/godot/pull/89977)). +- Make `TextEdit.clip_contents` more transparent to users ([GH-89993](https://github.com/godotengine/godot/pull/89993)). +- TextServer: Expose ICU title case string conversion to scripting ([GH-90196](https://github.com/godotengine/godot/pull/90196)). +- Fix error message when removing only child from GraphNode ([GH-90229](https://github.com/godotengine/godot/pull/90229)). +- Fix potential null access in `TextEdit` ([GH-90274](https://github.com/godotengine/godot/pull/90274)). +- Remove border roundness inside panels of `AcceptDialog` windows ([GH-90283](https://github.com/godotengine/godot/pull/90283)). +- Fix built-in `FileDialog` appearing instead of the native one on some cases ([GH-90318](https://github.com/godotengine/godot/pull/90318)). +- TextServer: Improve empty glyph handling to allow glyphs smaller than 2px and avoid unnecessary texture updates ([GH-90349](https://github.com/godotengine/godot/pull/90349)). +- RTL: Add support for character code BBCode tag `[char=...]` ([GH-90405](https://github.com/godotengine/godot/pull/90405)). +- Fix `TabContainer` desync when tabs share names ([GH-90415](https://github.com/godotengine/godot/pull/90415)). +- RTL: Fix dropcaps and list prefixes not taking visible characters into account ([GH-90472](https://github.com/godotengine/godot/pull/90472)). +- RTL: Rewrite `remove_paragraph` code ([GH-90518](https://github.com/godotengine/godot/pull/90518)). +- Remove `Popup`'s unused "panel" style ([GH-90633](https://github.com/godotengine/godot/pull/90633)). +- Fix submenus erroneously closing on some occasions ([GH-90639](https://github.com/godotengine/godot/pull/90639)). +- Fix decimal and hex ranges not working with image fonts ([GH-90647](https://github.com/godotengine/godot/pull/90647)). +- Don't store deprecated `auto_translate` property ([GH-90685](https://github.com/godotengine/godot/pull/90685)). +- Add project setting for root node auto translate mode ([GH-90730](https://github.com/godotengine/godot/pull/90730)). +- Improve TextEdit/LineEdit word selection ([GH-90732](https://github.com/godotengine/godot/pull/90732)). +- Fix potential infinite loop when using global menu ([GH-90791](https://github.com/godotengine/godot/pull/90791)). +- Button: Fix theme elements size rounding errors not keeping sufficient space for the text ([GH-90838](https://github.com/godotengine/godot/pull/90838)). +- Fix TreeItem button handling ([GH-90839](https://github.com/godotengine/godot/pull/90839)). +- Revert "Correctly display tooltips for buttons in Tree when they overlap cell content ([GH-90842](https://github.com/godotengine/godot/pull/90842)). +- Fix buttons offset to the right when dialog is at minsize ([GH-90852](https://github.com/godotengine/godot/pull/90852)). +- Don't translate ColorPicker color labels ([GH-90869](https://github.com/godotengine/godot/pull/90869)). +- Fix crash when GraphFrame `sb_to_draw_panel` is not a StyleBoxFlat ([GH-90874](https://github.com/godotengine/godot/pull/90874)). +- Fix offset of node filter menu separator icon ([GH-90886](https://github.com/godotengine/godot/pull/90886)). +- Fix TabContainer not redrawing after toggling tab icon ([GH-90942](https://github.com/godotengine/godot/pull/90942)). +- Enable `Scrolling` signal when scrolling with middle mouse on `RichTextLabel` or `ScrollContainer` ([GH-90988](https://github.com/godotengine/godot/pull/90988)). +- Add line limit to Output Log in Editor ([GH-91012](https://github.com/godotengine/godot/pull/91012)). +- Fix TabContainer using wrong content rect after tab title update ([GH-91038](https://github.com/godotengine/godot/pull/91038)). +- Fix wrong Tree column title position ([GH-91044](https://github.com/godotengine/godot/pull/91044)). +- Fix port cache calculation in GraphNode ([GH-91083](https://github.com/godotengine/godot/pull/91083)). +- Fix Tree minimum size calculation ([GH-91095](https://github.com/godotengine/godot/pull/91095)). +- RTL: Add extra argument to `remove_paragraph` to skip cache invalidation and a method for manual cache invalidation ([GH-91098](https://github.com/godotengine/godot/pull/91098)). +- PopupMenu: Fix incorrect vertical scroll bar visible at fractional content scale ([GH-91114](https://github.com/godotengine/godot/pull/91114)). +- Use TextEdit caret color for minimap highlight (fix minimap regression) ([GH-91137](https://github.com/godotengine/godot/pull/91137)). +- Add no-change check to `Label3D::set_text` ([GH-91177](https://github.com/godotengine/godot/pull/91177)). +- Fix `TabContainer` regressions related to switching tabs in certain cases ([GH-91188](https://github.com/godotengine/godot/pull/91188)). +- Don't use vscroll when fit to content height in TextEdit ([GH-91190](https://github.com/godotengine/godot/pull/91190)). +- Allow setting max icon width per tab for TabContainer ([GH-91193](https://github.com/godotengine/godot/pull/91193)). +- Fix RichTextLabel "Scroll Following" randomly stops working ([GH-91275](https://github.com/godotengine/godot/pull/91275)). +- Fix disabled files in FileDialog using the wrong color ([GH-91281](https://github.com/godotengine/godot/pull/91281)). +- Update `LineEdit` to include `read_only` StyleBox in `get_minimum_size()` ([GH-91326](https://github.com/godotengine/godot/pull/91326)). +- Windows: Fix `WINDOW_EVENT_FOCUS_IN` not delivered in some cases ([GH-91361](https://github.com/godotengine/godot/pull/91361)). +- Unhide carets in add selection for occurrence and fix error ([GH-91390](https://github.com/godotengine/godot/pull/91390)). +- Make `mouse_focus` and `mouse_focus_mask` consistent for `force_drag` ([GH-91425](https://github.com/godotengine/godot/pull/91425)). +- Fix TextEdit crash with multiple carets disabled and paste ([GH-91457](https://github.com/godotengine/godot/pull/91457)). +- Add `as_sortable_control()` to unify Container checks ([GH-91613](https://github.com/godotengine/godot/pull/91613)). +- Fold TreeItems when clicking to the left of fold icon ([GH-91699](https://github.com/godotengine/godot/pull/91699)). +- Fix CheckBox and CheckButton not using `icon_max_width` ([GH-91700](https://github.com/godotengine/godot/pull/91700)). +- Fix TextEdit minimap tab drawing and click check ([GH-91720](https://github.com/godotengine/godot/pull/91720)). +- Use `as_sortable_control()` in SplitContainer ([GH-91728](https://github.com/godotengine/godot/pull/91728)). +- Fix placement of ColorPicker in the editor ([GH-91757](https://github.com/godotengine/godot/pull/91757)). +- Fallback to default theme for variation items ([GH-91793](https://github.com/godotengine/godot/pull/91793)). +- Round the icon's drawing rect when drawing the button ([GH-91802](https://github.com/godotengine/godot/pull/91802)). +- Fix Control resizing wrongly after "change type" in editor ([GH-91804](https://github.com/godotengine/godot/pull/91804)). +- Editor: Add editor setting to control `disable_embedded_bitmaps` property of the editor fonts ([GH-91931](https://github.com/godotengine/godot/pull/91931)). +- GraphEdit: Fix GraphNode's ports interactable through other GraphNodes ([GH-91991](https://github.com/godotengine/godot/pull/91991)). +- Fix tooltip mouse position conversion for scaled controls ([GH-91997](https://github.com/godotengine/godot/pull/91997)). +- Improve button min. size calculation ([GH-92009](https://github.com/godotengine/godot/pull/92009)). +- Fix Tree and FileSystemList edit popup double events and ESC behavior ([GH-92042](https://github.com/godotengine/godot/pull/92042)). +- Fix scrollbar issues in `ScrollContainer` ([GH-92138](https://github.com/godotengine/godot/pull/92138)). +- Fix TextureButton's click mask texture size ignored if missing normal texture ([GH-92222](https://github.com/godotengine/godot/pull/92222)). +- Fix `PopupMenu` focus issues after `Viewport::set_embedding_subwindows` is changed ([GH-92243](https://github.com/godotengine/godot/pull/92243)). +- Fix crash during code editor folding and LSP ([GH-92301](https://github.com/godotengine/godot/pull/92301)). +- Fix `get_position_with_decorations` and `get_size_with_decorations` for embedded windows ([GH-92317](https://github.com/godotengine/godot/pull/92317)). +- Remove duplicate if/else code in `TextEdit::_notification` ([GH-92342](https://github.com/godotengine/godot/pull/92342)). +- Fix duplicate AcceptDialog cancel/confirm events ([GH-92460](https://github.com/godotengine/godot/pull/92460)). +- RTL: Use real text/object height instead of line height for meta click/hover detection ([GH-92461](https://github.com/godotengine/godot/pull/92461)). +- GraphEdit: Convert to minimap line after getting connection line ([GH-92463](https://github.com/godotengine/godot/pull/92463)). +- Invalidate `Control` global transform before notifying about resize / rect change ([GH-92489](https://github.com/godotengine/godot/pull/92489)). +- TextEdit: Use style margins for selection in read-only mode ([GH-92505](https://github.com/godotengine/godot/pull/92505)). +- Fix minimap error when moving to the top ([GH-92557](https://github.com/godotengine/godot/pull/92557)). +- RTL: Clear default justification flags if custom are set ([GH-92565](https://github.com/godotengine/godot/pull/92565)). +- Fix `RichTextLabel` table overlapping with next line ([GH-92605](https://github.com/godotengine/godot/pull/92605)). +- Fix `NOTIFICATION_SORT_CHILDREN` is called twice on startup ([GH-92645](https://github.com/godotengine/godot/pull/92645)). +- Fix popup windows content margins ([GH-92647](https://github.com/godotengine/godot/pull/92647)). +- Add visibility mode to `as_sortable_control()` ([GH-92664](https://github.com/godotengine/godot/pull/92664)). +- Button: Adds theme option to align button text and icon to either largest or current stylebox ([GH-92701](https://github.com/godotengine/godot/pull/92701)). +- Force canvas item update on oversampling change ([GH-92731](https://github.com/godotengine/godot/pull/92731)). +- Fix IME activation in subviewports ([GH-92740](https://github.com/godotengine/godot/pull/92740)). +- RTL: Fix nested ordered lists inside unordered lists ([GH-92745](https://github.com/godotengine/godot/pull/92745)). +- macOS: Improve native menu open/close callbacks ([GH-92781](https://github.com/godotengine/godot/pull/92781)). +- Fix excessive canvas items updates ([GH-92808](https://github.com/godotengine/godot/pull/92808)). +- Stop color picker tooltip from stealing input events ([GH-92843](https://github.com/godotengine/godot/pull/92843)). +- Force editor progress dialog size update ([GH-92856](https://github.com/godotengine/godot/pull/92856)). +- Fix `TextureProgressBar` radial mode invalid polygon edge case ([GH-92901](https://github.com/godotengine/godot/pull/92901)). +- Window: Fix mouse hover state of the main window when mouse enter event was sent before setting callbacks ([GH-92908](https://github.com/godotengine/godot/pull/92908)). +- Fix native file dialogs being shown on `set_visible(false)` ([GH-92943](https://github.com/godotengine/godot/pull/92943)). +- RTL: Fix list item prefix width not taken into account ([GH-92968](https://github.com/godotengine/godot/pull/92968)). +- Fix `Container::pending_sort` tracking ([GH-93008](https://github.com/godotengine/godot/pull/93008)). +- TextEdit: Don't error when undo stack is empty ([GH-93042](https://github.com/godotengine/godot/pull/93042)). +- Button: Do not include internal margins into base button minimum size ([GH-93128](https://github.com/godotengine/godot/pull/93128)). +- RTL: Fix `align_to_row` for the last table row ([GH-93137](https://github.com/godotengine/godot/pull/93137)). +- RTL: Fix table h/v separation alignment ([GH-93140](https://github.com/godotengine/godot/pull/93140)). +- Fix engine crashing when using Down Arrow selection on Tree with no selection ([GH-93179](https://github.com/godotengine/godot/pull/93179)). +- TextServer: Save advances rounding remainders to prevent rounding error accumulation ([GH-93256](https://github.com/godotengine/godot/pull/93256)). +- Fix GridContainer minimum size when there's a hidden parent ([GH-93386](https://github.com/godotengine/godot/pull/93386)). +- Fix FlowContainer scale from also scaling wrap point ([GH-93444](https://github.com/godotengine/godot/pull/93444)). +- Fix atlas texture positioning in circular TextureProgressBar ([GH-93467](https://github.com/godotengine/godot/pull/93467)). +- Fix subwindow titlebar redraw on oversampling change ([GH-93490](https://github.com/godotengine/godot/pull/93490)). +- CodeEdit: Fix move lines up/down viewport and selection issues ([GH-93607](https://github.com/godotengine/godot/pull/93607)). +- Hide unused category vboxes in inspector ([GH-93627](https://github.com/godotengine/godot/pull/93627)). +- Button: Use `align_to_largest_stylebox` for min. size calculation ([GH-93708](https://github.com/godotengine/godot/pull/93708)). +- Fix RichTextLabel fade set `start_index` to command offset ([GH-93721](https://github.com/godotengine/godot/pull/93721)). +- Change GUI controls pixel snap to round halfway towards positive infinity (`floor(x + 0.5)`) ([GH-93749](https://github.com/godotengine/godot/pull/93749)). +- Fix division by zero in aspect ratio calculation ([GH-93764](https://github.com/godotengine/godot/pull/93764)). +- Fix `AtlasTexture::draw_rect` flipping for non-zero margin ([GH-93828](https://github.com/godotengine/godot/pull/93828)). +- Fix some VisualShader features for high DPI displays/custom UI scales ([GH-93903](https://github.com/godotengine/godot/pull/93903)). +- Fix `Control` nodes emitting unnecessary `resized` signals ([GH-93908](https://github.com/godotengine/godot/pull/93908)). +- Fix dropping on selection in script editor ([GH-93959](https://github.com/godotengine/godot/pull/93959)). +- Fix connections not updated after GraphNode slot update ([GH-93999](https://github.com/godotengine/godot/pull/93999)). +- Fix RichTextLabel + `ui_down` scrolling too far ([GH-94003](https://github.com/godotengine/godot/pull/94003)). +- NativeMenu: Do not auto toggle check/multi-state items. Add `is_native_menu` method ([GH-94061](https://github.com/godotengine/godot/pull/94061)). +- Fix LCD font AA modulation in RendererRD ([GH-94064](https://github.com/godotengine/godot/pull/94064)). +- Fix container minimum size with hidden parent ([GH-94085](https://github.com/godotengine/godot/pull/94085)). +- Prevent confirm button being overridden to "Open" when in save file mode ([GH-94172](https://github.com/godotengine/godot/pull/94172)). +- Avoid `FlowContainer` crash with `TextureRect` using `EXPAND_FIT_*` expand modes ([GH-94286](https://github.com/godotengine/godot/pull/94286)). +- macOS: Fix code completion list scrolling with trackpad ([GH-94363](https://github.com/godotengine/godot/pull/94363)). +- Fix input lock issue when drag scrolling on a `Tree` element on touchscreen devices ([GH-94422](https://github.com/godotengine/godot/pull/94422)). +- Fix ScriptEditor scrolling horizontally when reopening script ([GH-94439](https://github.com/godotengine/godot/pull/94439)). +- Fix game window stops responding when debugger pauses ([GH-94452](https://github.com/godotengine/godot/pull/94452)). +- RTL: Fix text size rounding with MSDF fonts ([GH-94606](https://github.com/godotengine/godot/pull/94606)). +- ScrollContainer: Fix RTL on follow focus ([GH-94621](https://github.com/godotengine/godot/pull/94621)). +- GraphEdit: Correctly disconnect signal to `connection_layer` ([GH-94810](https://github.com/godotengine/godot/pull/94810)). +- Fix `TextEdit` scroll properties editor hint suffix ([GH-94821](https://github.com/godotengine/godot/pull/94821)). +- Fix TextEdit placeholder fit content height ([GH-94848](https://github.com/godotengine/godot/pull/94848)). +- Use legacy color picking in single window mode ([GH-94931](https://github.com/godotengine/godot/pull/94931)). +- Windows: Check if transparency is enabled in the project setting before applying DWM blur ([GH-95009](https://github.com/godotengine/godot/pull/95009)). +- Fix GraphEdit port snapping in certain edge cases ([GH-95059](https://github.com/godotengine/godot/pull/95059)). +- Font: Add check for cyclic base font dependencies ([GH-95083](https://github.com/godotengine/godot/pull/95083)). +- Clear `TabBar` tab close button's rect after it's hidden ([GH-95122](https://github.com/godotengine/godot/pull/95122)). +- PopupMenu: Increase mouse button release timeout and reset it from `post_popup` ([GH-95232](https://github.com/godotengine/godot/pull/95232)). +- Stop popup release timeout on click ([GH-95432](https://github.com/godotengine/godot/pull/95432)). #### Import -- Fix ImageTextureLayered serialization issues ([GH-71394](https://github.com/godotengine/godot/pull/71394)). -- Add support for KTX image format so that we can use Basis Universal for GLTF ([GH-76572](https://github.com/godotengine/godot/pull/76572)). -- Add more physics options to the Scene importer ([GH-77533](https://github.com/godotengine/godot/pull/77533)). -- Fix reimporting files with non lowercase name extension ([GH-78567](https://github.com/godotengine/godot/pull/78567)). -- Add support for GLTF extension KHR_materials_emissive_strength ([GH-78621](https://github.com/godotengine/godot/pull/78621)). -- GLTF: Internal renames in material parsing code ([GH-78622](https://github.com/godotengine/godot/pull/78622)). -- Add layer, shadow and visibility range options to the Scene importer ([GH-78803](https://github.com/godotengine/godot/pull/78803)). -- Allow change import type without restarting editor ([GH-78890](https://github.com/godotengine/godot/pull/78890)). -- Fix property hint class name type string restriction and replace mode ([GH-79139](https://github.com/godotengine/godot/pull/79139)). -- Lossy WebP: Enable sharp RGB to YUV conversion ([GH-79257](https://github.com/godotengine/godot/pull/79257)). -- Add copyright to GLTFState ([GH-79267](https://github.com/godotengine/godot/pull/79267)). -- GLTF: Allow specifying export image format including from extensions ([GH-79314](https://github.com/godotengine/godot/pull/79314)). -- Add `KHR_materials_emissive_strength` extension support for exporting GLTFs ([GH-79421](https://github.com/godotengine/godot/pull/79421)). -- GLTF: Preserve the original bytes when extracting a texture while importing ([GH-79533](https://github.com/godotengine/godot/pull/79533)). -- Add `export_preserialize` to the GLTF export process ([GH-79623](https://github.com/godotengine/godot/pull/79623)). -- Set `base_path` and `filename` during GLTF export when writing to a file ([GH-79636](https://github.com/godotengine/godot/pull/79636)). -- Improve overriding the root type or root name in the scene importer ([GH-79774](https://github.com/godotengine/godot/pull/79774)). -- Cosmetic changes in GLTF node generation code ([GH-79775](https://github.com/godotengine/godot/pull/79775)). -- Improve GLTF export logic for scene root nodes ([GH-79801](https://github.com/godotengine/godot/pull/79801)). -- Fix reimporting scene with default values selected ([GH-79907](https://github.com/godotengine/godot/pull/79907)). -- Update ThorVG to v0.10.0 ([GH-80095](https://github.com/godotengine/godot/pull/80095)). -- Fix error message when reimporting resources with an empty scene open ([GH-80149](https://github.com/godotengine/godot/pull/80149)). -- More cosmetic improvements in the GLTF code ([GH-80205](https://github.com/godotengine/godot/pull/80205)). -- Fix doubly-reserved unique names in GLTF scene name assignment ([GH-80270](https://github.com/godotengine/godot/pull/80270)). -- GLTF: Improve logic for keeping track of the real root node ([GH-80272](https://github.com/godotengine/godot/pull/80272)). -- Use image index instead of texture index for `source_images` ([GH-80314](https://github.com/godotengine/godot/pull/80314)). -- Register and cleanup resource importer singletons in a predictable way ([GH-80377](https://github.com/godotengine/godot/pull/80377)). -- GLTF: Add center of mass property ([GH-80463](https://github.com/godotengine/godot/pull/80463)). -- Limit mesh complexity in LOD generation to prevent crashing ([GH-80467](https://github.com/godotengine/godot/pull/80467)). -- Fixed editor filesystem/import properties not being caught by the doctool ([GH-80576](https://github.com/godotengine/godot/pull/80576)). -- GLTF: Add a comment for skinned mesh tree placement ([GH-80807](https://github.com/godotengine/godot/pull/80807)). -- Fix skeletons when generating multiple Godot scenes from one GLTF ([GH-80831](https://github.com/godotengine/godot/pull/80831)). -- Make DDS loading code only check for R channel bitmask when loading grayscale images ([GH-80862](https://github.com/godotengine/godot/pull/80862)). -- Update Importing 3D scenes links to match splitting PR ([GH-80872](https://github.com/godotengine/godot/pull/80872)). -- Fix "Import Defaults" selector not being initialized incorrectly ([GH-80914](https://github.com/godotengine/godot/pull/80914)). -- Fix grayscale DDS loading ([GH-81134](https://github.com/godotengine/godot/pull/81134)). -- Update Blender export flags for 3.6 ([GH-81194](https://github.com/godotengine/godot/pull/81194)). -- GLTF: Change "Camera3D" generated node name to "Camera" ([GH-81264](https://github.com/godotengine/godot/pull/81264)). -- GLTF: Add root node export options and `GODOT_single_root` extension ([GH-81851](https://github.com/godotengine/godot/pull/81851)). -- Fix ImporterMesh bone weight handling during lightmap unwrap ([GH-81854](https://github.com/godotengine/godot/pull/81854)). -- Disable bounding box shadows for advanced scene importer ([GH-82190](https://github.com/godotengine/godot/pull/82190)). -- Fix GLTF importer forcing vertex colors on all materials ([GH-82272](https://github.com/godotengine/godot/pull/82272)). -- Avoid crash when generating LODs on meshes with non-finite vertices ([GH-82285](https://github.com/godotengine/godot/pull/82285)). -- Fix Image import crash ([GH-82408](https://github.com/godotengine/godot/pull/82408)). -- Avoid import dock cleanup for non-loadable assets ([GH-82490](https://github.com/godotengine/godot/pull/82490)). -- Fix the Advanced Import Settings window's 3D camera ([GH-82591](https://github.com/godotengine/godot/pull/82591)). -- ThorVG: update to v0.11.1 ([GH-83281](https://github.com/godotengine/godot/pull/83281)). -- Make translation importer skip not-supported lang tag, make it more robust ([GH-83600](https://github.com/godotengine/godot/pull/83600)). -- Prevent crash from importing a certain kind of invalid GLTF ([GH-83663](https://github.com/godotengine/godot/pull/83663)). -- Fix infinite loop when importing 3D object named "-colonly" ([GH-83764](https://github.com/godotengine/godot/pull/83764)). -- Fix crash when reimporting with Skeleton3D selected ([GH-83964](https://github.com/godotengine/godot/pull/83964)). -- Add method check for `_notify_skeleton_bones_renamed` ([GH-83986](https://github.com/godotengine/godot/pull/83986)). -- Enhance checks and user experience around tangent arrays in meshes ([GH-84252](https://github.com/godotengine/godot/pull/84252)). -- Implement glTF compatibility system for files imported in older Godot versions ([GH-84271](https://github.com/godotengine/godot/pull/84271)). -- Scan the filesystem in the first frame when using headless mode ([GH-84570](https://github.com/godotengine/godot/pull/84570)). -- Use the Blender file name instead of the generated GLTF file name ([GH-84678](https://github.com/godotengine/godot/pull/84678)). -- Fix Resource Importer use after free ([GH-84872](https://github.com/godotengine/godot/pull/84872)). +- Move 3D scene import classes to their own folder ([GH-51569](https://github.com/godotengine/godot/pull/51569)). +- Blend import: Allow importing `active_collection_only` ([GH-73941](https://github.com/godotengine/godot/pull/73941)). +- Tweak environment in the Advanced Import Settings dialog ([GH-75787](https://github.com/godotengine/godot/pull/75787)). +- Add secondary light to 3D Advanced Import Settings ([GH-76140](https://github.com/godotengine/godot/pull/76140)). +- Add an editor setting to import resources while unfocused ([GH-76991](https://github.com/godotengine/godot/pull/76991)). +- Fix lossless formats in PortableCompressedTexture2D ([GH-77712](https://github.com/godotengine/godot/pull/77712)). +- GLTF: Update `OMI_physics_body`, add `OMI_physics_shape`, keep `OMI_collider` ([GH-78967](https://github.com/godotengine/godot/pull/78967)). +- Add export settings to the export dialog for GLTF ([GH-79316](https://github.com/godotengine/godot/pull/79316)). +- Refactor DDS loading code ([GH-80900](https://github.com/godotengine/godot/pull/80900)). +- Support loading more DDS formats ([GH-81220](https://github.com/godotengine/godot/pull/81220)). +- Add ufbx for FBX importing ([GH-81746](https://github.com/godotengine/godot/pull/81746)). +- Rename ImportSettings dialogs to have "Dialog" in the name ([GH-82899](https://github.com/godotengine/godot/pull/82899)). +- Fix referring to ResourceImporterScene static importers via instances ([GH-82988](https://github.com/godotengine/godot/pull/82988)). +- Fix desynced duplicate GLTFNode transform properties ([GH-83231](https://github.com/godotengine/godot/pull/83231)). +- Fix Scene Importer crashing when animation or mesh save paths are invalid ([GH-83856](https://github.com/godotengine/godot/pull/83856)). +- Do not mutate source Image in `Image::save_jpg` and use encoder return value ([GH-84546](https://github.com/godotengine/godot/pull/84546)). +- Add support for comment (ignorable) column in translation csv ([GH-84569](https://github.com/godotengine/godot/pull/84569)). +- Reimport file when .import changes ([GH-84974](https://github.com/godotengine/godot/pull/84974)). +- Fix memory leak on error paths in tinyexr loader ([GH-85002](https://github.com/godotengine/godot/pull/85002)). +- Replace `//` with `\\` before sending path to Blender ([GH-85335](https://github.com/godotengine/godot/pull/85335)). +- Update `blender_path` behavior to require exact path to executable instead of trying to guess it ([GH-85448](https://github.com/godotengine/godot/pull/85448)). +- Added proper timeout for blender rpc connection ([GH-85519](https://github.com/godotengine/godot/pull/85519)). +- Fix memory corruption and assert failures in convex decomposition ([GH-85631](https://github.com/godotengine/godot/pull/85631)). +- Add toaster notifications for import warnings ([GH-85807](https://github.com/godotengine/godot/pull/85807)). +- Improve normal map VRAM Compression with RGTC ([GH-85842](https://github.com/godotengine/godot/pull/85842)). +- Fix squish RGTC_R decompression corruption ([GH-85863](https://github.com/godotengine/godot/pull/85863)). +- Prevent overriding file info of another file when reimport creates extra files ([GH-85922](https://github.com/godotengine/godot/pull/85922)). +- Fix `squish` DXT5 RA-As-RG channel swapping ([GH-85967](https://github.com/godotengine/godot/pull/85967)). +- GLTF: Import step interpolation for loc/rot/scale as nearest ([GH-86016](https://github.com/godotengine/godot/pull/86016)). +- Do not print error when editor meta was not found as it will be reimported anyway after ([GH-86137](https://github.com/godotengine/godot/pull/86137)). +- Disable mesh compression if vertex `position.z` is always 0 ([GH-86144](https://github.com/godotengine/godot/pull/86144)). +- Implement `ETC2_R` and `ETC2_RG` compression to etcpak ([GH-86313](https://github.com/godotengine/godot/pull/86313)). +- Support unspecified linear size in DDS files ([GH-86336](https://github.com/godotengine/godot/pull/86336)). +- Add obj importer changes to use ImporterMesh ([GH-86365](https://github.com/godotengine/godot/pull/86365)). +- GLTF: Fix three bugs which prevented extracted textures from being refreshed ([GH-86504](https://github.com/godotengine/godot/pull/86504)). +- Fix data format storage method for PortableCompressedTexture2D ([GH-86835](https://github.com/godotengine/godot/pull/86835)). +- Fix BasisUniversal ETC RA as RG transcoding ([GH-86916](https://github.com/godotengine/godot/pull/86916)). +- Misc changes to the GLTF module before audio PR ([GH-87063](https://github.com/godotengine/godot/pull/87063)). +- Use ETC2 compression for grayscale images ([GH-87144](https://github.com/godotengine/godot/pull/87144)). +- Allow configuring the maximum width for atlas import ([GH-87145](https://github.com/godotengine/godot/pull/87145)). +- Run resource previewer on the main thread if using GL compatibility ([GH-87229](https://github.com/godotengine/godot/pull/87229)). +- Fix crash in `GLTFBufferView::load_buffer_view_data` ([GH-87306](https://github.com/godotengine/godot/pull/87306)). +- Retain meta data set on importer nodes ([GH-87584](https://github.com/godotengine/godot/pull/87584)). +- Fix crash when previewing a scene with a mesh as the root node ([GH-87781](https://github.com/godotengine/godot/pull/87781)). +- Make MeshLibrary export do recursive depth-search for MeshInstance3D nodes ([GH-87923](https://github.com/godotengine/godot/pull/87923)). +- Fix crash when importing a GLTF file with a skeleton as the root ([GH-87933](https://github.com/godotengine/godot/pull/87933)). +- Fix GLTF exporting invalid meshes and attempting to export gizmo meshes ([GH-87934](https://github.com/godotengine/godot/pull/87934)). +- Add "skip file" import option to skip (and exclude from export) importable formats, auto set it for the images used by bitmap font ([GH-87972](https://github.com/godotengine/godot/pull/87972)). +- Optimize when colliders are regenerated for imported meshes ([GH-88045](https://github.com/godotengine/godot/pull/88045)). +- Font: Allow overriding advances, offsets and kerning in the ImageFont import settings ([GH-88088](https://github.com/godotengine/godot/pull/88088)). +- Fix exporting trigger shapes in GLTF ([GH-88201](https://github.com/godotengine/godot/pull/88201)). +- Add support for explicitly-defined compound triggers in GLTF files ([GH-88301](https://github.com/godotengine/godot/pull/88301)). +- Clean up and optimize BasisUniversal ([GH-88464](https://github.com/godotengine/godot/pull/88464)). +- Add ASTC support to BasisUniversal ([GH-88485](https://github.com/godotengine/godot/pull/88485)). +- Rework viewport capture in preview generation ([GH-88589](https://github.com/godotengine/godot/pull/88589)). +- BasisUniversal: Fix texture decompression ([GH-88676](https://github.com/godotengine/godot/pull/88676)). +- Properly calculate binormal when creating SurfaceTool from arrays ([GH-88725](https://github.com/godotengine/godot/pull/88725)). +- Multiple fixes for compressed meshes ([GH-88738](https://github.com/godotengine/godot/pull/88738)). +- Allow preserving the initial bone pose in rest fixer ([GH-88821](https://github.com/godotengine/godot/pull/88821)). +- EditorFileSystem: Add verbose print for file being (re)imported ([GH-88904](https://github.com/godotengine/godot/pull/88904)). +- Fix wrong indexing when generating dummy tangents in GLTF import ([GH-88931](https://github.com/godotengine/godot/pull/88931)). +- Only store vertices referenced by the indices per surface in the glTF importer ([GH-89418](https://github.com/godotengine/godot/pull/89418)). +- BasisUniversal: Fix artifacts on images with resolutions not divisible by 4 ([GH-89426](https://github.com/godotengine/godot/pull/89426)). +- Default to trimesh for generated collision shapes in Advanced Import Settings ([GH-89461](https://github.com/godotengine/godot/pull/89461)). +- Fix method bindings in FBXDocument by making them virtual in GLTFDocument ([GH-89532](https://github.com/godotengine/godot/pull/89532)). +- GLTF: Extract converting hull points to mesh to a helper function ([GH-89542](https://github.com/godotengine/godot/pull/89542)). +- Fix crash when columns are skipped in CSV translation ([GH-89573](https://github.com/godotengine/godot/pull/89573)). +- Fix import and saving related crashes ([GH-89780](https://github.com/godotengine/godot/pull/89780)). +- Fix 2 bugs with scale of position tracks in rest fixer ([GH-90065](https://github.com/godotengine/godot/pull/90065)). +- GLTF export: Propagate `property_list_changed` from extensions ([GH-90225](https://github.com/godotengine/godot/pull/90225)). +- Separate Shape3D resource logic in GLTFPhysicsShape ([GH-90230](https://github.com/godotengine/godot/pull/90230)). +- Fix `GLTFDocument.append_from_scene` crash on null node ([GH-90505](https://github.com/godotengine/godot/pull/90505)). +- Fix errors when re-importing 3D asset files ([GH-90531](https://github.com/godotengine/godot/pull/90531)). +- FBX: Fix material colors ([GH-90554](https://github.com/godotengine/godot/pull/90554)). +- Rename accessor GLTFType to GLTFAccessorType, fix verbose prints, document GLTFAccessor ([GH-90560](https://github.com/godotengine/godot/pull/90560)). +- Fix error when loading SVG imported as Image ([GH-90573](https://github.com/godotengine/godot/pull/90573)). +- Fix FBX texture path resolving ([GH-90635](https://github.com/godotengine/godot/pull/90635)). +- Remove unused Make Streamable option from scene import dialog ([GH-90722](https://github.com/godotengine/godot/pull/90722)). +- Fix FBX and glTF when root nodes are skeleton bones ([GH-90789](https://github.com/godotengine/godot/pull/90789)). +- Resolve bind poses from FBX clusters instead of FBX poses ([GH-91036](https://github.com/godotengine/godot/pull/91036)). +- fbx: Avoid name conflict with humanoid "Root" bone ([GH-91045](https://github.com/godotengine/godot/pull/91045)). +- Fix errors/crashes related to skipped imports ([GH-91078](https://github.com/godotengine/godot/pull/91078)). +- Enable tangents in blend shape format when using normals ([GH-91372](https://github.com/godotengine/godot/pull/91372)). +- FBX: Fix handling missing skins using ufbx importer ([GH-91526](https://github.com/godotengine/godot/pull/91526)). +- FBX: Print ufbx load warnings on import ([GH-91529](https://github.com/godotengine/godot/pull/91529)). +- GLTF export improvements ([GH-91783](https://github.com/godotengine/godot/pull/91783)). +- Editor: Ensure font image rows/columns are positive ([GH-91829](https://github.com/godotengine/godot/pull/91829)). +- Improve memory usage for image import and `PortableCompressedTexture2D` ([GH-92179](https://github.com/godotengine/godot/pull/92179)). +- FBX: Change trimming default and use FBX2glTF for compatibility ([GH-92197](https://github.com/godotengine/godot/pull/92197)). +- Fix script properties being lost and prevent node reference corruption upon scene reimport ([GH-92279](https://github.com/godotengine/godot/pull/92279)). +- Fix reimporting assets with csv in the project ([GH-92320](https://github.com/godotengine/godot/pull/92320)). +- Fix GLTFDocument so it can export CSG Meshes correctly ([GH-92368](https://github.com/godotengine/godot/pull/92368)). +- Avoid crash when importing .glsl in headless ([GH-92539](https://github.com/godotengine/godot/pull/92539)). +- Rename FBX2glTF binary path setting back to 4.2 name ([GH-92571](https://github.com/godotengine/godot/pull/92571)). +- Fix same importer will be added multiple times in `get_importers_for_extension` ([GH-92718](https://github.com/godotengine/godot/pull/92718)). +- Fix Keep/Skip File import selection crash ([GH-92815](https://github.com/godotengine/godot/pull/92815)). +- Fix incorrect camera transform of animation view in the import window ([GH-92974](https://github.com/godotengine/godot/pull/92974)). +- [Image Font Importer] Fix reading advance after hex/dec range ([GH-93074](https://github.com/godotengine/godot/pull/93074)). +- Unset the owner of `ImporterMeshInstance3D` before adding it to skeleton's child ([GH-93117](https://github.com/godotengine/godot/pull/93117)). +- [Image Font Importer] Adds support for `\uXXXX` in the kerning config strings ([GH-93119](https://github.com/godotengine/godot/pull/93119)). +- Fix ProgressDialog crash when importing TTF font ([GH-93161](https://github.com/godotengine/godot/pull/93161)). +- Avoid crashing when scene import settings are empty ([GH-93284](https://github.com/godotengine/godot/pull/93284)). +- Remove `monospace/fixed-width` from the `ResourceImporterImageFont` name and description ([GH-93337](https://github.com/godotengine/godot/pull/93337)). +- Fix `browse_dialog` in Blender scene importer to accept files ([GH-93411](https://github.com/godotengine/godot/pull/93411)). +- Make Basis Universal import quiet unless engine is in verbose mode ([GH-93442](https://github.com/godotengine/godot/pull/93442)). +- Fix default collision shape on imported rigidbody ([GH-93506](https://github.com/godotengine/godot/pull/93506)). +- Editor: Fix importers add-ons after 93238 ([GH-93518](https://github.com/godotengine/godot/pull/93518)). +- Use Hermite instead of Bezier for glTF spline interpolation ([GH-93597](https://github.com/godotengine/godot/pull/93597)). +- Fix reimport by scan parsing dependency paths incorrectly ([GH-93765](https://github.com/godotengine/godot/pull/93765)). +- Fix adding a translation CSV results in errors on initial import for many types of resources ([GH-93919](https://github.com/godotengine/godot/pull/93919)). +- Move GLTFAccessorType into GLTFAccessor ([GH-93920](https://github.com/godotengine/godot/pull/93920)). +- Update vertex color import to handle Blender 4.2 upwards ([GH-93998](https://github.com/godotengine/godot/pull/93998)). +- Fix .blend files with quotation marks in filename fail to import ([GH-94004](https://github.com/godotengine/godot/pull/94004)). +- Fix re-import glb model doesn't change the old glb model ([GH-94020](https://github.com/godotengine/godot/pull/94020)). +- Fix missing options in Project Import Defaults ([GH-94058](https://github.com/godotengine/godot/pull/94058)). +- Fix instanced .blend/GLTF scenes lose all children after update until .tscn is reopened ([GH-94093](https://github.com/godotengine/godot/pull/94093)). +- Fix error message being printed when importing an OBJ with no surfaces ([GH-94102](https://github.com/godotengine/godot/pull/94102)). +- Don't attempt to re-import broken files if they didn't change ([GH-94357](https://github.com/godotengine/godot/pull/94357)). +- Fix handling of missing bin file in gltf separate ([GH-94506](https://github.com/godotengine/godot/pull/94506)). +- Fix LOD generation for meshes with tangents & mirrored UVs ([GH-94682](https://github.com/godotengine/godot/pull/94682)). +- Android Editor: Disable file reimport when .import changes ([GH-94691](https://github.com/godotengine/godot/pull/94691)). +- Fix obj's name set in wrong order when importing ([GH-94968](https://github.com/godotengine/godot/pull/94968)). +- Fix reimporting textures after changing import project settings ([GH-94975](https://github.com/godotengine/godot/pull/94975)). +- Fix performance issue reimport file reload scene ([GH-95225](https://github.com/godotengine/godot/pull/95225)). +- Fix reimport file multiple scenes ([GH-95264](https://github.com/godotengine/godot/pull/95264)). #### Input -- Check if input marked handled before processing additional CollisionObjects ([GH-48800](https://github.com/godotengine/godot/pull/48800)). -- Add Unit tests for viewport.cpp Physics 2D Picking ([GH-73477](https://github.com/godotengine/godot/pull/73477)). -- Fix code editor scrolling experience on track pads ([GH-73502](https://github.com/godotengine/godot/pull/73502)). -- Prevent double input events on gamepad when running through steam input ([GH-76045](https://github.com/godotengine/godot/pull/76045)). -- Implement `DisplayServer.keyboard_get_label_from_physical` method ([GH-77993](https://github.com/godotengine/godot/pull/77993)). -- Fix Physics Picking captured Object initialization ([GH-78383](https://github.com/godotengine/godot/pull/78383)). -- Add the ability to get per-platform information for joypads ([GH-78539](https://github.com/godotengine/godot/pull/78539)). -- Mention Xbox menu button by name in Start button description ([GH-78701](https://github.com/godotengine/godot/pull/78701)). -- Android: Set `echo` property for the physical keyboard events ([GH-79089](https://github.com/godotengine/godot/pull/79089)). -- Fix physics passive hovering with `MOUSE_FILTER_IGNORE` ([GH-79443](https://github.com/godotengine/godot/pull/79443)). -- Make GridMap shortcuts editable and not conflict with other plugins ([GH-79529](https://github.com/godotengine/godot/pull/79529)). -- Separate input-handled-state for different events during physics-picking ([GH-79546](https://github.com/godotengine/godot/pull/79546)). -- Fix crash on Windows when closing `Window` ([GH-80142](https://github.com/godotengine/godot/pull/80142)). -- Ensure TileMap editor shortcuts are handled ([GH-80317](https://github.com/godotengine/godot/pull/80317)). -- Fix nodes receiving mouse events in black bars of `Window` ([GH-80334](https://github.com/godotengine/godot/pull/80334)). -- Properly load multiple action sets in XR ([GH-80419](https://github.com/godotengine/godot/pull/80419)). -- Ensure `joy_connection_changed` is emitted on the main thread ([GH-80432](https://github.com/godotengine/godot/pull/80432)). -- Android Stylus pressure and tilt support ([GH-80644](https://github.com/godotengine/godot/pull/80644)). -- Fix GridMap shortcuts that should not be physical ([GH-80774](https://github.com/godotengine/godot/pull/80774)). -- Fix action state when multiple events are assigned ([GH-80859](https://github.com/godotengine/godot/pull/80859)). -- Fix Android input routing logic when using a hardware keyboard ([GH-80932](https://github.com/godotengine/godot/pull/80932)). -- Add missing YEN, SECTION and OPENURL names to keycode mappings ([GH-81054](https://github.com/godotengine/godot/pull/81054)). -- Prevent axis-based actions from getting stuck ([GH-81170](https://github.com/godotengine/godot/pull/81170)). -- Android: Fix joypad trigger value range ([GH-81322](https://github.com/godotengine/godot/pull/81322)). -- Fix `Input.is_action_just_pressed` flicker on joypad axes ([GH-82056](https://github.com/godotengine/godot/pull/82056)). -- Make InputEventShortcut always pressed ([GH-82203](https://github.com/godotengine/godot/pull/82203)). -- Sync controller mappings DB with SDL2 community repo ([GH-82245](https://github.com/godotengine/godot/pull/82245)). -- Add XInput device ID for wireless Series 2 Elite controller ([GH-82508](https://github.com/godotengine/godot/pull/82508)). -- Fix the timeframe when the Android gestures properties are retrieved ([GH-83173](https://github.com/godotengine/godot/pull/83173)). -- Fix Android logic for deferred window input events being inverted ([GH-83301](https://github.com/godotengine/godot/pull/83301)). -- Fix shortcut input for `EditorSceneTabs` ([GH-83501](https://github.com/godotengine/godot/pull/83501)). -- Sync controller mappings DB with SDL2 community repo ([GH-83845](https://github.com/godotengine/godot/pull/83845)). -- Add save shortcut for text shader editor to prevent it propagating to scene ([GH-84064](https://github.com/godotengine/godot/pull/84064)). -- Fix stuck cursor in Advanced Scene Importer ([GH-84661](https://github.com/godotengine/godot/pull/84661)). -- Rework input actions to be reliable ([GH-84685](https://github.com/godotengine/godot/pull/84685)). +- Add setting for picking only top-most overlapping collision object ([GH-75688](https://github.com/godotengine/godot/pull/75688)). +- Fix `push_input` events not going through after first pressed mouse event ([GH-77730](https://github.com/godotengine/godot/pull/77730)). +- Web: Add IME input support ([GH-79362](https://github.com/godotengine/godot/pull/79362)). +- Support detecting and mapping Ctrl/Alt/Shift/Meta by their left/right physical location ([GH-80231](https://github.com/godotengine/godot/pull/80231)). +- Ensure the active window gains the keyboard focus ([GH-80548](https://github.com/godotengine/godot/pull/80548)). +- Fix controller vibration in macOS and migrate to GameController API ([GH-80709](https://github.com/godotengine/godot/pull/80709)). +- Fix internal events not being delivered to some Window types ([GH-81243](https://github.com/godotengine/godot/pull/81243)). +- Add support for OpenXR hand interaction extension ([GH-81533](https://github.com/godotengine/godot/pull/81533)). +- Add screen-related attributes to mouse input events ([GH-82800](https://github.com/godotengine/godot/pull/82800)). +- Fix InputEventScreenDrag on Android ([GH-84331](https://github.com/godotengine/godot/pull/84331)). +- Windows: Make Windows Ink tablet API default, add dummy driver to disable tablet input ([GH-84708](https://github.com/godotengine/godot/pull/84708)). +- Rework Input action pressed state to support multiple controllers ([GH-84943](https://github.com/godotengine/godot/pull/84943)). +- X11: Send IME update notification deferred ([GH-85306](https://github.com/godotengine/godot/pull/85306)). +- Fix IME key event being erased in macOS ([GH-85458](https://github.com/godotengine/godot/pull/85458)). +- Fix horizontal scroll in editor's 2D view ([GH-85473](https://github.com/godotengine/godot/pull/85473)). +- Add `event_index` to InputEventAction ([GH-86010](https://github.com/godotengine/godot/pull/86010)). +- Add bindings for setting and getting emulation mouse from touch and touch from mouse in input ([GH-86081](https://github.com/godotengine/godot/pull/86081)). +- Add MIDI controller device index to `InputEventMIDI.device` property ([GH-86620](https://github.com/godotengine/godot/pull/86620)). +- Prevent escape key from closing Editor Settings window when filtering for shortcuts ([GH-86654](https://github.com/godotengine/godot/pull/86654)). +- Clear drag preview nodes on `NOTIFICATION_DRAG_END` ([GH-87125](https://github.com/godotengine/godot/pull/87125)). +- macOS: Handle Trackpad / Magic Mouse swipe events and simulate XBUTTON1 / XBUTTON2 buttons ([GH-87277](https://github.com/godotengine/godot/pull/87277)). +- Check action exists in `Input.action_press` and `action_release` ([GH-87324](https://github.com/godotengine/godot/pull/87324)). +- Fix SubViewport physics picking ([GH-87385](https://github.com/godotengine/godot/pull/87385)). +- macOS: Fix missing modifier + space key down events ([GH-87498](https://github.com/godotengine/godot/pull/87498)). +- Add cancel transformation shortcut to 2D to match 3D ([GH-87616](https://github.com/godotengine/godot/pull/87616)). +- Remove unused internal Variable `Viewport::gui_input_group` ([GH-87632](https://github.com/godotengine/godot/pull/87632)). +- Fix LineEdit behavior for deleting all the way to the left/right ([GH-88057](https://github.com/godotengine/godot/pull/88057)). +- Add rotary input support for Android platform ([GH-88130](https://github.com/godotengine/godot/pull/88130)). +- Allow aborting `SpinSlider` value changes ([GH-88275](https://github.com/godotengine/godot/pull/88275)). +- macOS: Fix `Ctrl+Tab` and `Ctrl+Shift+Tab` not working ([GH-88334](https://github.com/godotengine/godot/pull/88334)). +- Handle warped mouse motion as floating point ([GH-88343](https://github.com/godotengine/godot/pull/88343)). +- macOS: Fix the "Toggle Hidden Files" shortcut ([GH-88389](https://github.com/godotengine/godot/pull/88389)). +- Fix global position for `InputEventMouse` in `viewport::push_input` ([GH-88473](https://github.com/godotengine/godot/pull/88473)). +- macOS: Ignore window decorations in confined mouse mode to match other platforms ([GH-88519](https://github.com/godotengine/godot/pull/88519)). +- Wayland: Restore tablet support and handle multiple tools ([GH-88744](https://github.com/godotengine/godot/pull/88744)). +- Improve `cursor_set_custom_image()` method ([GH-88970](https://github.com/godotengine/godot/pull/88970)). +- macOS: Enable input from controllers in the background ([GH-88978](https://github.com/godotengine/godot/pull/88978)). +- Expose `DEVICE_ID_EMULATION` constant in InputEvent ([GH-89526](https://github.com/godotengine/godot/pull/89526)). +- Fix mouse events when `physics_object_picking_first_only` enabled ([GH-89643](https://github.com/godotengine/godot/pull/89643)). +- Prohibit execution of delayed input events by different means ([GH-89920](https://github.com/godotengine/godot/pull/89920)). +- Fix a special case for button masks ([GH-89926](https://github.com/godotengine/godot/pull/89926)). +- Fix `Input.action_press()` accepting out-of-bounds strength values ([GH-89946](https://github.com/godotengine/godot/pull/89946)). +- Windows: Fix mouse handling regression ([GH-90382](https://github.com/godotengine/godot/pull/90382)). +- Update undo redo allowed after switching scene tab ([GH-90616](https://github.com/godotengine/godot/pull/90616)). +- iOS: Fix sensors orientation ([GH-91050](https://github.com/godotengine/godot/pull/91050)). +- Add `amplitude` argument to `Input.vibrate_handheld` ([GH-91143](https://github.com/godotengine/godot/pull/91143)). +- Fix Steam input "crc" errors, and some other Coverity reports of uninitialized scalar variable ([GH-91454](https://github.com/godotengine/godot/pull/91454)). +- [Web IME] Fix suggestion window position in Chromium based browsers ([GH-91695](https://github.com/godotengine/godot/pull/91695)). +- Disable viewports inputs when dragging and dropping into the viewport ([GH-91845](https://github.com/godotengine/godot/pull/91845)). +- Use Option+Cmd+Left/Right for script editor history navigation on macOS ([GH-91887](https://github.com/godotengine/godot/pull/91887)). +- Fix invalid detection of mouse input ([GH-92133](https://github.com/godotengine/godot/pull/92133)). +- Clean `Input::frame_parsed_events` before de-initialising scripting languages to ensure no script created events exist at the exit ([GH-92201](https://github.com/godotengine/godot/pull/92201)). +- Remove duplicate shortcut definitions ([GH-92223](https://github.com/godotengine/godot/pull/92223)). +- Windows: Use current keyboard state instead of saved values for modifier keys ([GH-92415](https://github.com/godotengine/godot/pull/92415)). +- Use current mouse button state instead of saved values ([GH-92424](https://github.com/godotengine/godot/pull/92424)). +- Fix creating cursor image from `AtlasTexture` ([GH-92702](https://github.com/godotengine/godot/pull/92702)). +- Fix Windows Activate Process leading to stuck input ([GH-92742](https://github.com/godotengine/godot/pull/92742)). +- Add input event callback to `DisplayServerHeadless` ([GH-92806](https://github.com/godotengine/godot/pull/92806)). +- Fix Left Joystick motion not registering on Android ([GH-93011](https://github.com/godotengine/godot/pull/93011)). +- Wayland: Implement IME support ([GH-93021](https://github.com/godotengine/godot/pull/93021)). +- Window: Ignore duplicate mouse enter events ([GH-93100](https://github.com/godotengine/godot/pull/93100)). +- Windows Input use GetKeyState instead of GetAsyncKeyState ([GH-93105](https://github.com/godotengine/godot/pull/93105)). +- Prevent node rename shortcut from stealing focus from controls ([GH-93165](https://github.com/godotengine/godot/pull/93165)). +- Fix ruler tool sticks after right click ([GH-93174](https://github.com/godotengine/godot/pull/93174)). +- Fix trackpads and graphics tablets being recognized as controllers on Linux/*BSD ([GH-93352](https://github.com/godotengine/godot/pull/93352)). +- Add stub method for `mouse_get_position` in headless display server ([GH-93494](https://github.com/godotengine/godot/pull/93494)). +- Fix undoredo handling in some dialogs ([GH-93898](https://github.com/godotengine/godot/pull/93898)). +- Wayland: Scale relative pointer motion ([GH-94021](https://github.com/godotengine/godot/pull/94021)). +- Web: Fix IME blocking controls ([GH-94024](https://github.com/godotengine/godot/pull/94024)). +- Fix custom Ctrl-Space shortcut in Script Editor adds a space ([GH-94033](https://github.com/godotengine/godot/pull/94033)). +- Cleanup Android input on render thread settings ([GH-94052](https://github.com/godotengine/godot/pull/94052)). +- Winink: Check pointer button states ([GH-94063](https://github.com/godotengine/godot/pull/94063)). +- Add Home/End to text caret movements on macOS ([GH-94073](https://github.com/godotengine/godot/pull/94073)). +- [iOS/Text Input] Avoid deleting and reentering unchanged part of text ([GH-94114](https://github.com/godotengine/godot/pull/94114)). +- Fix physics tick count in `Input.action_press` and `Input.action_release` ([GH-94413](https://github.com/godotengine/godot/pull/94413)). +- Fix update mouse cursor state wrong mouse position ([GH-94987](https://github.com/godotengine/godot/pull/94987)). +- X11: Use motion event button state instead of async state ([GH-95008](https://github.com/godotengine/godot/pull/95008)). +- Windows: Reject `WM_POINTER(UP/DOWN)` messages for non pen pointer type ([GH-95155](https://github.com/godotengine/godot/pull/95155)). #### Multiplayer -- Disallow nested custom multiplayers in `SceneTree` ([GH-77829](https://github.com/godotengine/godot/pull/77829)). -- Prevent crash when accessing `Node` Multiplayer from thread ([GH-79332](https://github.com/godotengine/godot/pull/79332)). -- Use `get/set_indexed` in MultiplayerSynchronizer ([GH-79479](https://github.com/godotengine/godot/pull/79479)). -- [Net/ENet] Better handle truncated socket messages ([GH-79699](https://github.com/godotengine/godot/pull/79699)). -- ENet: Properly set transfer flags when using custom channels ([GH-80293](https://github.com/godotengine/godot/pull/80293)). -- Fix watch properties not being correctly removed ([GH-81033](https://github.com/godotengine/godot/pull/81033)). -- Improve SceneReplicationConfig editor UX + optimizations ([GH-81136](https://github.com/godotengine/godot/pull/81136)). -- Various performance optimizations ([GH-82777](https://github.com/godotengine/godot/pull/82777)). -- Copy network authority when instancing placeholders ([GH-82846](https://github.com/godotengine/godot/pull/82846)). -- Fix synchronizer init and reset ([GH-83264](https://github.com/godotengine/godot/pull/83264)). -- Fix "on change" indexed properties ([GH-83279](https://github.com/godotengine/godot/pull/83279)). -- Display multiplayer authority ID in remote debugger ([GH-83437](https://github.com/godotengine/godot/pull/83437)). +- Fix `complete_auth` notifying the wrong peer ([GH-86257](https://github.com/godotengine/godot/pull/86257)). +- Fix auth not waiting for confirmation in some cases ([GH-86260](https://github.com/godotengine/godot/pull/86260)). +- Fix spawned nodes not working after reset ([GH-87185](https://github.com/godotengine/godot/pull/87185)). +- Fix remote net ID cleanup ([GH-87186](https://github.com/godotengine/godot/pull/87186)). +- Handle cleanup of "scene cache" nodes ([GH-87190](https://github.com/godotengine/godot/pull/87190)). +- Networking scene multiplayer: Fix removing connected peer during disconnection ([GH-88826](https://github.com/godotengine/godot/pull/88826)). +- Fix replication config reload error ([GH-89108](https://github.com/godotengine/godot/pull/89108)). +- Fix node config warning not updating for `Multiplayer{Spawner,Synchronizer}` ([GH-89839](https://github.com/godotengine/godot/pull/89839)). +- Gracefully handle cache confirmation of deleted nodes ([GH-90027](https://github.com/godotengine/godot/pull/90027)). +- Fix dead code doing unnecessary allocation ([GH-90315](https://github.com/godotengine/godot/pull/90315)). +- Fix `disconnect_peer` not doing the proper cleanup ([GH-91011](https://github.com/godotengine/godot/pull/91011)). +- Modify MultiplayerSpawner scene path error checking ([GH-91084](https://github.com/godotengine/godot/pull/91084)). +- Fix Multiplayer Spawner freeing node after client disconnected Issue ([GH-92359](https://github.com/godotengine/godot/pull/92359)). +- Fix undo not updating spawn checkbox in replication editor ([GH-92735](https://github.com/godotengine/godot/pull/92735)). +- Instantiate a replication config on synchronizer creation ([GH-93374](https://github.com/godotengine/godot/pull/93374)). +- Partially revert cache cleanup, track paths as fallback ([GH-94984](https://github.com/godotengine/godot/pull/94984)). +- ENet: Better handle disconnected peers in DTLS server ([GH-95067](https://github.com/godotengine/godot/pull/95067)). +- Avoid error spam in relay protocol when clients disconnect ([GH-95192](https://github.com/godotengine/godot/pull/95192)). +- Fix relay protocol routing with negative targets ([GH-95194](https://github.com/godotengine/godot/pull/95194)). #### Navigation -- Add NavigationRegion function to change navigation map ([GH-77191](https://github.com/godotengine/godot/pull/77191)). -- Add ProjectSettings navigation map default up ([GH-78365](https://github.com/godotengine/godot/pull/78365)). -- Add more basic tests for `NavigationServer3D` ([GH-78480](https://github.com/godotengine/godot/pull/78480)). -- Add advanced `NavigationServer3D` tests ([GH-78667](https://github.com/godotengine/godot/pull/78667)). -- Fix closest possible navigation path position ([GH-79004](https://github.com/godotengine/godot/pull/79004)). -- Add NavigationServer API to enable regions and links ([GH-79129](https://github.com/godotengine/godot/pull/79129)). -- Mark NavigationServer3D.region_bake_navigation_mesh() as deprecated ([GH-79137](https://github.com/godotengine/godot/pull/79137)). -- Add `clear` function to NavigationMesh / NavigationPolygon ([GH-79157](https://github.com/godotengine/godot/pull/79157)). -- Fix pathfinding funnel adding unwanted point ([GH-79228](https://github.com/godotengine/godot/pull/79228)). -- Fix NavigationObstacle2D debug position ([GH-79392](https://github.com/godotengine/godot/pull/79392)). -- Make NavigationRegion3D baking NavMesh on the main thread not finish deferred ([GH-79465](https://github.com/godotengine/godot/pull/79465)). -- Change 2D navigation ProjectSettings from integers to floats ([GH-79483](https://github.com/godotengine/godot/pull/79483)). -- Set default `cell_size` on new TileMap Layer navigation layer maps ([GH-79485](https://github.com/godotengine/godot/pull/79485)). -- Add more hints to navigation map cell size errors ([GH-79489](https://github.com/godotengine/godot/pull/79489)). -- Add a `fill_region` method to the `AStarGrid2D` ([GH-79495](https://github.com/godotengine/godot/pull/79495)). -- Move navigation mesh baking to NavigationServer ([GH-79643](https://github.com/godotengine/godot/pull/79643)). -- Disable NavigationMesh `edge_max_length` property by default ([GH-79786](https://github.com/godotengine/godot/pull/79786)). -- Add multi-threaded NavMesh baking to NavigationServer ([GH-79972](https://github.com/godotengine/godot/pull/79972)). -- Fix NavMesh `map_update_id` returning 0 results in errors ([GH-80189](https://github.com/godotengine/godot/pull/80189)). -- Fix missing include for `NavigationMesh` ([GH-80408](https://github.com/godotengine/godot/pull/80408)). -- Add 2D navigation mesh baking ([GH-80796](https://github.com/godotengine/godot/pull/80796)). -- Suppress expected errors in navigation-related unit tests ([GH-80833](https://github.com/godotengine/godot/pull/80833)). -- Fix compiling with 3D disabled due to unused navigation variable ([GH-81295](https://github.com/godotengine/godot/pull/81295)). -- Core: Some code style improvements to `AStarGrid2D` ([GH-81900](https://github.com/godotengine/godot/pull/81900)). -- Fix typo in dev assert in NavMeshGenerator2D ([GH-82368](https://github.com/godotengine/godot/pull/82368)). -- Update TileMap to use new navigation polygon baking ([GH-82465](https://github.com/godotengine/godot/pull/82465)). -- Fix NavigationObstacle3D debug being affected by rotation and scale ([GH-82593](https://github.com/godotengine/godot/pull/82593)). -- Fix enabling NavigationRegion3D saved disabled ([GH-83365](https://github.com/godotengine/godot/pull/83365)). -- Fix "Navigation map synchronization error" when using NavigationRegion2D ([GH-83568](https://github.com/godotengine/godot/pull/83568)). -- Fix NavRegion sync error messages ([GH-83574](https://github.com/godotengine/godot/pull/83574)). -- Fix NavigationObstacle3D height ([GH-83701](https://github.com/godotengine/godot/pull/83701)). -- Fix NavigationAgent3D stored y-axis velocity and make it optional ([GH-83705](https://github.com/godotengine/godot/pull/83705)). -- Fix NavigationLink enabled toggle ([GH-83709](https://github.com/godotengine/godot/pull/83709)). -- Fix hole in heightmap navigation mesh baking ([GH-83783](https://github.com/godotengine/godot/pull/83783)). -- Fix potential crashes with TileMap navmesh baking ([GH-83891](https://github.com/godotengine/godot/pull/83891)). -- Fix NavigationObstacle3DEditor parenting error ([GH-84055](https://github.com/godotengine/godot/pull/84055)). -- Fix NavigationObstacle elevation ([GH-84830](https://github.com/godotengine/godot/pull/84830)). -- Fix NavigationObstacle height ([GH-84857](https://github.com/godotengine/godot/pull/84857)). +- Add NavigationServer random point queries ([GH-75098](https://github.com/godotengine/godot/pull/75098)). +- Make navigation map spatial queries thread-safe ([GH-79577](https://github.com/godotengine/godot/pull/79577)). +- Add isometric cell shape mode to `AStarGrid2D` ([GH-81267](https://github.com/godotengine/godot/pull/81267)). +- Make `target_desired_distance` affect the navigation of `NavigationAgent2D/3D` ([GH-82561](https://github.com/godotengine/godot/pull/82561)). +- Fix missing NavigationLink property updates in constructor ([GH-83802](https://github.com/godotengine/godot/pull/83802)). +- Fix missing NavigationRegion property updates in constructor ([GH-83812](https://github.com/godotengine/godot/pull/83812)). +- Fix missing NavigationAgent property updates in constructor ([GH-83814](https://github.com/godotengine/godot/pull/83814)). +- Fix missing NavigationObstacle property updates in constructor ([GH-83816](https://github.com/godotengine/godot/pull/83816)). +- Add function to get navigation map iteration id from NavigationServer ([GH-84275](https://github.com/godotengine/godot/pull/84275)). +- Improve NavigationServer NavMap sync error msgs ([GH-84278](https://github.com/godotengine/godot/pull/84278)). +- Add missing getters to navigation servers ([GH-84729](https://github.com/godotengine/godot/pull/84729)). +- Fix memory leak in 'NavigationServer3D' involving static obstacles ([GH-84816](https://github.com/godotengine/godot/pull/84816)). +- Do not use travel cost for minimum when re-selecting end point ([GH-85253](https://github.com/godotengine/godot/pull/85253)). +- Fix NavigationRegion2D transform update ([GH-85258](https://github.com/godotengine/godot/pull/85258)). +- Make 2D navigation mesh baking parse all TileMapLayers ([GH-85856](https://github.com/godotengine/godot/pull/85856)). +- Fix default NavigationPolygon source geometry group name ([GH-86458](https://github.com/godotengine/godot/pull/86458)). +- Add NavigationMesh `border_size` property for tile baking ([GH-87378](https://github.com/godotengine/godot/pull/87378)). +- Auto-bake edited NavigationPolygons in the Editor on a timer ([GH-87504](https://github.com/godotengine/godot/pull/87504)). +- Expose `is_baking` method in navigation servers and region nodes ([GH-87715](https://github.com/godotengine/godot/pull/87715)). +- Add means for fixing navmap synchronization errors ([GH-87959](https://github.com/godotengine/godot/pull/87959)). +- Add NavigationPolygon `border_size` property for tile baking ([GH-87961](https://github.com/godotengine/godot/pull/87961)). +- Add a partial path return option for AStar ([GH-88047](https://github.com/godotengine/godot/pull/88047)). +- Fix property hints for parsed collision mask ([GH-88156](https://github.com/godotengine/godot/pull/88156)). +- Fix NavigationRegion errors from signal changes ([GH-88164](https://github.com/godotengine/godot/pull/88164)). +- Extend `NavigationMeshSourceGeometryData[23]D` to allow data merging ([GH-88221](https://github.com/godotengine/godot/pull/88221)). +- Remove NavigationServerDummy warnings ([GH-88375](https://github.com/godotengine/godot/pull/88375)). +- Add some missing compile checks ([GH-88679](https://github.com/godotengine/godot/pull/88679)). +- Add debug visual for NavigationRegion2D bake rect ([GH-88701](https://github.com/godotengine/godot/pull/88701)). +- Fix NavigationObstacle2D debug being affected by Node2D transform ([GH-88895](https://github.com/godotengine/godot/pull/88895)). +- Fix NavigationObstacle3D debug not reacting to visibility changes ([GH-89009](https://github.com/godotengine/godot/pull/89009)). +- Add NavigationObstacle options to affect navigation mesh baking ([GH-89034](https://github.com/godotengine/godot/pull/89034)). +- Add navigation baking crash prevention mechanism ([GH-89692](https://github.com/godotengine/godot/pull/89692)). +- Change 2D navigation mesh baking to use floating point coordinates ([GH-89929](https://github.com/godotengine/godot/pull/89929)). +- Fix `NavigationServer.set_debug_enabled()` doing nothing ([GH-90200](https://github.com/godotengine/godot/pull/90200)). +- Add navigation path simplification ([GH-90434](https://github.com/godotengine/godot/pull/90434)). +- Fix NavigationMeshSourceGeometryData merge crash ([GH-90504](https://github.com/godotengine/godot/pull/90504)). +- Use threads for baking navigation mesh inside editor ([GH-90508](https://github.com/godotengine/godot/pull/90508)). +- Use fmod for navigation mesh border size warning ([GH-90602](https://github.com/godotengine/godot/pull/90602)). +- Update NavigationRegion tests RID function ([GH-90744](https://github.com/godotengine/godot/pull/90744)). +- Remove experimental `constrain_avoidance` from `NavigationRegion2D` ([GH-90747](https://github.com/godotengine/godot/pull/90747)). +- Add navigation mesh source geometry parsers and callbacks ([GH-90876](https://github.com/godotengine/godot/pull/90876)). +- Warn that navigation mesh baking from Meshes is bad for runtime performance ([GH-90921](https://github.com/godotengine/godot/pull/90921)). +- Add NavigationMeshSourceGeometryData append functions ([GH-90935](https://github.com/godotengine/godot/pull/90935)). +- NavigationRegion test suppress warning about visual meshes ([GH-91103](https://github.com/godotengine/godot/pull/91103)). +- Fix TileMapLayer navmesh baking ([GH-91464](https://github.com/godotengine/godot/pull/91464)). +- Allow editing `NavigationObstacle2D` shape vertices ([GH-91872](https://github.com/godotengine/godot/pull/91872)). +- Remove duplicated vertices after 3D NavigationMesh bake ([GH-92181](https://github.com/godotengine/godot/pull/92181)). +- Fix NavigationRegion3D not reacting to runtime debug enabled change ([GH-92288](https://github.com/godotengine/godot/pull/92288)). +- Improve NavigationRegion2D debug performance ([GH-92372](https://github.com/godotengine/godot/pull/92372)). +- Fix crash when baking TileMap navigation ([GH-92422](https://github.com/godotengine/godot/pull/92422)). +- Fix `NavigationServer3D.get_closest_point_to_segment()` with `use_collision` ([GH-92850](https://github.com/godotengine/godot/pull/92850)). +- TileSet: Transform rotated navigation (sub)-polygons individually ([GH-92955](https://github.com/godotengine/godot/pull/92955)). +- Fix NavigationRegion2D debug not clearing canvas item ([GH-92991](https://github.com/godotengine/godot/pull/92991)). +- Fix NavigationRegion2D editor plugin clear button not updating debug visuals ([GH-92994](https://github.com/godotengine/godot/pull/92994)). +- Fix closest edge and face check in `NavigationServer3D.map_get_closest_point_to_segment` ([GH-93227](https://github.com/godotengine/godot/pull/93227)). +- Fix thread-use causing navigation mesh data corruption ([GH-93392](https://github.com/godotengine/godot/pull/93392)). +- Fix thread-use causing navigation source geometry data corruption ([GH-93407](https://github.com/godotengine/godot/pull/93407)). +- Fix potential crash due to invalid navigation mesh ref ([GH-93423](https://github.com/godotengine/godot/pull/93423)). +- Fix thread-use causing navigation polygon data corruption ([GH-93426](https://github.com/godotengine/godot/pull/93426)). +- Remove unused navigation polygon properties ([GH-93485](https://github.com/godotengine/godot/pull/93485)). +- `NavigationServer3D.map_get_closest_point_to_segment` - add an additional shortest distance check ([GH-93541](https://github.com/godotengine/godot/pull/93541)). +- Fix NavigationPolygon not updating consistently on rebakes ([GH-94362](https://github.com/godotengine/godot/pull/94362)). #### Network -- Fix `rpc` calls with binds ([GH-78551](https://github.com/godotengine/godot/pull/78551)). -- Web: Fix WebSocket returning empty close-reason ([GH-79407](https://github.com/godotengine/godot/pull/79407)). -- Web: Always return -1 as body length in HTTPClientWeb ([GH-79846](https://github.com/godotengine/godot/pull/79846)). +- Add unit test for `IP.resolve_hostname` ([GH-81465](https://github.com/godotengine/godot/pull/81465)). +- UPNP: Use local variable for UPNPUrls to stop memory leak ([GH-89897](https://github.com/godotengine/godot/pull/89897)). +- mbedTLS: Update to new LTS v3.6.0 ([GH-90482](https://github.com/godotengine/godot/pull/90482)). +- Fix missing return in `StreamPeerTCP::poll` when connection is `STATUS_CONNECTED` ([GH-90741](https://github.com/godotengine/godot/pull/90741)). +- Crypto: Expose `get_system_ca_certificates` ([GH-93176](https://github.com/godotengine/godot/pull/93176)). +- Crypto: Expose TLSOptions getters ([GH-93178](https://github.com/godotengine/godot/pull/93178)). +- WebSocket: Allow reusing closing and closed peers ([GH-94168](https://github.com/godotengine/godot/pull/94168)). +- WebSocket: Ensure `TCP_NODELAY` is always set ([GH-94618](https://github.com/godotengine/godot/pull/94618)). +- WS: Fix `set_no_delay` on Windows ([GH-95233](https://github.com/godotengine/godot/pull/95233)). #### Particles -- Add `finished` signal to CPUParticles ([GH-76853](https://github.com/godotengine/godot/pull/76853)). -- Add `finished` signal to GPUParticles ([GH-76859](https://github.com/godotengine/godot/pull/76859)). -- Initialize particles instance buffer in case it is used before being updated ([GH-78852](https://github.com/godotengine/godot/pull/78852)). -- Add option to center image when loading particle emission mask ([GH-78944](https://github.com/godotengine/godot/pull/78944)). -- Unify error condition for particles trail lifetime ([GH-79270](https://github.com/godotengine/godot/pull/79270)). -- Particle internal refactor and additions for more artistic control ([GH-79527](https://github.com/godotengine/godot/pull/79527)). -- Fix particle shader deterministic random values ([GH-80638](https://github.com/godotengine/godot/pull/80638)). -- Add motion vector support for GPU 3D Particles ([GH-80688](https://github.com/godotengine/godot/pull/80688)). -- Implement conversion from `CPUParticles` to `GPUParticles` (3D/2D) ([GH-80779](https://github.com/godotengine/godot/pull/80779)). -- Fix GPUParticles2D offset stutter ([GH-80984](https://github.com/godotengine/godot/pull/80984)). -- Fix z-billboard + y to velocity transform alignment to correctly respect non-uniform scale ([GH-81315](https://github.com/godotengine/godot/pull/81315)). -- Fix errors when freeing GPUParticles ([GH-82431](https://github.com/godotengine/godot/pull/82431)). -- Fixed multiple particle issues: division by zero, color ramp override, scale dependent on amount ratio ([GH-83488](https://github.com/godotengine/godot/pull/83488)). -- Fix typo in particles process material when using emission color texture ([GH-83620](https://github.com/godotengine/godot/pull/83620)). -- Fix massive performance hit due to enabling collision ([GH-83749](https://github.com/godotengine/godot/pull/83749)). -- Fix directed points not working, and fix friction formula ([GH-83831](https://github.com/godotengine/godot/pull/83831)). -- Fix `noise_direction` variable used before initialized in particle shader when using turbulence with collisions ([GH-83881](https://github.com/godotengine/godot/pull/83881)). -- Fix invalid parameter ranges ([GH-84006](https://github.com/godotengine/godot/pull/84006)). -- Fix friction being in the correct if/else branch ([GH-84028](https://github.com/godotengine/godot/pull/84028)). -- Fix damp as friction not updating shader code ([GH-84029](https://github.com/godotengine/godot/pull/84029)). -- Fix wrong rotation matrix for orbit z velocity ([GH-84056](https://github.com/godotengine/godot/pull/84056)). -- Fix turbulence post rework ([GH-84103](https://github.com/godotengine/godot/pull/84103)). -- OpenGL: Fix uninitialized memory usage for GPUParticles `interp_to_end` ([GH-84189](https://github.com/godotengine/godot/pull/84189)). -- Fix several Material texture parameter updates ([GH-84303](https://github.com/godotengine/godot/pull/84303)). -- Fix several ParticleProcessMaterial texture names ([GH-84829](https://github.com/godotengine/godot/pull/84829)). -- Fix radial inwards velocity clamping incorrectly (regression from #83488) ([GH-85252](https://github.com/godotengine/godot/pull/85252)). +- Support custom AABBs within MultiMesh resources ([GH-79833](https://github.com/godotengine/godot/pull/79833)). +- Improve editing of min/max particle properties ([GH-81260](https://github.com/godotengine/godot/pull/81260)). +- Fix `CPUParticles2D` tangential force does not match `GPUParticles2D` ([GH-84575](https://github.com/godotengine/godot/pull/84575)). +- Only allow MeshInstance3D-based nodes in particles emission shape node selector ([GH-84891](https://github.com/godotengine/godot/pull/84891)). +- Correctly emit sub-emitter's emission at the end ([GH-85189](https://github.com/godotengine/godot/pull/85189)). +- Fix particle spread values affecting particle velocity ([GH-85880](https://github.com/godotengine/godot/pull/85880)). +- Only update particle velocity when it changes ([GH-86474](https://github.com/godotengine/godot/pull/86474)). +- Fix collided particles getting stuck with zero velocity ([GH-87320](https://github.com/godotengine/godot/pull/87320)). +- Fix CPU/GPUParticles2D bugs on Compatibility Rendering (GLES3) on Adreno 3XX devices ([GH-88816](https://github.com/godotengine/godot/pull/88816)). +- Fix early activation of particle trail sections ([GH-89042](https://github.com/godotengine/godot/pull/89042)). +- Fix error in AABB calculation for particles with USERDATA ([GH-89046](https://github.com/godotengine/godot/pull/89046)). +- Fix `update_property()` in particle material editor ([GH-89048](https://github.com/godotengine/godot/pull/89048)). +- Fix `USERDATA` built-ins for GLES3 particle shaders ([GH-89094](https://github.com/godotengine/godot/pull/89094)). +- Fix `CPUParticles3D` using angle incorrectly when `ROTATE_Y` is set ([GH-89595](https://github.com/godotengine/godot/pull/89595)). +- Fix `INSTANCE_CUSTOM.w` not being assigned correctly in CPUParticles 2D and 3D ([GH-90095](https://github.com/godotengine/godot/pull/90095)). +- Fix inverted GPUParticlesCollisionHeightField3D ([GH-91219](https://github.com/godotengine/godot/pull/91219)). +- Fix particle cylinder emission shape random distribution ([GH-91223](https://github.com/godotengine/godot/pull/91223)). +- Fix sqrt application for radius in particle ring emission ([GH-91449](https://github.com/godotengine/godot/pull/91449)). +- Add Ctrl + R keyboard shortcut to restart particle emission in the editor ([GH-92134](https://github.com/godotengine/godot/pull/92134)). +- Fix 2d sdf collision for TileMapLayer Occluders ([GH-92173](https://github.com/godotengine/godot/pull/92173)). +- Fix collided 3D GPU particles sometimes jittering ([GH-92474](https://github.com/godotengine/godot/pull/92474)). +- Fix USERDATA not copied when trails started ([GH-93595](https://github.com/godotengine/godot/pull/93595)). #### Physics -- Add ability to get face index and barycentric coordinates from raycast ([GH-71233](https://github.com/godotengine/godot/pull/71233)). -- Add Mass Distribution, Deactivation, Solver inspector property groups ([GH-77943](https://github.com/godotengine/godot/pull/77943)). -- Correctly set mass for a rigid body with custom inertia and center of mass ([GH-78757](https://github.com/godotengine/godot/pull/78757)). -- Add `hit_back_faces` property to `RayCast3D` ([GH-79330](https://github.com/godotengine/godot/pull/79330)). -- Add state sync after call to `_integrate_forces` in `_body_state_changed` ([GH-79977](https://github.com/godotengine/godot/pull/79977)). -- Fix unit suffix for `HingeJoint3D`'s target velocity ([GH-80523](https://github.com/godotengine/godot/pull/80523)). -- Fix gizmo for `BoxShape3D` ([GH-80689](https://github.com/godotengine/godot/pull/80689)). -- Expose the `get_rid` method of Joint2D and Joint3D ([GH-80736](https://github.com/godotengine/godot/pull/80736)). -- Fix possible crash when Control overrides mouse input on Area2D ([GH-81006](https://github.com/godotengine/godot/pull/81006)). -- Update PinJoint2D API with angle limits and motor speed ([GH-81610](https://github.com/godotengine/godot/pull/81610)). -- Fix missing clear for some `set_exclude*` query parameter methods ([GH-82043](https://github.com/godotengine/godot/pull/82043)). -- Fix performance regression in RigidBody2D/3D and PhysicalBone3D ([GH-82393](https://github.com/godotengine/godot/pull/82393)). -- Fix not refitting upward from leaf nodes ([GH-82482](https://github.com/godotengine/godot/pull/82482)). -- Tweak Gravity Scale property hints to make dragging more useful ([GH-82634](https://github.com/godotengine/godot/pull/82634)). -- Allow TileMap physics/navigation to still work when hidden ([GH-83560](https://github.com/godotengine/godot/pull/83560)). -- Fix unit suffixes for `Generic6DOFJoint` ([GH-83672](https://github.com/godotengine/godot/pull/83672)). -- Ensure SoftBody3D does not use compressed mesh format ([GH-84165](https://github.com/godotengine/godot/pull/84165)). -- Fix rotated tile collision not working at runtime ([GH-84261](https://github.com/godotengine/godot/pull/84261)). -- Fix transform changes in `_integrate_forces` being overwritten ([GH-84799](https://github.com/godotengine/godot/pull/84799)). -- Fix transform sync in `RigidBody*D::_body_state_changed` ([GH-84924](https://github.com/godotengine/godot/pull/84924)). -- Update tilemap physics' World2D on reparenting ([GH-84968](https://github.com/godotengine/godot/pull/84968)). +- Disable registering 3D physics types when 3D is disabled ([GH-79185](https://github.com/godotengine/godot/pull/79185)). +- Prevent mapping areas with invalid IDs for `Area2D/3D` ([GH-79460](https://github.com/godotengine/godot/pull/79460)). +- Clear monitoring in `Area*` when its space changes to invalid ([GH-81809](https://github.com/godotengine/godot/pull/81809)). +- Change ShapeCast3D and RayCast3D debug to use RenderingServer directly ([GH-82599](https://github.com/godotengine/godot/pull/82599)). +- Orthonormalize PhysicalBone3D transforms when resetting them ([GH-82933](https://github.com/godotengine/godot/pull/82933)). +- Fix body leaving area gravity influence ([GH-82961](https://github.com/godotengine/godot/pull/82961)). +- Replace confusing code in `GodotCapsuleShape2D::get_supports` ([GH-83655](https://github.com/godotengine/godot/pull/83655)). +- Fix CollisionObject3D Gizmo not updated after calling `shape_owner_*` functions ([GH-84610](https://github.com/godotengine/godot/pull/84610)). +- Expose a method to get gravity for any physics body ([GH-84640](https://github.com/godotengine/godot/pull/84640)). +- Fix `PhysicsShapeQueryParameters3D.motion` type wrongly set to Vector2 ([GH-85393](https://github.com/godotengine/godot/pull/85393)). +- Improve visualization of WorldBoundary2D editor ([GH-86208](https://github.com/godotengine/godot/pull/86208)). +- Check skeleton RID when using cached AABB ([GH-86245](https://github.com/godotengine/godot/pull/86245)). +- Add warning for using concave shape on CharacterBody3D ([GH-86576](https://github.com/godotengine/godot/pull/86576)). +- Fix bounding boxes not being calculated properly and not respecting top-level nodes ([GH-87132](https://github.com/godotengine/godot/pull/87132)). +- Make CharacterBody properties public ([GH-87167](https://github.com/godotengine/godot/pull/87167)). +- RayCast2D and RayCast3D: warn to check `is_colliding` before `get_collision_point` and `get_collision_normal` ([GH-87414](https://github.com/godotengine/godot/pull/87414)). +- Bind physics server methods related to `SoftBody3D` ([GH-87502](https://github.com/godotengine/godot/pull/87502)). +- Fix error when pinning soft body point without attachment ([GH-87506](https://github.com/godotengine/godot/pull/87506)). +- Add HeightMapShape3D functions to get min / max height ([GH-87881](https://github.com/godotengine/godot/pull/87881)). +- Add HeightMapShape3D update with Image data ([GH-87889](https://github.com/godotengine/godot/pull/87889)). +- Fix `max_collisions` not being passed in `PhysicsBody3D::test_move` ([GH-87903](https://github.com/godotengine/godot/pull/87903)). +- Fix crash with `PhysicsBody2D/3D::get_gravity` with invalid state ([GH-87976](https://github.com/godotengine/godot/pull/87976)). +- Fix `get_contact_count` sometimes being incorrect in `_process` ([GH-88019](https://github.com/godotengine/godot/pull/88019)). +- `GodotCollisionSolver2D::solve_concave`: Fix culling in case of motion ([GH-88282](https://github.com/godotengine/godot/pull/88282)). +- Fix `SoftBody3D` for double-precision builds ([GH-88402](https://github.com/godotengine/godot/pull/88402)). +- Physics interpolation (2D) ([GH-88424](https://github.com/godotengine/godot/pull/88424)). +- Split monolithic physics class files ([GH-88862](https://github.com/godotengine/godot/pull/88862)). +- Fix physics platform crash ([GH-88947](https://github.com/godotengine/godot/pull/88947)). +- Move Max Contacts Reported below Contact Monitor in RigidBody inspector ([GH-89459](https://github.com/godotengine/godot/pull/89459)). +- Increase precision of RigidBody `mass` property ([GH-89468](https://github.com/godotengine/godot/pull/89468)). +- Allow for 32 max collisions in `test_body_motion` ([GH-89517](https://github.com/godotengine/godot/pull/89517)). +- Fix concave `CollisionPolygon2D` debug drawing and docs ([GH-89820](https://github.com/godotengine/godot/pull/89820)). +- Fix separating axes for 3D cylinder-face collisions ([GH-89960](https://github.com/godotengine/godot/pull/89960)). +- Make physics debug respect shape outline setting inside editor ([GH-90113](https://github.com/godotengine/godot/pull/90113)). +- Specify that `get_floor_normal()` does not return the surface normal ([GH-90254](https://github.com/godotengine/godot/pull/90254)). +- Fix PinJoint2D deferred call error ([GH-90340](https://github.com/godotengine/godot/pull/90340)). +- GridMap: Fix `physics_material` property ([GH-90503](https://github.com/godotengine/godot/pull/90503)). +- Store `ObjectID` instead of pointer for KinematicCollision owner ([GH-90668](https://github.com/godotengine/godot/pull/90668)). +- Increase size of WorldBoundaryShape to be much larger ([GH-90763](https://github.com/godotengine/godot/pull/90763)). +- Fix `move_and_slide` wall slide acceleration (3D) ([GH-90915](https://github.com/godotengine/godot/pull/90915)). +- Use same colors for editor and running project for collision/path debug ([GH-90966](https://github.com/godotengine/godot/pull/90966)). +- Deprecate unused parameter `angular_limit/softness` in `HingeJoint3D` ([GH-91127](https://github.com/godotengine/godot/pull/91127)). +- Update `body_create` description in PhysicsServer2D/3D ([GH-91596](https://github.com/godotengine/godot/pull/91596)). +- Add useful error msg in `GodotSoftBody3D::set_mesh` ([GH-91896](https://github.com/godotengine/godot/pull/91896)). +- Avoid duplicate connect in Joint2D and Joint3D `_update_joint` ([GH-91936](https://github.com/godotengine/godot/pull/91936)). +- Bind shape margin methods for `PhysicsServer3D` ([GH-92110](https://github.com/godotengine/godot/pull/92110)). +- GodotPhysics: Fix crash on null space ([GH-93286](https://github.com/godotengine/godot/pull/93286)). +- Fix physics tick counter ([GH-94039](https://github.com/godotengine/godot/pull/94039)). +- Only print physics sync warning on dev builds to avoid warning spam from using `move_and_slide` ([GH-94279](https://github.com/godotengine/godot/pull/94279)). +- Fix dynamic-stack-buffer-overflow crash when executing random functions on random physics objects ([GH-94521](https://github.com/godotengine/godot/pull/94521)). +- Bind `PhysicsServer*D::body_set_state_sync_callback` ([GH-94653](https://github.com/godotengine/godot/pull/94653)). #### Plugin -- Add `_get_unsaved_status()` method to EditorPlugin and implement it for script and shader editors ([GH-67503](https://github.com/godotengine/godot/pull/67503)). -- Expose editor viewports in EditorInterface ([GH-68696](https://github.com/godotengine/godot/pull/68696)). -- Allow changing feature profile via `EditorInterface` ([GH-74382](https://github.com/godotengine/godot/pull/74382)). -- Fix Camera2D is not working inside a MainScreenEditorPlugin ([GH-79867](https://github.com/godotengine/godot/pull/79867)). -- Keep `_export_begin()`'s `path` argument always consistent ([GH-81016](https://github.com/godotengine/godot/pull/81016)). -- Relax restriction on loading v1 Android plugins on Godot 4.2+ ([GH-81368](https://github.com/godotengine/godot/pull/81368)). -- Cleanups and improvements to the Godot Android library api ([GH-82893](https://github.com/godotengine/godot/pull/82893)). -- Editor: Fix `remove_control_from_dock` fails when dock is floating ([GH-83512](https://github.com/godotengine/godot/pull/83512)). +- Use existing `plugin.cfg` in configuration dialog ([GH-79723](https://github.com/godotengine/godot/pull/79723)). +- Expose `SceneTreeDialog` and `PropertySelector` via `EditorInterface` ([GH-81655](https://github.com/godotengine/godot/pull/81655)). +- Fix creating and updating plugin with dot in folder name ([GH-83329](https://github.com/godotengine/godot/pull/83329)). +- Correctly check scripts that must inherit `EditorPlugin` ([GH-85271](https://github.com/godotengine/godot/pull/85271)). +- Save external data even without scene ([GH-85513](https://github.com/godotengine/godot/pull/85513)). +- Always call `_can_handle()` before `_parse_property()` ([GH-86467](https://github.com/godotengine/godot/pull/86467)). +- Editor: Add `EditorPlugin::scene_saved` signal ([GH-87332](https://github.com/godotengine/godot/pull/87332)). +- Editor: Fix `_parse_category()` is not called for custom categories ([GH-87915](https://github.com/godotengine/godot/pull/87915)). +- Improve Project Settings' Plugin display ([GH-88308](https://github.com/godotengine/godot/pull/88308)). +- Update scene tabs after marking as unsaved ([GH-90135](https://github.com/godotengine/godot/pull/90135)). +- Fix `add_root_node()` being no-op ([GH-90136](https://github.com/godotengine/godot/pull/90136)). +- Expose `EditorFileDialog::popup_file_dialog()` to GDScript and GDExtension ([GH-91331](https://github.com/godotengine/godot/pull/91331)). +- Add logic to unregister the Godot plugins on engine termination ([GH-92143](https://github.com/godotengine/godot/pull/92143)). +- Prevent static XCFramework bundles from being embedded on iOS ([GH-92519](https://github.com/godotengine/godot/pull/92519)). #### Porting -- [macOS, sandbox] Implement optional native file selection dialog support for sandboxed apps ([GH-47499](https://github.com/godotengine/godot/pull/47499)). -- Add `clipboard_has/get_image` methods to DisplayServer ([GH-63826](https://github.com/godotengine/godot/pull/63826)). -- Refactor Godot Android architecture ([GH-76821](https://github.com/godotengine/godot/pull/76821)). -- Windows: Flash both the window caption and taskbar button on `request_attention` ([GH-78263](https://github.com/godotengine/godot/pull/78263)). -- Add error checks and harmonize behavior of the `set_icon` method ([GH-78437](https://github.com/godotengine/godot/pull/78437)). -- Fix formatting of dlopen error message on Windows ([GH-78802](https://github.com/godotengine/godot/pull/78802)). -- macOS: Fix `set_native_icon` crash with empty or invalid ICNS file ([GH-79010](https://github.com/godotengine/godot/pull/79010)). -- Windows: Fix setting initial non-exclusive window mode ([GH-79016](https://github.com/godotengine/godot/pull/79016)). -- [macOS/iOS] Set MoltenVK logging level based on `--verbose` flag ([GH-79061](https://github.com/godotengine/godot/pull/79061)). -- Fix the fallback logic of `OS::shell_show_in_file_manager` ([GH-79087](https://github.com/godotengine/godot/pull/79087)). -- Avoid freeze when interacting with menus on Wayland by re-aquiring next swapchain image after updating swapchain ([GH-79143](https://github.com/godotengine/godot/pull/79143)). -- Fix Linux `move_to_trash` wrongly reporting files as not found ([GH-79284](https://github.com/godotengine/godot/pull/79284)). -- Fix `ProjectSettings::localize_path` for Windows paths ([GH-79342](https://github.com/godotengine/godot/pull/79342)). -- Windows: Implement native file selection dialog support ([GH-79574](https://github.com/godotengine/godot/pull/79574)). -- Fix NullPointerException when registering the sensors ([GH-79681](https://github.com/godotengine/godot/pull/79681)). -- Windows: Initialize COM as apartment-threaded ([GH-79693](https://github.com/godotengine/godot/pull/79693)). -- Add `proxy_to_pthread` option to `platform=web` ([GH-79711](https://github.com/godotengine/godot/pull/79711)). -- Fix file permissions for the web platform (affects every Unix-like platform) ([GH-79866](https://github.com/godotengine/godot/pull/79866)). -- Use EWMH for `DisplayServerX11::_window_minimize_check()` implementation ([GH-80036](https://github.com/godotengine/godot/pull/80036)). -- Web: Update npm packages ([GH-80092](https://github.com/godotengine/godot/pull/80092)). -- [Linux/Freedesktop] Implement native file selection dialog support ([GH-80104](https://github.com/godotengine/godot/pull/80104)). -- Windows: Do not force redraw window background on mouse pass-through region change ([GH-80153](https://github.com/godotengine/godot/pull/80153)). -- X11: Do not fail DisplayServer init if non-essential extensions are missing ([GH-80240](https://github.com/godotengine/godot/pull/80240)). -- Track hovered `Window` in `DisplayServerX11` ([GH-80279](https://github.com/godotengine/godot/pull/80279)). -- FileAccess: Add methods to get/set "hidden" and "read-only" attributes on macOS/BSD and Windows ([GH-80404](https://github.com/godotengine/godot/pull/80404)). -- DisplayServer: Add method to estimate window title bar size ([GH-80409](https://github.com/godotengine/godot/pull/80409)). -- macOS: Fix missing mouse exit events on window close ([GH-80439](https://github.com/godotengine/godot/pull/80439)). -- Android: Change the default "org.godotengine" package name to "com.example" ([GH-80761](https://github.com/godotengine/godot/pull/80761)). -- [Native File Dialogs] Refocus last focused window on close ([GH-80952](https://github.com/godotengine/godot/pull/80952)). -- Make Windows' safe save more resilient ([GH-81001](https://github.com/godotengine/godot/pull/81001)). -- Fix JavaScript callback memory leak issue ([GH-81105](https://github.com/godotengine/godot/pull/81105)). -- [Native File Dialogs] Improve filter list handling, add selected filter to the callback ([GH-81218](https://github.com/godotengine/godot/pull/81218)). -- macOS: Fix live resize with the latest MoltenVK version ([GH-81339](https://github.com/godotengine/godot/pull/81339)). -- Implement `clipboard_get`/`has_image` for X11 ([GH-81439](https://github.com/godotengine/godot/pull/81439)). -- Web: Disable raycast module by default (no occlusion culling) ([GH-81716](https://github.com/godotengine/godot/pull/81716)). -- Windows: Use clear color for non exclusive fullscreen border, fix maximize for borderless window switching to exclusive fs ([GH-82031](https://github.com/godotengine/godot/pull/82031)). -- macOS: Enforce non-zero window size ([GH-82037](https://github.com/godotengine/godot/pull/82037)). -- X11: Add support for using EGL/GLES instead of GLX ([GH-82101](https://github.com/godotengine/godot/pull/82101)). -- Support dark mode on Android and iOS ([GH-82230](https://github.com/godotengine/godot/pull/82230)). -- macOS: Fix borderless mode on macOS 13.6+ ([GH-82357](https://github.com/godotengine/godot/pull/82357)). -- macOS: Check all exclusive fullscreen windows before setting presentation mode ([GH-82423](https://github.com/godotengine/godot/pull/82423)). -- Web: Clarify that `OS.get_unique_id` is not supported ([GH-82441](https://github.com/godotengine/godot/pull/82441)). -- Fix `godot_js_wrapper_create_cb` regression ([GH-82736](https://github.com/godotengine/godot/pull/82736)). -- macOS: Fix ambiguous method call with older SDKs ([GH-82876](https://github.com/godotengine/godot/pull/82876)). -- Add method to check if filesystem is case sensitive ([GH-82957](https://github.com/godotengine/godot/pull/82957)). -- macOS: Use occlusionState instead of isOnActiveSpace to determine when window is drawable ([GH-83096](https://github.com/godotengine/godot/pull/83096)). -- Web: Improve Emscripten `locateFile` glue ([GH-83165](https://github.com/godotengine/godot/pull/83165)). -- Add error messages to the native menu and file dialogs callback ([GH-83181](https://github.com/godotengine/godot/pull/83181)). -- macOS: Fix crash when using system default menu shortcuts ([GH-83243](https://github.com/godotengine/godot/pull/83243)). -- Linux: Implement `DirAccess.is_case_sensitive` for EXT4 and F2FS ([GH-83266](https://github.com/godotengine/godot/pull/83266)). -- Improve X11 `screen_get_refresh_rate` performance ([GH-83902](https://github.com/godotengine/godot/pull/83902)). -- Add support for EGL 1.4 ([GH-83930](https://github.com/godotengine/godot/pull/83930)). -- Update the `launchMode` for the `GodotApp` activity ([GH-83954](https://github.com/godotengine/godot/pull/83954)). -- Fix freeze when requesting clipboard image from our own window ([GH-83970](https://github.com/godotengine/godot/pull/83970)). -- Fix macOS and Windows build with statically linked ANGLE/EGL ([GH-83988](https://github.com/godotengine/godot/pull/83988)). -- TTS_Linux: Fix size_t template issue on OpenBSD by using int consistently ([GH-84017](https://github.com/godotengine/godot/pull/84017)). -- Fix retrieving command line flags in Android ([GH-84102](https://github.com/godotengine/godot/pull/84102)). -- Fix Android editor crash issue when pressing Back ([GH-84414](https://github.com/godotengine/godot/pull/84414)). -- Fix Android disabling splash screen Show Image ([GH-84491](https://github.com/godotengine/godot/pull/84491)). -- Fix bug where maximized->fullscreen->windowed mode stays maximized ([GH-84504](https://github.com/godotengine/godot/pull/84504)). -- X11: Add fallback from desktop GL to GLES, suppress PRIME detector error spam ([GH-84513](https://github.com/godotengine/godot/pull/84513)). -- macOS: Fix fullscreen <-> exclusive fullscreen transition ([GH-84649](https://github.com/godotengine/godot/pull/84649)). -- macOS: Fix transparent and borderless flags interaction with full-screen mode ([GH-84683](https://github.com/godotengine/godot/pull/84683)). -- macOS: Process events before changing title style to update window frame ([GH-84927](https://github.com/godotengine/godot/pull/84927)). -- Fix issue causing Godot Android apps / games to freeze on close ([GH-85454](https://github.com/godotengine/godot/pull/85454)). -- Fix an issue causing the running project window to loop-restart when closed ([GH-85457](https://github.com/godotengine/godot/pull/85457)). +- Windows: Enable crash reporter on MinGW builds ([GH-61006](https://github.com/godotengine/godot/pull/61006)). +- Windows: Improve warning for path casing ([GH-71975](https://github.com/godotengine/godot/pull/71975)). +- Implement support for application status indicators (tray icons) ([GH-80211](https://github.com/godotengine/godot/pull/80211)). +- macOS: Add support for native help menu search callbacks, integrate editor help ([GH-83819](https://github.com/godotengine/godot/pull/83819)). +- macOS: Add default Window and Help menus, allow special menu customization ([GH-83987](https://github.com/godotengine/godot/pull/83987)). +- Use platform-specific methods for FileAccess reading and writing ([GH-84107](https://github.com/godotengine/godot/pull/84107)). +- Windows: Use CCD API to get fractional screen refresh rates ([GH-84246](https://github.com/godotengine/godot/pull/84246)). +- Robustify handling of activation & focus on Windows ([GH-84363](https://github.com/godotengine/godot/pull/84363)). +- Fix NetBSD executable path ([GH-84469](https://github.com/godotengine/godot/pull/84469)). +- Make `screen_get_refresh_rate()` respect iOS Low Power Mode ([GH-85026](https://github.com/godotengine/godot/pull/85026)). +- Enhance mobile suspend MainLoop notifications ([GH-85100](https://github.com/godotengine/godot/pull/85100)). +- Windows: Fix NVIDIA app profile creation ([GH-85188](https://github.com/godotengine/godot/pull/85188)). +- Do not consume mouse messages in windows with `no_focus` on Windows OS ([GH-85484](https://github.com/godotengine/godot/pull/85484)). +- Add `THREADS_ENABLED` macro in order to compile Godot to run on the main thread ([GH-85939](https://github.com/godotengine/godot/pull/85939)). +- Android: Ensure cleanup of all subobjects in the OpenSL audio driver ([GH-85955](https://github.com/godotengine/godot/pull/85955)). +- X11: Partial fix for Editor and Project Manager stealing focus on some window managers ([GH-86101](https://github.com/godotengine/godot/pull/86101)). +- Fix key mapping for `XK_KP_Delete` key ([GH-86160](https://github.com/godotengine/godot/pull/86160)). +- Add Wayland support ([GH-86180](https://github.com/godotengine/godot/pull/86180)). +- Android: Update the logic used to start / stop the render thread ([GH-86379](https://github.com/godotengine/godot/pull/86379)). +- X11: Fix Godot stealing focus on alternative window managers ([GH-86441](https://github.com/godotengine/godot/pull/86441)). +- Fix `OS.get_system_font_path` and `OS.get_system_font_path_for_text` to return correct slashes ([GH-86552](https://github.com/godotengine/godot/pull/86552)). +- Fix virtual keyboard for decimal values on Android ([GH-86619](https://github.com/godotengine/godot/pull/86619)). +- X11: Don't re-set input focus if the given window already has it (fixes Godot stealing input focus on i3) ([GH-86671](https://github.com/godotengine/godot/pull/86671)). +- iOS: Set provisioning style for both `iPhone Developer` and `iPhone Distribution` to automatic ([GH-86748](https://github.com/godotengine/godot/pull/86748)). +- Fix `get_window_safe_area` on Android ([GH-86761](https://github.com/godotengine/godot/pull/86761)). +- Attempt parsing environment variables as UTF-8 ([GH-86936](https://github.com/godotengine/godot/pull/86936)). +- iOS: Improve logger ([GH-87077](https://github.com/godotengine/godot/pull/87077)). +- Android: Disable automatic permissions request ([GH-87080](https://github.com/godotengine/godot/pull/87080)). +- Fix DX12 build on older MSVC versions, fix missing PIX include ([GH-87206](https://github.com/godotengine/godot/pull/87206)). +- Use `os_unfair_lock` on Apple platforms ([GH-87393](https://github.com/godotengine/godot/pull/87393)). +- macOS: Update window visible state on deminiaturize ([GH-87465](https://github.com/godotengine/godot/pull/87465)). +- Make dark mode Title Bar work on Windows 10 1909 (build:18363) and above ([GH-87549](https://github.com/godotengine/godot/pull/87549)). +- Wayland: Suspend window after frame timeout or suspend state ([GH-87750](https://github.com/godotengine/godot/pull/87750)). +- Wayland: Implement `window_get_native_handle` ([GH-87764](https://github.com/godotengine/godot/pull/87764)). +- Wayland: Add support for native file dialogs ([GH-87776](https://github.com/godotengine/godot/pull/87776)). +- macOS: Use autorelease pools ([GH-87836](https://github.com/godotengine/godot/pull/87836)). +- macOS: Add SIGTRAP to the crash handler ([GH-87842](https://github.com/godotengine/godot/pull/87842)). +- Add workaround for emscripten >= 3.1.47 LTO build ([GH-87956](https://github.com/godotengine/godot/pull/87956)). +- wayland: Update to 1.22.0 ([GH-87977](https://github.com/godotengine/godot/pull/87977)). +- [macOS / iOS] Switch Vulkan init to `VK_EXT_metal_surface` extension ([GH-87999](https://github.com/godotengine/godot/pull/87999)). +- macOS: Enabled secure restorable state ([GH-88050](https://github.com/godotengine/godot/pull/88050)). +- Handle display driver preferences consistently between editor and projects ([GH-88065](https://github.com/godotengine/godot/pull/88065)). +- macOS: Allow `open_shell` to handle filenames without `file://` ([GH-88126](https://github.com/godotengine/godot/pull/88126)). +- Windows: Fix windows `is_path_invalid`, and apply it to directory creation ([GH-88129](https://github.com/godotengine/godot/pull/88129)). +- Fix invalid file path handling in Windows when there is dot in the file name ([GH-88144](https://github.com/godotengine/godot/pull/88144)). +- FileSystem dock: Fix opening a Linux terminal ([GH-88173](https://github.com/godotengine/godot/pull/88173)). +- Fix the fetching of images in `CF_DIB` format in `DisplayServerWindows::clipboard_get_image` ([GH-88220](https://github.com/godotengine/godot/pull/88220)). +- macOS: Fix color picker on HDR screens ([GH-88274](https://github.com/godotengine/godot/pull/88274)). +- Windows: Add support for enabling Alt+Space menu and fix borderless maximize ([GH-88329](https://github.com/godotengine/godot/pull/88329)). +- [Android 14] Fix GodotEditText white box showing during editor load ([GH-88351](https://github.com/godotengine/godot/pull/88351)). +- libdecor: Update to 0.2.2 ([GH-88374](https://github.com/godotengine/godot/pull/88374)). +- Windows: Fix reading non-BGRA8 DIBs from clipboard ([GH-88405](https://github.com/godotengine/godot/pull/88405)). +- macOS: Add null checks for `NSString stringWithUTF8String` ([GH-88694](https://github.com/godotengine/godot/pull/88694)). +- [macOS/Windows] Fix application indicator destruction ([GH-88932](https://github.com/godotengine/godot/pull/88932)). +- Windows: Implement `dialog_show` and `dialog_input_text` for `DisplayServer` ([GH-88957](https://github.com/godotengine/godot/pull/88957)). +- DisplayServer: Add error messages and descriptions to callbacks ([GH-89033](https://github.com/godotengine/godot/pull/89033)). +- Fix FileAccessUnix on OpenBSD where `UF_HIDDEN` isn't supported ([GH-89064](https://github.com/godotengine/godot/pull/89064)). +- Wayland: Fix tilt handling ([GH-89112](https://github.com/godotengine/godot/pull/89112)). +- Wayland: Properly report all used features ([GH-89178](https://github.com/godotengine/godot/pull/89178)). +- Check if DisplayServer supports icons before attempting setting it ([GH-89181](https://github.com/godotengine/godot/pull/89181)). +- Windows: Fix `FreeLibrary` not always being called in `DisplayServerWindows::dialog_show` ([GH-89192](https://github.com/godotengine/godot/pull/89192)). +- Implement pipe API for executed processes IO redirection ([GH-89206](https://github.com/godotengine/godot/pull/89206)). +- Add `PermissionsUtil#requestPermissions(...)` to provide the ability to request multiple permissions at a time ([GH-89260](https://github.com/godotengine/godot/pull/89260)). +- Wayland: Stop possible Null pointer dereferences ([GH-89307](https://github.com/godotengine/godot/pull/89307)). +- Wayland: Setup next cursor frame callback only if animated ([GH-89328](https://github.com/godotengine/godot/pull/89328)). +- Windows: Disable fallback to ANGLE logic when compiled w/o ANGLE support ([GH-89351](https://github.com/godotengine/godot/pull/89351)). +- Wayland: Workaround API limitation in screen/UI scale logic ([GH-89574](https://github.com/godotengine/godot/pull/89574)). +- iOS: Fix AirPods routing when Play and Record category is used ([GH-89594](https://github.com/godotengine/godot/pull/89594)). +- Fix platform name in the message about unsupported CPU architecture ([GH-89598](https://github.com/godotengine/godot/pull/89598)). +- Android: Fix UnsupportedOperationException remove from non-ArrayList ([GH-89703](https://github.com/godotengine/godot/pull/89703)). +- Wayland: Fix typo in input code ([GH-89707](https://github.com/godotengine/godot/pull/89707)). +- X11: Add more details to large icon size warning ([GH-89716](https://github.com/godotengine/godot/pull/89716)). +- Fix `EXIT_SUCCESS` on MacOS ([GH-89855](https://github.com/godotengine/godot/pull/89855)). +- Fix `EXIT_SUCCESS` on Android ([GH-89887](https://github.com/godotengine/godot/pull/89887)). +- DisplayServer: Add separate feature flags for different native dialog types ([GH-89907](https://github.com/godotengine/godot/pull/89907)). +- [Linux/Portal] Fix incorrect DBus connection usage ([GH-89935](https://github.com/godotengine/godot/pull/89935)). +- macOS: Fix non-global native menu shortcuts ([GH-89953](https://github.com/godotengine/godot/pull/89953)). +- Android: Prevent potential NPEs and improve nullability handling ([GH-89999](https://github.com/godotengine/godot/pull/89999)). +- Android: Improve performance of sensor readings ([GH-90000](https://github.com/godotengine/godot/pull/90000)). +- Fix issue with moving maximized window in macOS ([GH-90101](https://github.com/godotengine/godot/pull/90101)). +- Fix macOS menu bar & dock stop appearing after closing sub-window ([GH-90131](https://github.com/godotengine/godot/pull/90131)). +- Android: Extract parsing command line file to a separate class + add unit tests ([GH-90146](https://github.com/godotengine/godot/pull/90146)). +- Make sysctl calls on FreeBSD ([GH-90295](https://github.com/godotengine/godot/pull/90295)). +- Add `OS.get_process_exit_code()` method ([GH-90358](https://github.com/godotengine/godot/pull/90358)). +- FileAccess: Implement `resize` method ([GH-90403](https://github.com/godotengine/godot/pull/90403)). +- Fix the initialization order for the iOS driver ([GH-90538](https://github.com/godotengine/godot/pull/90538)). +- [Unix / DirAccess] Fix removing directory symlinks with `remove`, ensure `erase_contents_recursive` is not following directory symlinks ([GH-90562](https://github.com/godotengine/godot/pull/90562)). +- Fix leakage of JNI object references ([GH-90710](https://github.com/godotengine/godot/pull/90710)). +- macOS: Fix native file dialog with empty filter list ([GH-90783](https://github.com/godotengine/godot/pull/90783)). +- Cleanup Android file errors ([GH-91017](https://github.com/godotengine/godot/pull/91017)). +- iOS: Change default iPad landscape orientation from "left" to "right" ([GH-91052](https://github.com/godotengine/godot/pull/91052)). +- DBus: Process file dialog callback in the main event loop instead of using deferred call ([GH-91071](https://github.com/godotengine/godot/pull/91071)). +- Add symlink API support for Windows, expose symlink methods ([GH-91100](https://github.com/godotengine/godot/pull/91100)). +- Windows: Improve console IO redirection ([GH-91147](https://github.com/godotengine/godot/pull/91147)). +- Wayland: Improve compositor compatibility by allowing older globals ([GH-91196](https://github.com/godotengine/godot/pull/91196)). +- Wayland: Add support for OpenGL ES driver ([GH-91466](https://github.com/godotengine/godot/pull/91466)). +- DisplayServer: Add method to check if window transparency is supported and enabled ([GH-91505](https://github.com/godotengine/godot/pull/91505)). +- Switch to the WindowInsetsAnimationCompat api ([GH-91895](https://github.com/godotengine/godot/pull/91895)). +- X11: Fallback to root window size, when Xinerama extension is available, but return zero screens ([GH-91933](https://github.com/godotengine/godot/pull/91933)). +- Windows: Use CRLF in the terminal prints ([GH-92158](https://github.com/godotengine/godot/pull/92158)). +- Use `OS::delay_usec()` to avoid using deprecated `usleep()` on Linux ([GH-92208](https://github.com/godotengine/godot/pull/92208)). +- Properly set window class in Wayland ([GH-92252](https://github.com/godotengine/godot/pull/92252)). +- Wayland: Implement `is_window_transparency_available` ([GH-92353](https://github.com/godotengine/godot/pull/92353)). +- [macOS, X11] Fix duplicate window close requests ([GH-92458](https://github.com/godotengine/godot/pull/92458)). +- Fix -empty string- console log in web export (cosmetic) ([GH-92468](https://github.com/godotengine/godot/pull/92468)). +- Make displayed Web errors more meaningful ([GH-92553](https://github.com/godotengine/godot/pull/92553)). +- Android: Remove the limit on the number of the SignalInfo creation function parameters ([GH-92580](https://github.com/godotengine/godot/pull/92580)). +- EGL: Use `EGL_EXT_platform_base` whenever possible ([GH-92663](https://github.com/godotengine/godot/pull/92663)). +- Consolidate the ProjectManager and Editor windows into a single Android Activity class ([GH-92704](https://github.com/godotengine/godot/pull/92704)). +- Android: Fix invalid return value when multiple permission requests are dispatched ([GH-92709](https://github.com/godotengine/godot/pull/92709)). +- Improve native menu and status indicator icons conversion and checks ([GH-92826](https://github.com/godotengine/godot/pull/92826)). +- Update the Android splash screen logic ([GH-92965](https://github.com/godotengine/godot/pull/92965)). +- X11: Detect XWayland and disable screen capture support ([GH-93072](https://github.com/godotengine/godot/pull/93072)). +- Windows: Add Windows version and Wine checks for Windows 10+ dark mode API ([GH-93126](https://github.com/godotengine/godot/pull/93126)). +- Tweak warning messages related to V-Sync on OpenGL ([GH-93239](https://github.com/godotengine/godot/pull/93239)). +- Web: Fix checking for OpenGL extensions with Emscripten 3.1.51 and later ([GH-93560](https://github.com/godotengine/godot/pull/93560)). +- Prevent folder names with trailing periods from being used automatically ([GH-93564](https://github.com/godotengine/godot/pull/93564)). +- Fix text editor stealing focus from "Find in Files" dialog on X11 ([GH-93682](https://github.com/godotengine/godot/pull/93682)). +- Wayland: Minimize surface commits and limit them to the main thread ([GH-93684](https://github.com/godotengine/godot/pull/93684)). +- Windows: Restore to windowed mode using `SW_NORMAL` ([GH-93733](https://github.com/godotengine/godot/pull/93733)). +- Add `bigint` support on JS value conversion ([GH-93750](https://github.com/godotengine/godot/pull/93750)). +- Fix assignations to non-existing keys and clean-up Web audio library ([GH-93754](https://github.com/godotengine/godot/pull/93754)). +- Remove duplicate styling from editor ([GH-93902](https://github.com/godotengine/godot/pull/93902)). +- Fix preloading a zip in the web editor ([GH-93906](https://github.com/godotengine/godot/pull/93906)). +- Android: Fix crashes and ANRs reported by the Google Play Console ([GH-93933](https://github.com/godotengine/godot/pull/93933)). +- Fix caret can disappear from script editor on Windows ([GH-93976](https://github.com/godotengine/godot/pull/93976)). +- Windows: Fix build error due to missing definition of Texture2D ([GH-94067](https://github.com/godotengine/godot/pull/94067)). +- Windows: Fix reading keyboard layout names ([GH-94120](https://github.com/godotengine/godot/pull/94120)). +- Remove unused `is_wow64` method in `OS_Windows` ([GH-94187](https://github.com/godotengine/godot/pull/94187)). +- macOS: Fix drag-and-drop feedback ([GH-94232](https://github.com/godotengine/godot/pull/94232)). +- Windows: Fix wrong initial size passed to rendering driver ([GH-94398](https://github.com/godotengine/godot/pull/94398)). +- Wayland: Commit surface on window creation ([GH-94402](https://github.com/godotengine/godot/pull/94402)). +- Wayland: Check for suspended flag when unsuspending ([GH-94411](https://github.com/godotengine/godot/pull/94411)). +- Windows: Update ANGLE surface size when window is resized ([GH-94428](https://github.com/godotengine/godot/pull/94428)). +- [Android Editor] Resolve issues with the editor touchscreen settings ([GH-94468](https://github.com/godotengine/godot/pull/94468)). +- Linux/X11: Fix memory leak from created screen images ([GH-94473](https://github.com/godotengine/godot/pull/94473)). +- Wayland: Fix error spam when interacting with decorations ([GH-94557](https://github.com/godotengine/godot/pull/94557)). +- Disable FP contraction ([GH-94655](https://github.com/godotengine/godot/pull/94655)). +- Fix the cleanup logic for the Android render thread ([GH-94661](https://github.com/godotengine/godot/pull/94661)). +- Pass window exclusive and transient properties for subwindow creation ([GH-94706](https://github.com/godotengine/godot/pull/94706)). +- Fix crash that occurs on termination of the Godot engine on Android ([GH-94923](https://github.com/godotengine/godot/pull/94923)). +- Windows: Improve OpenGL/ANGLE switching on ARM64 ([GH-94943](https://github.com/godotengine/godot/pull/94943)). +- Add missing null check before disconnecting source ([GH-94958](https://github.com/godotengine/godot/pull/94958)). +- macOS: Fix `is_process_running` and `kill` for bundled apps ([GH-94978](https://github.com/godotengine/godot/pull/94978)). +- macOS: Attempt to terminate process normally before using `forceTerminate` ([GH-95191](https://github.com/godotengine/godot/pull/95191)). +- macOS: Load `OpenGL.framework` by path to avoid issues with non-Latin executable names ([GH-95235](https://github.com/godotengine/godot/pull/95235)). +- macOS: Remove kill override ([GH-95295](https://github.com/godotengine/godot/pull/95295)). +- Wayland: Avoid recreating input objects on capability change ([GH-95331](https://github.com/godotengine/godot/pull/95331)). +- macOS: Fix wrong object type in joypad queue ([GH-95425](https://github.com/godotengine/godot/pull/95425)). +- DisplayServerWindows: Fix logic when creating with transient parent ([GH-95526](https://github.com/godotengine/godot/pull/95526)). #### Rendering -- Fix directional LightmapGI being too dark with static lights ([GH-61910](https://github.com/godotengine/godot/pull/61910)). -- [macOS/Windows] Add optional ANGLE backed OpenGL renderer support (runtime backend selection) ([GH-72831](https://github.com/godotengine/godot/pull/72831)). -- Abort on startup with a visible alert if required Vulkan features are missing ([GH-73999](https://github.com/godotengine/godot/pull/73999)). -- Add content scale stretch modes, implement integer scaling ([GH-75784](https://github.com/godotengine/godot/pull/75784)). -- Draw frustum splices on top of direction shadow atlas for debug purposes ([GH-77085](https://github.com/godotengine/godot/pull/77085)). -- Split raster barrier into vertex and fragment barrier ([GH-77420](https://github.com/godotengine/godot/pull/77420)). -- Implement 3D shadows in the GL Compatibility renderer ([GH-77496](https://github.com/godotengine/godot/pull/77496)). -- Replace sampler arrays with constant sampler elements, simplify and reuse code for all shaders ([GH-77740](https://github.com/godotengine/godot/pull/77740)). -- Add support for GLSL source-level debugging with RenderDoc ([GH-77975](https://github.com/godotengine/godot/pull/77975)). -- Use Gaussian approximation for backbuffer mipmaps in GL Compatibility renderer ([GH-78168](https://github.com/godotengine/godot/pull/78168)). -- Clear specular buffer if sky mode is canvas and screen space effects are used ([GH-78624](https://github.com/godotengine/godot/pull/78624)). -- Fix threading bug in Vulkan rendering device ([GH-78794](https://github.com/godotengine/godot/pull/78794)). -- Fix sanitizers reports about octahedral tangents in RenderingServer ([GH-78902](https://github.com/godotengine/godot/pull/78902)). -- Take eye offset into account for depth in StandardMaterial3D ([GH-79049](https://github.com/godotengine/godot/pull/79049)). -- Expose RenderSceneBuffers(RD) through ClassDB ([GH-79142](https://github.com/godotengine/godot/pull/79142)). -- Clear the previously set state when configuring for a new scene root node ([GH-79201](https://github.com/godotengine/godot/pull/79201)). -- Add custom texture create function ([GH-79288](https://github.com/godotengine/godot/pull/79288)). -- Fix missing `_THREAD_SAFE_METHOD_` missing from `RenderingDeviceVulkan` `submit` and `sync` ([GH-79526](https://github.com/godotengine/godot/pull/79526)). -- Fix crash when calling `get_video_adapter_*` in a thread ([GH-79528](https://github.com/godotengine/godot/pull/79528)). -- GLES3: Reset anisotropic filtering when changing texture filtering mode ([GH-79568](https://github.com/godotengine/godot/pull/79568)). -- Fix bad LOD selection when Camera in Mesh AABB ([GH-79590](https://github.com/godotengine/godot/pull/79590)). -- Fix instance uniform data buffer update delay ([GH-79603](https://github.com/godotengine/godot/pull/79603)). -- ShaderRD compilation groups ([GH-79606](https://github.com/godotengine/godot/pull/79606)). -- Revert the change of the limit for interpolation of F0 for dielectrics and metals for Screen Space Reflections ([GH-79624](https://github.com/godotengine/godot/pull/79624)). -- Fix GLES3 multimesh rendering when using colors or custom data ([GH-79660](https://github.com/godotengine/godot/pull/79660)). -- GLES3: Don't call `glTexParameter*` for invalid filter and repeat modes ([GH-79685](https://github.com/godotengine/godot/pull/79685)). -- Add ability to call code on rendering thread ([GH-79696](https://github.com/godotengine/godot/pull/79696)). -- Unbind the framebuffer when updating meshes ([GH-79772](https://github.com/godotengine/godot/pull/79772)). -- Mobile: Uncomment code required for fog rendering on clear color ([GH-79776](https://github.com/godotengine/godot/pull/79776)). -- Use defaults to initialize sky data in case of no sky ([GH-79812](https://github.com/godotengine/godot/pull/79812)). -- Fix Vulkan multithreaded compute list and GPU particle processing ([GH-79849](https://github.com/godotengine/godot/pull/79849)). -- Fix use of discard in shaders ([GH-79865](https://github.com/godotengine/godot/pull/79865)). -- Lazily allocate RIDs for PlaceholderTextures to avoid allocating GPU resources unless used ([GH-79874](https://github.com/godotengine/godot/pull/79874)). -- Fix transparent viewport backgrounds with custom clear color ([GH-79876](https://github.com/godotengine/godot/pull/79876)). -- Check if shader cache directory is available before using cache ([GH-79883](https://github.com/godotengine/godot/pull/79883)). -- Vulkan: Fix dangling pointers in `_clean_up_swap_chain` ([GH-79884](https://github.com/godotengine/godot/pull/79884)). -- Add exceptions for breakage introduced in RD barriers ([GH-79911](https://github.com/godotengine/godot/pull/79911)). -- Make Fresnel darken SSR instead of blending with specular ([GH-79921](https://github.com/godotengine/godot/pull/79921)). -- Initialize MSDF parameters in BaseMaterial3D with default ([GH-79983](https://github.com/godotengine/godot/pull/79983)). -- Fix uninitialized variable ending up sent to Vulkan ([GH-80034](https://github.com/godotengine/godot/pull/80034)). -- Enable depth writes during shadow pass and depth pass. Disable during color pass ([GH-80070](https://github.com/godotengine/godot/pull/80070)). -- Fix validation layer warnings ([GH-80071](https://github.com/godotengine/godot/pull/80071)). -- Fix GLES3 changing 2D shadow atlas size is broken ([GH-80151](https://github.com/godotengine/godot/pull/80151)). -- Add option to enable HDR rendering in 2D ([GH-80215](https://github.com/godotengine/godot/pull/80215)). -- Initialize shader placeholders up front ([GH-80222](https://github.com/godotengine/godot/pull/80222)). -- Fix motion vectors being corrupted when using `precision=double` ([GH-80257](https://github.com/godotengine/godot/pull/80257)). -- Vulkan: Fix sanitizers error with empty shader name ([GH-80288](https://github.com/godotengine/godot/pull/80288)). -- Enhance Vulkan PSO caching ([GH-80296](https://github.com/godotengine/godot/pull/80296)). -- Use fullscreen tri instead of quad ([GH-80311](https://github.com/godotengine/godot/pull/80311)). -- Fix validation error when enabling SSIL alone ([GH-80315](https://github.com/godotengine/godot/pull/80315)). -- Ensure `POINT_SIZE` takes effect in the canvas item shader ([GH-80323](https://github.com/godotengine/godot/pull/80323)). -- Fix integer underflow when rounding up in VoxelGI ([GH-80356](https://github.com/godotengine/godot/pull/80356)). -- Fix issue with four subpasses always been requested in mobile renderer ([GH-80368](https://github.com/godotengine/godot/pull/80368)). -- Remove GPU readback from `NoiseTexture3D.get_format()` ([GH-80407](https://github.com/godotengine/godot/pull/80407)). -- Improve handling of motion vectors for multimesh instances ([GH-80414](https://github.com/godotengine/godot/pull/80414)). -- Add `buffer_copy` method to RenderingDevice ([GH-80424](https://github.com/godotengine/godot/pull/80424)). -- Clamp Volumetric Fog Length property to prevent rendering issues ([GH-80485](https://github.com/godotengine/godot/pull/80485)). -- Fix tonemapper, incorrect vertex count was specified ([GH-80502](https://github.com/godotengine/godot/pull/80502)). -- Fix critical regressions introduced in PR #80414 ([GH-80552](https://github.com/godotengine/godot/pull/80552)). -- Fix validation error when resizing window ([GH-80571](https://github.com/godotengine/godot/pull/80571)). -- Add motion vector support for animated surfaces ([GH-80618](https://github.com/godotengine/godot/pull/80618)). -- Fallback to linear color texture when using 2D HDR and MSDF font ([GH-80651](https://github.com/godotengine/godot/pull/80651)). -- Fix global shader uniform texture loading ([GH-80654](https://github.com/godotengine/godot/pull/80654)). -- Improve visual feedback when using the motion vectors debug view option ([GH-80723](https://github.com/godotengine/godot/pull/80723)). -- Fix Vulkan texture update ([GH-80781](https://github.com/godotengine/godot/pull/80781)). -- Fix memory access error for `MultiMesh` with GLES3 ([GH-80788](https://github.com/godotengine/godot/pull/80788)). -- Fix Vulkan crash with many Omni/SpotLights, Decals or ReflectionProbes ([GH-80845](https://github.com/godotengine/godot/pull/80845)). -- Implement OpenXR Foveated rendering support ([GH-80881](https://github.com/godotengine/godot/pull/80881)). -- Clear SDFGI textures when created ([GH-80889](https://github.com/godotengine/godot/pull/80889)). -- Fix integer value for `GL_MAX_UNIFORM_BLOCK_SIZE` overflowing ([GH-80909](https://github.com/godotengine/godot/pull/80909)). -- Fix missing decal mask in mobile renderer ([GH-80911](https://github.com/godotengine/godot/pull/80911)). -- Fix clear color on mobile renderer ([GH-80933](https://github.com/godotengine/godot/pull/80933)). -- Fix volumetric fog NaN values in textures from starting at a zero Vector2 ([GH-80992](https://github.com/godotengine/godot/pull/80992)). -- GLES3: Fix `glMapBufferRange` return null when `r_index + last_item_index > max_instance` ([GH-81036](https://github.com/godotengine/godot/pull/81036)). -- Fix missing `EARLY_FRAGMENT_TESTS_BIT` barrier flags ([GH-81059](https://github.com/godotengine/godot/pull/81059)). -- Fix VoxelGI CameraAttributes exposure normalization handling ([GH-81067](https://github.com/godotengine/godot/pull/81067)). -- Flip convention of motion vectors ([GH-81074](https://github.com/godotengine/godot/pull/81074)). -- Fixup special case of cluster render ([GH-81081](https://github.com/godotengine/godot/pull/81081)). -- Fix VoxelGI static light pairing ([GH-81124](https://github.com/godotengine/godot/pull/81124)). -- Vertex and attribute compression ([GH-81138](https://github.com/godotengine/godot/pull/81138)). -- Add render mode to use world coordinates in canvas item shader ([GH-81160](https://github.com/godotengine/godot/pull/81160)). -- Reset SDFGI when changing editor scene tabs ([GH-81167](https://github.com/godotengine/godot/pull/81167)). -- Add FidelityFX Super Resolution 2.2 (FSR 2.2.1) support ([GH-81197](https://github.com/godotengine/godot/pull/81197)). -- Add placeholder RID to GradientTexture1D ([GH-81198](https://github.com/godotengine/godot/pull/81198)). -- vulkan: Update all components to Vulkan SDK 1.3.261.1 ([GH-81219](https://github.com/godotengine/godot/pull/81219)). -- Windows: Fix not applying NVIDIA profile to new executables ([GH-81251](https://github.com/godotengine/godot/pull/81251)). -- Implement render mode `fog_disabled` and BaseMaterial3D setting Disable Fog ([GH-81286](https://github.com/godotengine/godot/pull/81286)). -- Use 16-bit index buffers instead of 32 when unnecessary ([GH-81288](https://github.com/godotengine/godot/pull/81288)). -- Fix `RDPipelineColorBlendState.attachments` setter ([GH-81333](https://github.com/godotengine/godot/pull/81333)). -- Fix mipmap bias behavior by refactoring how samplers are created by Material Storage ([GH-81350](https://github.com/godotengine/godot/pull/81350)). -- Fix clear color's alpha value will affects 2D editor in Compatibility mode ([GH-81395](https://github.com/godotengine/godot/pull/81395)). -- Propagate error correctly when max texture size for lightmaps is too small ([GH-81543](https://github.com/godotengine/godot/pull/81543)). -- Fix LightmapGI baking with GridMap ([GH-81545](https://github.com/godotengine/godot/pull/81545)). -- Fix GLES3 instanced rendering color and custom data defaults ([GH-81575](https://github.com/godotengine/godot/pull/81575)). -- Fix VoxelGI MultiMesh and CSG mesh baking ([GH-81616](https://github.com/godotengine/godot/pull/81616)). -- Improve GLES3 scene renderer compatibility with older devices ([GH-81650](https://github.com/godotengine/godot/pull/81650)). -- Replace OIDN denoiser in Lightmapper with a JNLM denoiser compute shader ([GH-81659](https://github.com/godotengine/godot/pull/81659)). -- Fix validation error when using pipeline cache control ([GH-81771](https://github.com/godotengine/godot/pull/81771)). -- Fix massive validation errors when enabling TAA + MSAA ([GH-81775](https://github.com/godotengine/godot/pull/81775)). -- Opt-in to Vulkan features we actually use ([GH-81827](https://github.com/godotengine/godot/pull/81827)). -- Add half-pixel offset to lightmapper rasterization ([GH-81872](https://github.com/godotengine/godot/pull/81872)). -- Polish a few things in Vulkan RD ([GH-81912](https://github.com/godotengine/godot/pull/81912)). -- Fix LightmapGI shading sometimes being unlit or black ([GH-81951](https://github.com/godotengine/godot/pull/81951)). -- Rewrite the GPU Lightmapper's indirect logic to match Godot 3.5's CPU Lightmapper ([GH-82068](https://github.com/godotengine/godot/pull/82068)). -- Fix ShaderGlobalsOverride property handling ([GH-82100](https://github.com/godotengine/godot/pull/82100)). -- Linux/OpenGL: Don't force vsync in the editor ([GH-82221](https://github.com/godotengine/godot/pull/82221)). -- Fix RaycastOcclusionCull World3D scenario memory leak ([GH-82291](https://github.com/godotengine/godot/pull/82291)). -- Optimizing glow behavior ([GH-82353](https://github.com/godotengine/godot/pull/82353)). -- Add device info to GLES3 shader cache key hash ([GH-82359](https://github.com/godotengine/godot/pull/82359)). -- ANGLE: Add fallback control options and defaults ([GH-82364](https://github.com/godotengine/godot/pull/82364)). -- Clamp ReflectionProbe Max Distance to 262,144 to fix rendering issues ([GH-82415](https://github.com/godotengine/godot/pull/82415)). -- Fix Decal clamping to positive values not being applied to RenderingServer ([GH-82416](https://github.com/godotengine/godot/pull/82416)). -- GLES3: Avoid freeing proxy textures clearing owner's data ([GH-82430](https://github.com/godotengine/godot/pull/82430)). -- Avoid trying to free null RIDs in FSR2 teardown ([GH-82445](https://github.com/godotengine/godot/pull/82445)). -- Fix mismatch between surface vertex array generation inside the function and the caller ([GH-82451](https://github.com/godotengine/godot/pull/82451)). -- Disable `lightmapper_rd` module in non-editor builds (and in Android editor) ([GH-82521](https://github.com/godotengine/godot/pull/82521)). -- Make the lightmapper not dilate before denoising ([GH-82533](https://github.com/godotengine/godot/pull/82533)). -- Use internal texture at internal resolution for calculating luminance (FSR2) ([GH-82534](https://github.com/godotengine/godot/pull/82534)). -- Fix cluster artifacts and negative light ([GH-82546](https://github.com/godotengine/godot/pull/82546)). -- Workaround crash due to null shader when running XR project with `--xr-mode` off ([GH-82679](https://github.com/godotengine/godot/pull/82679)). -- OpenXR: Properly skip frame render when the XR runtime is not yet ready ([GH-82752](https://github.com/godotengine/godot/pull/82752)). -- Forgot to add debanding to config object ([GH-82766](https://github.com/godotengine/godot/pull/82766)). -- Re-add optional OIDN denoise as an external executable ([GH-82832](https://github.com/godotengine/godot/pull/82832)). -- Fog shader: Fix undeclared identifier `global_variables` ([GH-82877](https://github.com/godotengine/godot/pull/82877)). -- Avoid default fallback material when using `world_vertex_coords` ([GH-82886](https://github.com/godotengine/godot/pull/82886)). -- Only perform modelview transform on tangent and binormal when vertex shader is in local space ([GH-82892](https://github.com/godotengine/godot/pull/82892)). -- Directional 2 Split Shadow stabilization fix ([GH-82974](https://github.com/godotengine/godot/pull/82974)). -- Fix VoxelGI bake memory leak ([GH-83035](https://github.com/godotengine/godot/pull/83035)). -- Fix `trace_ray()` function in the lightmapper missing hits with large triangles ([GH-83040](https://github.com/godotengine/godot/pull/83040)). -- Fix incorrect check in `_dict_to_surf` ([GH-83056](https://github.com/godotengine/godot/pull/83056)). -- Fix incorrect vertex data size calculation in `ImmediateMesh` ([GH-83100](https://github.com/godotengine/godot/pull/83100)). -- Fix compatibility shadow size not being initialized ([GH-83141](https://github.com/godotengine/godot/pull/83141)). -- Disable update spinner when debug redraw is active ([GH-83143](https://github.com/godotengine/godot/pull/83143)). -- Fix BaseMaterial3D update with certain material settings ([GH-83145](https://github.com/godotengine/godot/pull/83145)). -- Fix a few cases where surface format is still 32 bits ([GH-83169](https://github.com/godotengine/godot/pull/83169)). -- Sanitize tangents when creating mesh surfaces to avoid triggering the compressed mesh path in the shader ([GH-83179](https://github.com/godotengine/godot/pull/83179)). -- Add an extra backbuffer color texture that can be used when an upscaler is in use ([GH-83192](https://github.com/godotengine/godot/pull/83192)). -- Fix `TextureStorage` not assigning default scale ([GH-83199](https://github.com/godotengine/godot/pull/83199)). -- Cleanup instances of using uint32_t for mesh formats ([GH-83211](https://github.com/godotengine/godot/pull/83211)). -- Fix OpenGL directional shadow last split fading ([GH-83252](https://github.com/godotengine/godot/pull/83252)). -- Optimize lightmapper using triangle clusters on the acceleration structure ([GH-83284](https://github.com/godotengine/godot/pull/83284)). -- Fix disabling depth prepass break opaque materials ([GH-83371](https://github.com/godotengine/godot/pull/83371)). -- Fix Mobile renderer shader instance uniform access ([GH-83400](https://github.com/godotengine/godot/pull/83400)). -- Pass viewport size to shadow pass instead of using Vector2i(1,1) ([GH-83491](https://github.com/godotengine/godot/pull/83491)). -- Ensure that only visible paired lights are used ([GH-83493](https://github.com/godotengine/godot/pull/83493)). -- Bump version of Vulkan RD binary shader format ([GH-83563](https://github.com/godotengine/godot/pull/83563)). -- Fix shadow map debug visualization camera frustum index buffer size ([GH-83639](https://github.com/godotengine/godot/pull/83639)). -- Fixing incorrect normal map when using triplanar world mapping and mesh rotation ([GH-83658](https://github.com/godotengine/godot/pull/83658)). -- Some more fixes for compressed meshes ([GH-83704](https://github.com/godotengine/godot/pull/83704)). -- macOS: Fallback to native OpenGL renderer if ANGLE initialization failed ([GH-83753](https://github.com/godotengine/godot/pull/83753)). -- Fix `GPUParticles3D` on the Meta Quest 2 with OpenGL renderer ([GH-83756](https://github.com/godotengine/godot/pull/83756)). -- Add property hint for 2D shadow size project setting ([GH-83760](https://github.com/godotengine/godot/pull/83760)). -- Ensure `r_aabb` is always used when creating surfaces through the RenderingServer ([GH-83840](https://github.com/godotengine/godot/pull/83840)). -- Fix LightmapGI taking editor-only and sky-only lights into account ([GH-83861](https://github.com/godotengine/godot/pull/83861)). -- Add padding to normal attribute in Compatibility renderer to match the RD renderers ([GH-83906](https://github.com/godotengine/godot/pull/83906)). -- Fix reading shadow filter quality from project settings in compatibility ([GH-83998](https://github.com/godotengine/godot/pull/83998)). -- Fix crash when upgrading meshes from 3.x format ([GH-84047](https://github.com/godotengine/godot/pull/84047)). -- Fix multiple issues with UV compression ([GH-84159](https://github.com/godotengine/godot/pull/84159)). -- Parse OpenGL and Vulkan strings as UTF-8 ([GH-84197](https://github.com/godotengine/godot/pull/84197)). -- Overhaul the SurfaceUpgradeTool ([GH-84200](https://github.com/godotengine/godot/pull/84200)). -- Fix bug with alpha to coverage by enabling depth discard when using alpha to coverage ([GH-84211](https://github.com/godotengine/godot/pull/84211)). -- Fix cubemap downsampler logic ([GH-84223](https://github.com/godotengine/godot/pull/84223)). -- Fix WebXR on desktop emulator by resetting active texture unit ([GH-84267](https://github.com/godotengine/godot/pull/84267)). -- macOS: Improve ANGLE support detection ([GH-84288](https://github.com/godotengine/godot/pull/84288)). -- Use default samplers in base uniform set when rendering to reflection probes ([GH-84317](https://github.com/godotengine/godot/pull/84317)). -- Windows: Add some AMD GPUs to the OpenGL blocklist ([GH-84568](https://github.com/godotengine/godot/pull/84568)). -- Create tangent array if mesh created without tangents ([GH-84576](https://github.com/godotengine/godot/pull/84576)). -- Fix FogMaterial memory leak ([GH-84702](https://github.com/godotengine/godot/pull/84702)). -- GLES3: Protect against bogus `glGetShaderInfoLog` return values ([GH-84741](https://github.com/godotengine/godot/pull/84741)). -- GLES3: Ensure all ShaderData is properly initialized in `set_code` ([GH-84752](https://github.com/godotengine/godot/pull/84752)). -- Ensure optional CopyEffects variants are loaded last ([GH-84883](https://github.com/godotengine/godot/pull/84883)). -- Renderer Viewport correct `sizeof` usage ([GH-84952](https://github.com/godotengine/godot/pull/84952)). -- GLES3: Fix iOS Simulator by removing incorrect `system_fbo` overwrite ([GH-84955](https://github.com/godotengine/godot/pull/84955)). -- Ensure 2D MSAA resolve is performed when 3D content but no 2D content in scene ([GH-84957](https://github.com/godotengine/godot/pull/84957)). -- Prevent crash in `_nvapi_disable_threaded_optimization` when attached to renderdoc ([GH-85121](https://github.com/godotengine/godot/pull/85121)). -- Avoid division by zero in the fix surface compatibility routine ([GH-85138](https://github.com/godotengine/godot/pull/85138)). -- Fix potential double-close of draw command label ([GH-85147](https://github.com/godotengine/godot/pull/85147)). -- Enable non-multiview advanced shader group whenever advanced shaders are requested ([GH-85194](https://github.com/godotengine/godot/pull/85194)). +- Add `texel_scale` property to LightmapGI ([GH-64908](https://github.com/godotengine/godot/pull/64908)). +- Add Direct3D 12 rendering driver (Mesa NIR approach) ([GH-70315](https://github.com/godotengine/godot/pull/70315)). +- Make the rendering method dropdown also affect mobile if compatible ([GH-72461](https://github.com/godotengine/godot/pull/72461)). +- Fix shadows for billboarded Sprite3D's ([GH-72638](https://github.com/godotengine/godot/pull/72638)). +- Add option to bake a mesh from blend shape mix ([GH-76725](https://github.com/godotengine/godot/pull/76725)). +- Update Y-sort position of the first item in the sorted subtree ([GH-79452](https://github.com/godotengine/godot/pull/79452)). +- Implement hooks into renderer ([GH-80214](https://github.com/godotengine/godot/pull/80214)). +- Improve warning messages related to Vulkan pipeline cache ([GH-80232](https://github.com/godotengine/godot/pull/80232)). +- OpenGL: Implement 3D Texture support ([GH-80363](https://github.com/godotengine/godot/pull/80363)). +- Fix potential integer underflow in rounded up divisions ([GH-80390](https://github.com/godotengine/godot/pull/80390)). +- Improve split blending logic for Vulkan ([GH-82668](https://github.com/godotengine/godot/pull/82668)). +- Add thread guard for `force_draw` and update related documentation ([GH-82953](https://github.com/godotengine/godot/pull/82953)). +- Split `RenderingDevice` into API-agnostic and `RenderingDeviceDriver` parts ([GH-83452](https://github.com/godotengine/godot/pull/83452)). +- Fix buffer updates going to the wrong cmd buffer if barriers were 0 ([GH-83736](https://github.com/godotengine/godot/pull/83736)). +- Expose `energy_multiplier` to remaining SkyMaterials ([GH-83938](https://github.com/godotengine/godot/pull/83938)). +- Add 3D MSAA and scaling support to GLES3 ([GH-83976](https://github.com/godotengine/godot/pull/83976)). +- Merge passes in Vulkan mobile renderer ([GH-84169](https://github.com/godotengine/godot/pull/84169)). +- Fix bad parameter for `rendering_method` crashes Godot ([GH-84241](https://github.com/godotengine/godot/pull/84241)). +- Skip swapchain logic if there is nothing to present (Android OpenXR) ([GH-84244](https://github.com/godotengine/godot/pull/84244)). +- Add `shadows_disabled` macro in Compatibility renderer ([GH-84416](https://github.com/godotengine/godot/pull/84416)). +- Transform mesh's AABB to skeleton's space when calculating mesh's bounds ([GH-84451](https://github.com/godotengine/godot/pull/84451)). +- Fix Camera2D frame delay (port from 3.x) ([GH-84465](https://github.com/godotengine/godot/pull/84465)). +- Extend `CanvasItem::draw_circle()`, making it also draw unfilled circle ([GH-84472](https://github.com/godotengine/godot/pull/84472)). +- CanvasItem draw implement antialiasing for `circle`, `rect`, `multiline`, and `dashedline` ([GH-84523](https://github.com/godotengine/godot/pull/84523)). +- Use render pass uniform set to store viewport samplers ([GH-84637](https://github.com/godotengine/godot/pull/84637)). +- Add MSAA support for WebXR ([GH-84686](https://github.com/godotengine/godot/pull/84686)). +- Only copy the relevant portion of the screen when copying to backbuffer in Compatibility backend ([GH-84733](https://github.com/godotengine/godot/pull/84733)). +- Shadow volume culling and tighter shadow caster culling ([GH-84745](https://github.com/godotengine/godot/pull/84745)). +- Add optional depth fog to Environment ([GH-84792](https://github.com/godotengine/godot/pull/84792)). +- Vulkan: Fix incorrect access to the buffers on Android ([GH-84852](https://github.com/godotengine/godot/pull/84852)). +- Store ArrayMesh path in RenderingServer for use in error messages ([GH-84894](https://github.com/godotengine/godot/pull/84894)). +- Acyclic Command Graph for Rendering Device ([GH-84976](https://github.com/godotengine/godot/pull/84976)). +- Use vertex input mask for creating vertex arrays ([GH-85092](https://github.com/godotengine/godot/pull/85092)). +- OpenGL: Implement rendering of lightmaps ([GH-85120](https://github.com/godotengine/godot/pull/85120)). +- Remove GI methods in parentheses from light baking options ([GH-85219](https://github.com/godotengine/godot/pull/85219)). +- Fix typo in BaseMaterial3D conversion from 3.x SpatialMaterial ([GH-85269](https://github.com/godotengine/godot/pull/85269)). +- Force ANGLE on all pre GCN 4th gen. AMD/ATI GPUs ([GH-85273](https://github.com/godotengine/godot/pull/85273)). +- Add property change guards to Sprite2D, Sprite3D and AnimatedSprite2D ([GH-85311](https://github.com/godotengine/godot/pull/85311)). +- Fix invalid `frame` index when Sprite2D's `hframes` or `vframes` change ([GH-85317](https://github.com/godotengine/godot/pull/85317)). +- Use render method from OS instead of project settings in compositor RD ([GH-85387](https://github.com/godotengine/godot/pull/85387)). +- Avoid crashes when engine leaks canvas items and friends ([GH-85520](https://github.com/godotengine/godot/pull/85520)). +- Apply some low-hanging fruit optimizations to Vulkan RD ([GH-85532](https://github.com/godotengine/godot/pull/85532)). +- Add premult alpha blending to 3D (spatial) shaders ([GH-85609](https://github.com/godotengine/godot/pull/85609)). +- Add wireframe for compatibility mode ([GH-85621](https://github.com/godotengine/godot/pull/85621)). +- Set ReflectionProbe frame before mapping id in mobile renderer ([GH-85635](https://github.com/godotengine/godot/pull/85635)). +- Add a descriptive error message when creating a mesh surface from the wrong array type ([GH-85646](https://github.com/godotengine/godot/pull/85646)). +- GLES3: Skip batches with zero instance count while rendering canvas ([GH-85778](https://github.com/godotengine/godot/pull/85778)). +- macOS: Switch ANGLE backend to ANGLE over OpenGL, switch default compatibility renderer back to native ([GH-85785](https://github.com/godotengine/godot/pull/85785)). +- Expose `copy_effects` compute shader in Mobile backend ([GH-85793](https://github.com/godotengine/godot/pull/85793)). +- Implement render info counters for the 2D renderer ([GH-85811](https://github.com/godotengine/godot/pull/85811)). +- Fix CanvasOcclusionShaderRD format error with double precision build ([GH-85822](https://github.com/godotengine/godot/pull/85822)). +- Ensure that 2D meshes use a proper input mask ([GH-85972](https://github.com/godotengine/godot/pull/85972)). +- Windows: Always use ANGLE in ARM builds ([GH-86001](https://github.com/godotengine/godot/pull/86001)). +- Fix radiance for sky in GLES stereo rendering ([GH-86018](https://github.com/godotengine/godot/pull/86018)). +- Fix Volumetric Fog VoxelGI updates ([GH-86023](https://github.com/godotengine/godot/pull/86023)). +- Remove dead code from `DisplayServerWindows::window_set_size` ([GH-86029](https://github.com/godotengine/godot/pull/86029)). +- Add a reflection mask to the reflection probes ([GH-86073](https://github.com/godotengine/godot/pull/86073)). +- Jitter raster occlusion camera to reduce false positives ([GH-86121](https://github.com/godotengine/godot/pull/86121)). +- Reduce the number of samplers used by the scene shaders ([GH-86219](https://github.com/godotengine/godot/pull/86219)). +- Use best fit normals for storing screen space normals ([GH-86316](https://github.com/godotengine/godot/pull/86316)). +- Fix wrong error message when graphics pipeline creation fails ([GH-86405](https://github.com/godotengine/godot/pull/86405)). +- Add `RD_ENABLED` when `VULKAN_ENABLED` or `D3D12_ENABLED` is added ([GH-86435](https://github.com/godotengine/godot/pull/86435)). +- Fix MSVC 14.1 complaining about "attempting to reference a deleted function" in RenderPassClearValue ([GH-86507](https://github.com/godotengine/godot/pull/86507)). +- Fix incorrect `CAMERA_DIRECTION_WORLD` calculation ([GH-86516](https://github.com/godotengine/godot/pull/86516)). +- RenderingDevice: Fix uniform sets wrongly assumed to be bound ([GH-86522](https://github.com/godotengine/godot/pull/86522)). +- D3D12: Dynamically load Agility SDK ([GH-86551](https://github.com/godotengine/godot/pull/86551)). +- Fix LightmapperRD division warning in MSVC ([GH-86555](https://github.com/godotengine/godot/pull/86555)). +- Fix Polygon2D to Skeleton2D transform calculation ([GH-86557](https://github.com/godotengine/godot/pull/86557)). +- Support CUSTOM shader attributes in 2D ([GH-86564](https://github.com/godotengine/godot/pull/86564)). +- Tiny fix for lightmapper DDA ([GH-86583](https://github.com/godotengine/godot/pull/86583)). +- Implement overdraw, lighting, and unshaded debug draw modes for OpenGL ([GH-86677](https://github.com/godotengine/godot/pull/86677)). +- Add autocompletion for RenderingServer's global shader methods & `has_os_feature` ([GH-86798](https://github.com/godotengine/godot/pull/86798)). +- Fix global transform being wrong on entering tree ([GH-86841](https://github.com/godotengine/godot/pull/86841)). +- Avoid several null-dereferences of ApiContextRD ([GH-86843](https://github.com/godotengine/godot/pull/86843)). +- Fix usage of index offsets in RenderingDevice ([GH-86852](https://github.com/godotengine/godot/pull/86852)). +- Fix determination of copyable layout for compressed textures in Vulkan ([GH-86855](https://github.com/godotengine/godot/pull/86855)). +- Fix build warning with memset value being too large ([GH-86920](https://github.com/godotengine/godot/pull/86920)). +- Fix SSR not working properly in stereo ([GH-86996](https://github.com/godotengine/godot/pull/86996)). +- Windows: Add support for hex vendor/device IDs in the Angle blocklist. Add Intel Gen5/Gen6/Gen7 GPUs to Angle blocklist ([GH-87013](https://github.com/godotengine/godot/pull/87013)). +- Fix incorrect mapping of initial action as clear region continue to clear ([GH-87022](https://github.com/godotengine/godot/pull/87022)). +- Deprecate RenderingServer's `has_feature` and Features enum ([GH-87035](https://github.com/godotengine/godot/pull/87035)). +- Default to 32-bit depth map on Forward+ renderer and 24-bit only on Mobile renderer ([GH-87057](https://github.com/godotengine/godot/pull/87057)). +- Fix UV issues in Compatibility renderer ([GH-87067](https://github.com/godotengine/godot/pull/87067)). +- Add `shader_cache_dir_valid` check to `_save_to_cache` ([GH-87096](https://github.com/godotengine/godot/pull/87096)). +- Fix build warning with memset value being too large ([GH-87155](https://github.com/godotengine/godot/pull/87155)). +- Fix 2D normals for transposed texture ([GH-87225](https://github.com/godotengine/godot/pull/87225)). +- Stabilize snapping 2D transforms to pixel ([GH-87297](https://github.com/godotengine/godot/pull/87297)). +- D3D12 RDD: Fix wrong argument when resolving timestamp queries ([GH-87298](https://github.com/godotengine/godot/pull/87298)). +- Finish splitting functionality of the `RenderingDevice` backends into `RenderingDeviceDriver` ([GH-87340](https://github.com/godotengine/godot/pull/87340)). +- Fix memory leak from not clearing the buffer barrier vector properly on the render graph ([GH-87349](https://github.com/godotengine/godot/pull/87349)). +- Fix Compatibility Rendering (GLES3) on old and low budget devices ([GH-87352](https://github.com/godotengine/godot/pull/87352)). +- Implement glow/bloom on compatibility renderer ([GH-87360](https://github.com/godotengine/godot/pull/87360)). +- Add GLES3 infrastructure for lightmap baking in the compatibility backend ([GH-87386](https://github.com/godotengine/godot/pull/87386)). +- Add `ivec` variants to `multiview_uv` for stereo rendering ([GH-87460](https://github.com/godotengine/godot/pull/87460)). +- OpenXR: Cleanup swapchain logic (was Fix render target multiplier) ([GH-87466](https://github.com/godotengine/godot/pull/87466)). +- Direct3D 12: Let NIR runtime data and push constants use the same register scheme as bindings ([GH-87482](https://github.com/godotengine/godot/pull/87482)). +- Disable scissor test after rendering batches in compatibility renderer ([GH-87489](https://github.com/godotengine/godot/pull/87489)). +- Clean up outdated `USE_LIGHT_SHADER_CODE` usage ([GH-87495](https://github.com/godotengine/godot/pull/87495)). +- Fix framebuffer created for reflection probe in mobile renderer ([GH-87505](https://github.com/godotengine/godot/pull/87505)). +- Fix validation errors by improving stage and slice tracking behavior of RenderingDeviceGraph ([GH-87512](https://github.com/godotengine/godot/pull/87512)). +- Avoid saving the `texture_rd_rid` property of TextureRD resources ([GH-87541](https://github.com/godotengine/godot/pull/87541)). +- Significantly improve the speed of shader compilation in compatibility backend ([GH-87553](https://github.com/godotengine/godot/pull/87553)). +- Direct3D 12: Make format feature check more defensive ([GH-87570](https://github.com/godotengine/godot/pull/87570)). +- Direct3D 12: Fix and enable custom debug printing ([GH-87572](https://github.com/godotengine/godot/pull/87572)). +- Direct3D 12: Include in CODEOWNERS ([GH-87574](https://github.com/godotengine/godot/pull/87574)). +- Do not use a linear sampler on lightmapper when retrieving grid data ([GH-87618](https://github.com/godotengine/godot/pull/87618)). +- Direct3D 12: Query support for 16-bit operations ([GH-87670](https://github.com/godotengine/godot/pull/87670)). +- Add check in `CompressedTextureLayered::get_layer_data` to prevent crash ([GH-87694](https://github.com/godotengine/godot/pull/87694)). +- Free dummy renderer objects ([GH-87710](https://github.com/godotengine/godot/pull/87710)). +- Enforce calling RenderingDevice code from rendering thread in TextureRD classes ([GH-87721](https://github.com/godotengine/godot/pull/87721)). +- Do not reflect the origin lines in a mirror ([GH-87757](https://github.com/godotengine/godot/pull/87757)). +- Direct3D 12: Avoid terrible leak related to command allocators ([GH-87795](https://github.com/godotengine/godot/pull/87795)). +- Namespace shader cache files by graphics API ([GH-87796](https://github.com/godotengine/godot/pull/87796)). +- Direct3D 12: Enhance management of texture data life cycle ([GH-87872](https://github.com/godotengine/godot/pull/87872)). +- Direct 3D 12: Implement proper fallback for format casting ([GH-88027](https://github.com/godotengine/godot/pull/88027)). +- Add reflection probe support to compatibility renderer ([GH-88056](https://github.com/godotengine/godot/pull/88056)). +- Fix missing instance type in dummy renderer ([GH-88097](https://github.com/godotengine/godot/pull/88097)). +- Make `RID_Owner<Texture>` threadsafe in `TextureStorage` for GLES3 ([GH-88205](https://github.com/godotengine/godot/pull/88205)). +- Direct3D 12: Fix cubemap slicing ([GH-88252](https://github.com/godotengine/godot/pull/88252)). +- D3D12: Improve shader validation handling ([GH-88254](https://github.com/godotengine/godot/pull/88254)). +- Fix swap chain errors when application starts minimized ([GH-88289](https://github.com/godotengine/godot/pull/88289)). +- Disable ReShade in the editor and project manager (if run via Vulkan) ([GH-88316](https://github.com/godotengine/godot/pull/88316)). +- Use Reverse Z for the depth buffer ([GH-88328](https://github.com/godotengine/godot/pull/88328)). +- Add validation to render graph for draw and compute lists ([GH-88331](https://github.com/godotengine/godot/pull/88331)). +- Handle `VK_SUBOPTIMAL_KHR` as a valid error code to fix Android performance ([GH-88361](https://github.com/godotengine/godot/pull/88361)). +- Fix unshaded debug draw mode for LightmapGI ([GH-88384](https://github.com/godotengine/godot/pull/88384)). +- Allow VisibleOnScreenNotifier2D/3D to have empty `enable_node_path` ([GH-88403](https://github.com/godotengine/godot/pull/88403)). +- Make dummy rendering server appear as a high end platform to fix vulkan shader compile error when exporting ([GH-88409](https://github.com/godotengine/godot/pull/88409)). +- Fix reversed custom `AABB` check when recalculating multimesh `AABB`s ([GH-88506](https://github.com/godotengine/godot/pull/88506)). +- D3D12: Define GUIDs directly ([GH-88540](https://github.com/godotengine/godot/pull/88540)). +- Merge execute and present commands for RenderingDeviceDriver ([GH-88560](https://github.com/godotengine/godot/pull/88560)). +- Fix shader cache with transform feedback on some Android devices ([GH-88573](https://github.com/godotengine/godot/pull/88573)). +- Fail early if shader mode is invalid in dummy renderer ([GH-88581](https://github.com/godotengine/godot/pull/88581)). +- Remove unnecessary AABB initialization for CPUParticles ([GH-88602](https://github.com/godotengine/godot/pull/88602)). +- Change glow calculation back to `max(r,g,b)` ([GH-88612](https://github.com/godotengine/godot/pull/88612)). +- Remove tracking logic for input attachments as it's not necessary ([GH-88631](https://github.com/godotengine/godot/pull/88631)). +- Fix OpenGL on Android after adding optional depth fog ([GH-88633](https://github.com/godotengine/godot/pull/88633)). +- Use barriers between all blur passes with SSAO and SSIL ([GH-88649](https://github.com/godotengine/godot/pull/88649)). +- Implement VisibilityNotifier3D in the compatibility backend ([GH-88684](https://github.com/godotengine/godot/pull/88684)). +- Consistently use `system_fbo` instead of binding 0 as it is needed for iOS devices ([GH-88745](https://github.com/godotengine/godot/pull/88745)). +- Fix rendering issue with depth in WebXR ([GH-88787](https://github.com/godotengine/godot/pull/88787)). +- Add fix for TAA passes rendering black meshes on XR ([GH-88830](https://github.com/godotengine/godot/pull/88830)). +- Add `compositor_free` branch in Compatibility scene renderer free function ([GH-88873](https://github.com/godotengine/godot/pull/88873)). +- Ensure proper vertex input masks are used in 2D compatibility renderer ([GH-88938](https://github.com/godotengine/godot/pull/88938)). +- Direct3D 12: Fix shader model support check for devices not aware of the highest ones ([GH-89038](https://github.com/godotengine/godot/pull/89038)). +- Fix never ending loop with overlapping probes ([GH-89134](https://github.com/godotengine/godot/pull/89134)). +- Vulkan: Don't warn about invalid pipelines cache if missing ([GH-89180](https://github.com/godotengine/godot/pull/89180)). +- Make shader binary alignment handling simpler and more robust ([GH-89209](https://github.com/godotengine/godot/pull/89209)). +- Make Overdraw, Lighting and Shadow Splits debug draw modes ignore decals ([GH-89253](https://github.com/godotengine/godot/pull/89253)). +- Make `ShaderDescription` and related types public ([GH-89277](https://github.com/godotengine/godot/pull/89277)). +- Fix lightmap captures not applied in one octant ([GH-89281](https://github.com/godotengine/godot/pull/89281)). +- Increase coverage of timestamps for visual profiler ([GH-89398](https://github.com/godotengine/godot/pull/89398)). +- Ensure specialization constants come sorted from reflection ([GH-89420](https://github.com/godotengine/godot/pull/89420)). +- Set a minimum of 0.01 for proximity fade to avoid undefined behavior in shader ([GH-89432](https://github.com/godotengine/godot/pull/89432)). +- Fix missed light clusters when inside clipped lights ([GH-89450](https://github.com/godotengine/godot/pull/89450)). +- Fix shader compilation error when enabling texture MSDF and UV1 Triplanar at the same time ([GH-89470](https://github.com/godotengine/godot/pull/89470)). +- Expose bindings to compute dispatch indirect of rendering device ([GH-89491](https://github.com/godotengine/godot/pull/89491)). +- Allow BaseMaterial3D height/dither fade to work with Compatibility rendering ([GH-89528](https://github.com/godotengine/godot/pull/89528)). +- Fix mobile renderer RID leaks ([GH-89531](https://github.com/godotengine/godot/pull/89531)). +- Tighter shadow culling - fix light colinear to frustum edge ([GH-89714](https://github.com/godotengine/godot/pull/89714)). +- Shadow fade for omni lights actually stops the shadow from updating while faded out to improve performance ([GH-89729](https://github.com/godotengine/godot/pull/89729)). +- OpenXR: Change timing of xrWaitFrame and fix XR multithreading issues ([GH-89734](https://github.com/godotengine/godot/pull/89734)). +- Add missing `RenderInfoType` enum to `Viewport` ([GH-89805](https://github.com/godotengine/godot/pull/89805)). +- Fix decal modulate being passed as srgb instead of as linear color ([GH-89849](https://github.com/godotengine/godot/pull/89849)). +- Add support for OpenXR composition layers ([GH-89880](https://github.com/godotengine/godot/pull/89880)). +- Improvements to VRS/Foveated rendering ([GH-89894](https://github.com/godotengine/godot/pull/89894)). +- TileMap: Fix forcing cleanup on exiting tree/canvas ([GH-89975](https://github.com/godotengine/godot/pull/89975)). +- Fix `RenderingDevice::get_driver_resource` crash or incorrect result with certain resources ([GH-90011](https://github.com/godotengine/godot/pull/90011)). +- Add early return when setting `transparent_bg` ([GH-90055](https://github.com/godotengine/godot/pull/90055)). +- Expose `MeshInstance3D.get_skin_reference` and add docs ([GH-90056](https://github.com/godotengine/godot/pull/90056)). +- Don't use subpasses when we're using Canvas background mode in Mobile ([GH-90191](https://github.com/godotengine/godot/pull/90191)). +- Allow Decal Emission Energy values above 128 in the inspector ([GH-90217](https://github.com/godotengine/godot/pull/90217)). +- Fix OpenGL `_shadow_atlas_find_shadow` error when light instance is freed ([GH-90233](https://github.com/godotengine/godot/pull/90233)). +- Fix per-node physics interpolation setting ([GH-90246](https://github.com/godotengine/godot/pull/90246)). +- Add toggle for enabling or disabling RenderingDevice's pipeline cache ([GH-90271](https://github.com/godotengine/godot/pull/90271)). +- Fix sharing World2D between SubViewports causes 2D lights of one SubViewport to go missing ([GH-90282](https://github.com/godotengine/godot/pull/90282)). +- Avoid compiler error with RenderingContextDriverVulkanWindows ([GH-90326](https://github.com/godotengine/godot/pull/90326)). +- OpenXR: Apply fix for reverse Z ([GH-90416](https://github.com/godotengine/godot/pull/90416)). +- Fix GeometryInstance3D Custom AABB assignment in the editor not working ([GH-90440](https://github.com/godotengine/godot/pull/90440)). +- Clear RIDs of weight buffers when freeing to avoid double free ([GH-90458](https://github.com/godotengine/godot/pull/90458)). +- Fix incorrect bounds check in RenderingDevice push constant ([GH-90620](https://github.com/godotengine/godot/pull/90620)). +- Delaunay3D/LightmapGI: Improve triangulation ([GH-90701](https://github.com/godotengine/godot/pull/90701)). +- LightmapGI: Reduce warnings and increase probe accuracy ([GH-90702](https://github.com/godotengine/godot/pull/90702)). +- Fix `Line2D` joints with `joint_mode` set to Round rendered "flipped" for a 180 degree angle ([GH-90786](https://github.com/godotengine/godot/pull/90786)). +- Use a src rect for copying from screen with CanvasGroup in the mobile backend ([GH-90821](https://github.com/godotengine/godot/pull/90821)). +- Revert change to default depth clear value in `draw_list_begin()` ([GH-90828](https://github.com/godotengine/godot/pull/90828)). +- LightmapGI: Fix seam blending with directional lightmaps ([GH-90848](https://github.com/godotengine/godot/pull/90848)). +- Fix LightOccluder2D SDF Collision Enable/Disable ([GH-90883](https://github.com/godotengine/godot/pull/90883)). +- Ensure minimum block size is respected when doing GPU to CPU copies of compressed textures ([GH-90911](https://github.com/godotengine/godot/pull/90911)). +- Avoid writing out of range data over valid data in CVTT decompress methods when decompressing small mip levels ([GH-90912](https://github.com/godotengine/godot/pull/90912)). +- Apply additional fixes to servers' threading ([GH-90913](https://github.com/godotengine/godot/pull/90913)). +- Exit light calculation early when pixel outside of light bounding rectangle ([GH-90920](https://github.com/godotengine/godot/pull/90920)). +- Handle compressed images in `TileSetAtlasSource::_create_padded_image_texture` ([GH-90994](https://github.com/godotengine/godot/pull/90994)). +- Fix issue with copy shader not working in multiview ([GH-91059](https://github.com/godotengine/godot/pull/91059)). +- Fix issue in shadow to opacity ([GH-91096](https://github.com/godotengine/godot/pull/91096)). +- Add `LIGHT_VERTEX` to fragment shader ([GH-91136](https://github.com/godotengine/godot/pull/91136)). +- Fix crash on compatibility fallback when vkCreateRenderPass2KHR is unavailable ([GH-91169](https://github.com/godotengine/godot/pull/91169)). +- Tweak appearance of 3D editor gizmo icons ([GH-91174](https://github.com/godotengine/godot/pull/91174)). +- Add adjustments and color correction to Compatibility renderer ([GH-91176](https://github.com/godotengine/godot/pull/91176)). +- Properly calculate penumbra for soft shadows with reverse z ([GH-91191](https://github.com/godotengine/godot/pull/91191)). +- Fix incorrect memory read when capacity changes in RD Graph ([GH-91312](https://github.com/godotengine/godot/pull/91312)). +- Ensure that environment is available before checking for BCS ([GH-91322](https://github.com/godotengine/godot/pull/91322)). +- Fix SDFGI being used in unshaded debug draw ([GH-91344](https://github.com/godotengine/godot/pull/91344)). +- Ensure global shader sampler parameters are initialized when loading ([GH-91414](https://github.com/godotengine/godot/pull/91414)). +- Fix typo in shader breaking gles3 ([GH-91426](https://github.com/godotengine/godot/pull/91426)). +- Use a full screen triangle for mipmap calculations in mobile renderer ([GH-91480](https://github.com/godotengine/godot/pull/91480)). +- Add optional driver workaround to RenderingDevice for Adreno 6XX ([GH-91514](https://github.com/godotengine/godot/pull/91514)). +- Add draw and dispatch count to timestamp validation ([GH-91530](https://github.com/godotengine/godot/pull/91530)). +- Properly set size of shadow atlas quadrant when subdivision is 8 or higher ([GH-91545](https://github.com/godotengine/godot/pull/91545)). +- Add a project setting to configure the maximum number of timestamps ([GH-91551](https://github.com/godotengine/godot/pull/91551)). +- LightmapGI: Fix lightleaks caused by insufficient padding and add denoiser range property for LightmapGI ([GH-91601](https://github.com/godotengine/godot/pull/91601)). +- Skip rendering sky if viewport is set to transparent background ([GH-91642](https://github.com/godotengine/godot/pull/91642)). +- Add support for enhanced barriers in D3D12 ([GH-91769](https://github.com/godotengine/godot/pull/91769)). +- Tighter light culling - fix directional lights colinear case ([GH-91790](https://github.com/godotengine/godot/pull/91790)). +- Rewrite reprojection for FSR2 to work correctly with Reverse-Z ([GH-91799](https://github.com/godotengine/godot/pull/91799)). +- Do not use MSAA versions of textures on debug views ([GH-91808](https://github.com/godotengine/godot/pull/91808)). +- Fix MultiMesh buffer cache in transforms-only case ([GH-91846](https://github.com/godotengine/godot/pull/91846)). +- Fix compatibility renderer load of compressed layered `GL_TEXTURE_2D_ARRAY` ([GH-91853](https://github.com/godotengine/godot/pull/91853)). +- Fix lightmapper seam blending ([GH-91985](https://github.com/godotengine/godot/pull/91985)). +- Optimize usage of "prepare for use" in draw and dispatch commands ([GH-91989](https://github.com/godotengine/godot/pull/91989)). +- Increase coverage of VRAM debugger and add support to RD backends ([GH-92000](https://github.com/godotengine/godot/pull/92000)). +- vulkan: Update all components to Vulkan SDK 1.3.283.0 ([GH-92010](https://github.com/godotengine/godot/pull/92010)). +- Add context getter to RenderingDevice ([GH-92045](https://github.com/godotengine/godot/pull/92045)). +- Tight shadow culling - increase epsilon to prevent flickering ([GH-92078](https://github.com/godotengine/godot/pull/92078)). +- Stereo rendering: Fix omni lights ([GH-92186](https://github.com/godotengine/godot/pull/92186)). +- Only apply LOD when camera is outside the AABB of mesh in mobile renderer ([GH-92232](https://github.com/godotengine/godot/pull/92232)). +- Reduce allocations each time a render pass begins in RenderingDevice ([GH-92258](https://github.com/godotengine/godot/pull/92258)). +- Fix LOD selection in compatibility backend and clean up LOD code ([GH-92287](https://github.com/godotengine/godot/pull/92287)). +- Fix albedo value wraparound in Compatibility render mode ([GH-92388](https://github.com/godotengine/godot/pull/92388)). +- Separate linear and sRGB uniform buffers in RD rendering backends ([GH-92444](https://github.com/godotengine/godot/pull/92444)). +- Disable `camera_effects` when debug draw is active ([GH-92524](https://github.com/godotengine/godot/pull/92524)). +- Add more validation to UBO size and alignment in Compatibility renderer ([GH-92568](https://github.com/godotengine/godot/pull/92568)). +- RenderingDevice: Reject creation of textures with no usage ([GH-92587](https://github.com/godotengine/godot/pull/92587)). +- Fix Adreno 3xx compatibility for devices with newer driver versions ([GH-92741](https://github.com/godotengine/godot/pull/92741)). +- Fix glsl shader for Android Mali-GXXx GPUs and Vulkan API 1.3.xxx ([GH-92817](https://github.com/godotengine/godot/pull/92817)). +- Make query for `GL_MAX_VIEWPORT_DIMS` compatible with web exports ([GH-92851](https://github.com/godotengine/godot/pull/92851)). +- Fix depth clear value for uv2 baking in compatibility renderer ([GH-92887](https://github.com/godotengine/godot/pull/92887)). +- Ensure Motion Vectors are enabled by particles and skeletons when using the Motion Vector debug draw option ([GH-93055](https://github.com/godotengine/godot/pull/93055)). +- Ensure post processing happens when adjustments are enabled in the Compatibility renderer ([GH-93060](https://github.com/godotengine/godot/pull/93060)). +- Track compositor effects that use motion vectors ([GH-93068](https://github.com/godotengine/godot/pull/93068)). +- Ensure sky reflection is updated when ambient mode is set to background ([GH-93107](https://github.com/godotengine/godot/pull/93107)). +- Add Parallax2D repeats in ysort child collection ([GH-93182](https://github.com/godotengine/godot/pull/93182)). +- Fix `TileMapLayer` not respecting physics interpolation mode ([GH-93279](https://github.com/godotengine/godot/pull/93279)). +- AnimatedTexture: Fix crash when loaded from a thread ([GH-93340](https://github.com/godotengine/godot/pull/93340)). +- Fix ubo tag placement in canvas.glsl fragment shader ([GH-93343](https://github.com/godotengine/godot/pull/93343)). +- Physics interpolation: Fix 2D skinning ([GH-93368](https://github.com/godotengine/godot/pull/93368)). +- Remove unused flag and code from canvas renderer ([GH-93376](https://github.com/godotengine/godot/pull/93376)). +- Fix incorrect enabling of post process in OpenGL ([GH-93530](https://github.com/godotengine/godot/pull/93530)). +- Add safety check when setting several rendering effect quality ([GH-93617](https://github.com/godotengine/godot/pull/93617)). +- Make RenderSceneData take projection correction into account ([GH-93630](https://github.com/godotengine/godot/pull/93630)). +- Use `PackedVector4Array` instead of float array for vec4 array uniform ([GH-93635](https://github.com/godotengine/godot/pull/93635)). +- Remove warning when project setting requests a larger global shader uniform buffer than the hardware supports ([GH-93645](https://github.com/godotengine/godot/pull/93645)). +- Remove useless instantiation in `RDShaderFile::parse_versions_from_text` ([GH-93649](https://github.com/godotengine/godot/pull/93649)). +- Improve handling of rendering startup errors ([GH-93706](https://github.com/godotengine/godot/pull/93706)). +- D3D12: Use the right state for resources in certain heap types ([GH-93707](https://github.com/godotengine/godot/pull/93707)). +- Windows: Disable G-SYNC in windowed mode ([GH-93737](https://github.com/godotengine/godot/pull/93737)). +- Replace pixel rounding with `floor(x + 0.5)` ([GH-93740](https://github.com/godotengine/godot/pull/93740)). +- Fix inconsistent CanvasModulate color in 2D HDR ([GH-93802](https://github.com/godotengine/godot/pull/93802)). +- Physics Interpolation - Fix `interpolated_transform_2d` ([GH-93852](https://github.com/godotengine/godot/pull/93852)). +- Android: Fix the issue causing the logo to not show when using the `compatibility` renderer ([GH-93891](https://github.com/godotengine/godot/pull/93891)). +- Fix AABB computation for position compression to not depend on vertex order ([GH-93916](https://github.com/godotengine/godot/pull/93916)). +- Fix compatibility renderer `depth_prepass_alpha` ([GH-93931](https://github.com/godotengine/godot/pull/93931)). +- MoltenVK: Fix downscaled hiDPI window pixelation ([GH-93950](https://github.com/godotengine/godot/pull/93950)). +- Pre transparent compositor effects needs to run later ([GH-93960](https://github.com/godotengine/godot/pull/93960)). +- Physics Interpolation: Fix behavior on pause ([GH-94036](https://github.com/godotengine/godot/pull/94036)). +- RenderingDevice: Leave handling of compressed block granularity to the driver ([GH-94069](https://github.com/godotengine/godot/pull/94069)). +- Use `GL_COLOR_ATTACHMENT` in depth prepass when using Multiview ([GH-94095](https://github.com/godotengine/godot/pull/94095)). +- Remove our `ERR_ON_RENDER_THREAD` guard, it is not reliable ([GH-94121](https://github.com/godotengine/godot/pull/94121)). +- Silence Vulkan "Unable to acquire framebuffer." swapchain error ([GH-94135](https://github.com/godotengine/godot/pull/94135)). +- Properly linearize depth buffer for SSAO when using orthogonal camera ([GH-94153](https://github.com/godotengine/godot/pull/94153)). +- Fix SSR orientation issues when using orthogonal camera ([GH-94184](https://github.com/godotengine/godot/pull/94184)). +- D3D12: Get rid of `DXIL.dll`! ([GH-94203](https://github.com/godotengine/godot/pull/94203)). +- Fix black `get_texture()` on viewport in compatibility mode with HDR enabled ([GH-94233](https://github.com/godotengine/godot/pull/94233)). +- Lightmapper: Ensure the atlas is big enough to fit padded UV maps ([GH-94236](https://github.com/godotengine/godot/pull/94236)). +- Lightmapper: Prevent infinite loop while blitting lightmaps into an atlas ([GH-94237](https://github.com/godotengine/godot/pull/94237)). +- Fix Image CowData crash when baking large lightmaps ([GH-94243](https://github.com/godotengine/godot/pull/94243)). +- D3D12: Avoid enabling depth bounds test if unsupported ([GH-94267](https://github.com/godotengine/godot/pull/94267)). +- Use a spec constant to control whether the MultiMesh branch is used in the vertex shader ([GH-94289](https://github.com/godotengine/godot/pull/94289)). +- Fix empty region in AtlasTexture ([GH-94365](https://github.com/godotengine/godot/pull/94365)). +- Expose more state in RenderSceneBuffersRD ([GH-94388](https://github.com/godotengine/godot/pull/94388)). +- Restore default clear color after displaying boot splash ([GH-94404](https://github.com/godotengine/godot/pull/94404)). +- Always render when XR is enabled, even if no OS windows can draw ([GH-94412](https://github.com/godotengine/godot/pull/94412)). +- Add warning when use FSR1 on renderer other than forward plus ([GH-94492](https://github.com/godotengine/godot/pull/94492)). +- SDFGI: Fix crash if `update_data` is nullptr ([GH-94535](https://github.com/godotengine/godot/pull/94535)). +- GLES3: Fix directional shadow on Metal ANGLE ([GH-94556](https://github.com/godotengine/godot/pull/94556)). +- Fix FOG shader issue in Compatibility mode ([GH-94564](https://github.com/godotengine/godot/pull/94564)). +- Support 64-bit image sizes for VRAM compression ([GH-94598](https://github.com/godotengine/godot/pull/94598)). +- Fix crash when assigning more textures than expected to texture array ([GH-94628](https://github.com/godotengine/godot/pull/94628)). +- Fix position from vertex shader partially uninitialized ([GH-94629](https://github.com/godotengine/godot/pull/94629)). +- Fix newly baked lightmap can't override previously baked at same path ([GH-94645](https://github.com/godotengine/godot/pull/94645)). +- RenderingDevice: Fix getting cubemap layer data ([GH-94656](https://github.com/godotengine/godot/pull/94656)). +- Remove linearization of canvas modulate in GLES3 backend ([GH-94707](https://github.com/godotengine/godot/pull/94707)). +- RenderingDevice: Use correct layer count for Cubemaps during boundary checks ([GH-94708](https://github.com/godotengine/godot/pull/94708)). +- Windows: Use default aggregate initialization for NVAPI settings ([GH-94735](https://github.com/godotengine/godot/pull/94735)). +- Windows: Fall back to D3D12 if Vulkan is not supported and vice versa ([GH-94796](https://github.com/godotengine/godot/pull/94796)). +- Fix regression around OpenGL swapchain optimization for OpenXR ([GH-94894](https://github.com/godotengine/godot/pull/94894)). +- D3D12: Avoid cases of redundant render target clears ([GH-95064](https://github.com/godotengine/godot/pull/95064)). +- D3D12: Avoid crash on exit ([GH-95074](https://github.com/godotengine/godot/pull/95074)). +- Fix LightmapGI causes crash when using `--headless` ([GH-95103](https://github.com/godotengine/godot/pull/95103)). #### Shaders -- Improve shader editor templates to be more descriptive ([GH-51863](https://github.com/godotengine/godot/pull/51863)). -- Add more useful Visual Shader nodes ([GH-72664](https://github.com/godotengine/godot/pull/72664)). -- Add DEPTH to the visual shader output (for spatial mode) ([GH-73691](https://github.com/godotengine/godot/pull/73691)). -- Support shader preprocessor concatenation symbol ([GH-74737](https://github.com/godotengine/godot/pull/74737)). -- Make the dragging connections more user-friendly in visual shaders ([GH-78547](https://github.com/godotengine/godot/pull/78547)). -- Fix invalid shader compilation when using `hint_normal_roughness_texture` in mobile backend ([GH-78839](https://github.com/godotengine/godot/pull/78839)). -- Fix using uint suffix at the hex number declaration in shaders ([GH-78906](https://github.com/godotengine/godot/pull/78906)). -- Fix shader language float literal precision truncation ([GH-78972](https://github.com/godotengine/godot/pull/78972)). -- Fix "Create Shader Node" window position when visual shader editor is floating ([GH-78996](https://github.com/godotengine/godot/pull/78996)). -- Allow more hint types for uniform arrays ([GH-79100](https://github.com/godotengine/godot/pull/79100)). -- Make shader preprocessor keyword colors consistent ([GH-79112](https://github.com/godotengine/godot/pull/79112)). -- Fix comments and indentation in `.gdshaderinc` files ([GH-79158](https://github.com/godotengine/godot/pull/79158)). -- Fix shader type detection ([GH-79287](https://github.com/godotengine/godot/pull/79287)). -- Add autocomplete for filter/repeat hints on uniform arrays ([GH-79402](https://github.com/godotengine/godot/pull/79402)). -- Add error for undefined function in shader ([GH-79459](https://github.com/godotengine/godot/pull/79459)). -- Remove debugging print from shader cache ([GH-80125](https://github.com/godotengine/godot/pull/80125)). -- Fix Shader and ShaderInclude resource loading ([GH-80705](https://github.com/godotengine/godot/pull/80705)). -- Fix empty shader resource loading ([GH-81300](https://github.com/godotengine/godot/pull/81300)). -- Fix shader language preprocessor include marker handling ([GH-81381](https://github.com/godotengine/godot/pull/81381)). -- Fix shader text editor include file reloading ([GH-81410](https://github.com/godotengine/godot/pull/81410)). -- Fix int to uint implicit cast error when use mat3 uniform in compatibility renderer ([GH-81494](https://github.com/godotengine/godot/pull/81494)). -- Re-allows constants in global space to be initialized with function call ([GH-81619](https://github.com/godotengine/godot/pull/81619)). -- Implement drop-down list properties to the custom visual shader nodes ([GH-81688](https://github.com/godotengine/godot/pull/81688)). -- Visual Shaders: Make output-ports for vector types expandable by default ([GH-82088](https://github.com/godotengine/godot/pull/82088)). -- Add preprocessor pass on visual shader when showing generated code ([GH-82570](https://github.com/godotengine/godot/pull/82570)). -- Fix typo in `shader_language.cpp` ([GH-83004](https://github.com/godotengine/godot/pull/83004)). -- Close shader in Shader Editor tab when deleting shader file in FileSystem panel ([GH-83137](https://github.com/godotengine/godot/pull/83137)). -- Fix parameter shader node not declared when only connected to a VaryingSetter ([GH-83189](https://github.com/godotengine/godot/pull/83189)). -- Fix bool varying's generated code will be modified with flat ([GH-83194](https://github.com/godotengine/godot/pull/83194)). -- Fix visual shader crash when arranging ([GH-83678](https://github.com/godotengine/godot/pull/83678)). -- Prevent `_allocate_placeholders` crash if `p_version->variants` is null ([GH-83780](https://github.com/godotengine/godot/pull/83780)). -- Fix inability to uncomment code in text shader editor ([GH-83822](https://github.com/godotengine/godot/pull/83822)). -- Fix assign with swizzle in shader not doing varying validation check ([GH-83830](https://github.com/godotengine/godot/pull/83830)). -- Properly rename `INSTANCE_ID` and `VERTEX_ID` in canvas item shaders in the compatibility backend ([GH-84585](https://github.com/godotengine/godot/pull/84585)). -- Don't store shader edit path in metadata ([GH-84628](https://github.com/godotengine/godot/pull/84628)). -- Fix VisualShader Texture2DParameter node filter bug ([GH-84768](https://github.com/godotengine/godot/pull/84768)). -- Fix VisualShader connection use after free ([GH-84832](https://github.com/godotengine/godot/pull/84832)). -- Make `AMOUNT_RATIO` constant in the shader language specification ([GH-85086](https://github.com/godotengine/godot/pull/85086)). -- Set some dialogs in the VisualShader editor to be exclusive ([GH-85205](https://github.com/godotengine/godot/pull/85205)). +- Automatically ensure correct normals in Compatibility renderer ([GH-82804](https://github.com/godotengine/godot/pull/82804)). +- Add connection related functionality to VisualShader (deleting, dropping/inserting a node) ([GH-83510](https://github.com/godotengine/godot/pull/83510)). +- Add extra warning messages to `VisualShaderNodeTextureParameter` ([GH-83729](https://github.com/godotengine/godot/pull/83729)). +- Refactor the parsing of port names in visual shader's expressions ([GH-83956](https://github.com/godotengine/godot/pull/83956)). +- Fix visual shader's `screen_uv` input preview uses position of node rather than a sample area like uv ([GH-84348](https://github.com/godotengine/godot/pull/84348)). +- Comment the shader template light function by default ([GH-84594](https://github.com/godotengine/godot/pull/84594)). +- VisualShader: Refactor use of Connection ([GH-84969](https://github.com/godotengine/godot/pull/84969)). +- Fix uint's suffix is not highlighted in text shader editor ([GH-85014](https://github.com/godotengine/godot/pull/85014)). +- Redesign the graph editor for visual shaders ([GH-85017](https://github.com/godotengine/godot/pull/85017)). +- Add a specific error when creating a ViewportTexture in a Texture2D node ([GH-85723](https://github.com/godotengine/godot/pull/85723)). +- Sync visual shader's distance fade using circular fade ([GH-86596](https://github.com/godotengine/godot/pull/86596)). +- Handle built-in shaders when closing scene ([GH-86710](https://github.com/godotengine/godot/pull/86710)). +- Add missing check when insert function `normal_roughness_compatibility` ([GH-87207](https://github.com/godotengine/godot/pull/87207)). +- Check if the ref shader is valid in visual shader's `_update_option_menu` ([GH-87356](https://github.com/godotengine/godot/pull/87356)). +- Fix `ShaderMaterial::_property_get_revert` crash when given non-existing `p_name` ([GH-87603](https://github.com/godotengine/godot/pull/87603)). +- Fully initialize all members of structs `IdentifierActions`, `GeneratedCode` and `DefaultIdentifierActions` ([GH-88021](https://github.com/godotengine/godot/pull/88021)). +- Make editing properties more intuitive in VisualShader ([GH-88951](https://github.com/godotengine/godot/pull/88951)). +- Add percent (`%`) sign to Remainder node name in visual shaders ([GH-88980](https://github.com/godotengine/godot/pull/88980)). +- Change shader compiler default setting to avoid doctool error ([GH-88996](https://github.com/godotengine/godot/pull/88996)). +- Fix some missing categories in visual shader nodes ([GH-89190](https://github.com/godotengine/godot/pull/89190)). +- Use raw string literals for BaseMaterial3D shader code generation ([GH-89267](https://github.com/godotengine/godot/pull/89267)). +- Rendering: Add hints to some uniform `PropertyInfo`s ([GH-89488](https://github.com/godotengine/godot/pull/89488)). +- Improve the editor native shader source visualizer ([GH-89690](https://github.com/godotengine/godot/pull/89690)). +- Fix false positive errors in gdshaderinc files ([GH-89752](https://github.com/godotengine/godot/pull/89752)). +- VisualShader: Remove invalid graph connections when ports are removed ([GH-89810](https://github.com/godotengine/godot/pull/89810)). +- Implement documentation comments and tooltips for shader uniform in the inspector ([GH-90161](https://github.com/godotengine/godot/pull/90161)). +- VisualShader: Add reroute node and improve port drawing ([GH-90534](https://github.com/godotengine/godot/pull/90534)). +- Warn users when assigning `VERTEX` directly to `POSITION` due to compatibility breakage from Reverse Z changes ([GH-90587](https://github.com/godotengine/godot/pull/90587)). +- Fix incorrect behavior at expanding an output port in visual shader node ([GH-90787](https://github.com/godotengine/godot/pull/90787)). +- Fix editor crash when shader has incorrect global array declaration ([GH-90792](https://github.com/godotengine/godot/pull/90792)). +- Fix shader crash on zero vector and negative x vector in particles processing ([GH-90810](https://github.com/godotengine/godot/pull/90810)). +- Handle Vector4 default input values in visual shaders ([GH-90850](https://github.com/godotengine/godot/pull/90850)). +- Prevent expanding output port in visual shader expression ([GH-90892](https://github.com/godotengine/godot/pull/90892)). +- Allow compressed texture array and cubemap types in shader globals editor ([GH-91164](https://github.com/godotengine/godot/pull/91164)). +- Don't run Shader doc comments logic outside the editor ([GH-91307](https://github.com/godotengine/godot/pull/91307)). +- Fix shader highlighting the interruption in `color_region` caused by `disabled_branch_regions` ([GH-91497](https://github.com/godotengine/godot/pull/91497)). +- Resolve conflict between shader uniform tooltips `/**` and general annotation `/**/` ([GH-91549](https://github.com/godotengine/godot/pull/91549)). +- Fix shader error on mobile when using `LIGHT_VERTEX` ([GH-91566](https://github.com/godotengine/godot/pull/91566)). +- Make native shader source visualizer highlight uint suffix ([GH-91647](https://github.com/godotengine/godot/pull/91647)). +- Fix code style for generated shader code from ParticleProcessMaterial ([GH-91946](https://github.com/godotengine/godot/pull/91946)). +- Prevent add shader uniform doc when DocTool is not inited ([GH-92145](https://github.com/godotengine/godot/pull/92145)). +- Fix error when duplicating visual shader node inside a Frame ([GH-92151](https://github.com/godotengine/godot/pull/92151)). +- Fix completion of functions with struct param/return type in shaders ([GH-92464](https://github.com/godotengine/godot/pull/92464)). +- Prevent using built-ins for func names in shaders ([GH-92564](https://github.com/godotengine/godot/pull/92564)). +- Fix `VisualShaderNodeVaryingGetter` expanded ports adding ".x" to shader ([GH-92847](https://github.com/godotengine/godot/pull/92847)). +- Fix incorrect preview port in visual shader ([GH-93153](https://github.com/godotengine/godot/pull/93153)). +- Fix bugs in visual shader varyings ([GH-93219](https://github.com/godotengine/godot/pull/93219)). +- Prevent changing some built-ins in spatial shaders ([GH-93269](https://github.com/godotengine/godot/pull/93269)). +- Add few new outputs to the visual shaders ([GH-93338](https://github.com/godotengine/godot/pull/93338)). +- Forbid calling of derivative functions in incorrect functions ([GH-93358](https://github.com/godotengine/godot/pull/93358)). +- Fix visual shader not being updated when switching tabs ([GH-93385](https://github.com/godotengine/godot/pull/93385)). +- Fix crash on shader constant initialization on MinGW compiler ([GH-93469](https://github.com/godotengine/godot/pull/93469)). +- Prevent shader crash when doing invalid operation on boolean vector ([GH-93793](https://github.com/godotengine/godot/pull/93793)). +- Fix orphan StringName's in ShaderLanguage ([GH-93849](https://github.com/godotengine/godot/pull/93849)). +- Improve code for setup of `global_func_set` in `ShaderLanguage` ([GH-93866](https://github.com/godotengine/godot/pull/93866)). +- Add `SwitchVector4D` shortcut to visual shader members ([GH-94272](https://github.com/godotengine/godot/pull/94272)). +- Make ShaderLanguage's parser recognize sampler passed in from array ([GH-94462](https://github.com/godotengine/godot/pull/94462)). +- Few fixes for `VisualShaderNodeRotationByAxis` ([GH-94497](https://github.com/godotengine/godot/pull/94497)). +- Fix internal connection count decreased if visual shader node removed ([GH-94498](https://github.com/godotengine/godot/pull/94498)). +- Fix warning printing for `VisualShaderNodeTextureParameter` ([GH-94611](https://github.com/godotengine/godot/pull/94611)). +- Fix shader crash when using a varying in separate func before it defined ([GH-94671](https://github.com/godotengine/godot/pull/94671)). +- Fix incorrect passing of parameter to visual shader preview ([GH-94729](https://github.com/godotengine/godot/pull/94729)). +- Update shader list after saving `gdshaderinc` file ([GH-94787](https://github.com/godotengine/godot/pull/94787)). +- Emit `normal_roughness` compatibility code in custom functions ([GH-94812](https://github.com/godotengine/godot/pull/94812)). +- Fix expanded output ports disconnection on updating in visual shader ([GH-94875](https://github.com/godotengine/godot/pull/94875)). +- Restrict sampler hint validation to only screen texture hints ([GH-94902](https://github.com/godotengine/godot/pull/94902)). +- VisualShader: Reduce size changes of nodes when connecting/disconnecting ([GH-95061](https://github.com/godotengine/godot/pull/95061)). #### Tests -- Add unit tests for Variant for operator overloading ([GH-76244](https://github.com/godotengine/godot/pull/76244)). -- Add a test suite for TranslationServer ([GH-79331](https://github.com/godotengine/godot/pull/79331)). -- Add unit tests for PackedScene ([GH-79440](https://github.com/godotengine/godot/pull/79440)). -- Add a test suite to InputEvent ([GH-79444](https://github.com/godotengine/godot/pull/79444)). -- Remove use of `std::string` in test ([GH-80422](https://github.com/godotengine/godot/pull/80422)). -- Improve PackedScene unit test for complex scene ([GH-80423](https://github.com/godotengine/godot/pull/80423)). -- Fix errors when testing `Resource` ([GH-81456](https://github.com/godotengine/godot/pull/81456)). -- Adds additional tests for RegEx class ([GH-82225](https://github.com/godotengine/godot/pull/82225)). -- Simplify Geometry3D tests ([GH-82288](https://github.com/godotengine/godot/pull/82288)). -- Fix Variant assignment to Vec2 tests ([GH-83959](https://github.com/godotengine/godot/pull/83959)). +- Add `closest_points_between_segments()` basis path tests for Geometry2D ([GH-48652](https://github.com/godotengine/godot/pull/48652)). +- Fix PathFollow tests, Add PathFollow3D forward test ([GH-51372](https://github.com/godotengine/godot/pull/51372)). +- Add rotation unit tests for Transform3D ([GH-61013](https://github.com/godotengine/godot/pull/61013)). +- Improve PackedScene unit test by covering more methods ([GH-80819](https://github.com/godotengine/godot/pull/80819)). +- Add additional tests for RegEx ([GH-81742](https://github.com/godotengine/godot/pull/81742)). +- Add unit tests for Camera3D ([GH-84826](https://github.com/godotengine/godot/pull/84826)). +- Add more C++ unit tests for String to number conversions ([GH-85666](https://github.com/godotengine/godot/pull/85666)). +- Test global transform when adding detached tree ([GH-87270](https://github.com/godotengine/godot/pull/87270)). +- Add `ImageTexture` unit tests ([GH-88044](https://github.com/godotengine/godot/pull/88044)). +- Fix test regression without editor ([GH-88449](https://github.com/godotengine/godot/pull/88449)). +- Add unit tests for Camera2D ([GH-88614](https://github.com/godotengine/godot/pull/88614)). +- Add unit tests for CryptoKey ([GH-89021](https://github.com/godotengine/godot/pull/89021)). +- Add unit tests for JSONRPC ([GH-89124](https://github.com/godotengine/godot/pull/89124)). +- Add unit test for Vector2 `plane_project` ([GH-89617](https://github.com/godotengine/godot/pull/89617)). +- Add unit tests for `OAHashMap` ([GH-90313](https://github.com/godotengine/godot/pull/90313)). +- Add more unit tests for Transform2D ([GH-90506](https://github.com/godotengine/godot/pull/90506)). +- Exit with an error if using `--test` on binary without unit tests compiled ([GH-90507](https://github.com/godotengine/godot/pull/90507)). +- Remove NavigationRegion3D race condition that fails on CI ([GH-90613](https://github.com/godotengine/godot/pull/90613)). +- Disable NavigationServer3D async bake test with race condition ([GH-90804](https://github.com/godotengine/godot/pull/90804)). +- Suppress expected errors in resource unit tests ([GH-91028](https://github.com/godotengine/godot/pull/91028)). +- Add unit test cases for ImageTexture3D ([GH-91233](https://github.com/godotengine/godot/pull/91233)). +- Add Timer unit tests ([GH-91395](https://github.com/godotengine/godot/pull/91395)). +- Expand tests for `Curve2D/3D` ([GH-91880](https://github.com/godotengine/godot/pull/91880)). +- Use subfolder for temporary test files ([GH-92810](https://github.com/godotengine/godot/pull/92810)). +- Fix some invalid error messages ([GH-93135](https://github.com/godotengine/godot/pull/93135)). +- Fix unit tests in template builds ([GH-93745](https://github.com/godotengine/godot/pull/93745)). +- CI: Run unit tests on desktop release templates ([GH-93780](https://github.com/godotengine/godot/pull/93780)). +- Fix compilation failure in `test_graph_node.h` with `disable_exceptions=false` ([GH-94834](https://github.com/godotengine/godot/pull/94834)). +- Fix Vector4, Vector4i, and Projection missing from ClassDB tests ([GH-95517](https://github.com/godotengine/godot/pull/95517)). #### Thirdparty -- brotli: Sync with upstream 1.1.0 ([GH-82580](https://github.com/godotengine/godot/pull/82580)). -- freetype: Update to version 2.13.2 ([GH-81110](https://github.com/godotengine/godot/pull/81110)). -- harfbuzz: Update to version 8.2.2 ([GH-84080](https://github.com/godotengine/godot/pull/84080)). -- libpng: Update to upstream 1.6.40 ([GH-80262](https://github.com/godotengine/godot/pull/80262)). -- libwebp: Sync with upstream 1.3.2 ([GH-81663](https://github.com/godotengine/godot/pull/81663)). -- mbedtls: Fix MSVC ARM build after 2.28.3 enabled AES-NI intrinsics ([GH-81405](https://github.com/godotengine/godot/pull/81405)). -- mbedtls: Update to version 2.28.5 ([GH-83721](https://github.com/godotengine/godot/pull/83721)). -- mbedtls: Backport Windows fix to use bcrypt for entropy ([GH-84042](https://github.com/godotengine/godot/pull/84042)). -- miniupnpc: Update to version 2.2.5 ([GH-80382](https://github.com/godotengine/godot/pull/80382)). -- minizip: Fix `ZIPReader` failing to open empty zip files ([GH-73310](https://github.com/godotengine/godot/pull/73310)). -- minizip: Backport patch to fix CVE-2023-45853 ([GH-85509](https://github.com/godotengine/godot/pull/85509)). -- openxr: Sync with upstream 1.0.31, don't build obsolete dispatch table ([GH-83984](https://github.com/godotengine/godot/pull/83984)). -- r128: Update to include latest fix for intrinsics being incorrect included ([GH-84537](https://github.com/godotengine/godot/pull/84537)). -- thorvg: Update to 0.11.2 ([GH-83656](https://github.com/godotengine/godot/pull/83656)). -- tinyexr: Sync with upstream 1.0.7 ([GH-80384](https://github.com/godotengine/godot/pull/80384)). -- zlib/minizip: Update to version 1.3 ([GH-81111](https://github.com/godotengine/godot/pull/81111)). +- astcenc: Update to 4.7.0 ([GH-80375](https://github.com/godotengine/godot/pull/80375)). +- ICU4C: Update to version 74.1 ([GH-84289](https://github.com/godotengine/godot/pull/84289)). +- meshoptimizer: Update to v0.20 (with a reduced patch) ([GH-84384](https://github.com/godotengine/godot/pull/84384)). +- Fix README from `linuxbsd_headers` ([GH-86607](https://github.com/godotengine/godot/pull/86607)). +- ThorVG: Update from v0.11.2 to v0.11.6 ([GH-86623](https://github.com/godotengine/godot/pull/86623)). +- ThorVG: Update from v0.11.6 to v0.12.0 ([GH-86846](https://github.com/godotengine/godot/pull/86846)). +- OpenXR: Update to version 1.0.33 ([GH-86980](https://github.com/godotengine/godot/pull/86980)). +- vulkan: Update components to Vulkan SDK 1.3.268.0 ([GH-87091](https://github.com/godotengine/godot/pull/87091)). +- ThorVG: update from v0.12.0 to v0.12.1 ([GH-87105](https://github.com/godotengine/godot/pull/87105)). +- zlib/minizip: Update to version 1.3.1 ([GH-87527](https://github.com/godotengine/godot/pull/87527)). +- certs: Sync with Mozilla bundle as of Dec 13, 2023 ([GH-87581](https://github.com/godotengine/godot/pull/87581)). +- ThorVG: update from v0.12.1 to v0.12.3 ([GH-87612](https://github.com/godotengine/godot/pull/87612)). +- mbedtls: Update to upstream version 2.28.7 ([GH-87738](https://github.com/godotengine/godot/pull/87738)). +- Sync controller mappings DB with SDL2 community repo ([GH-87741](https://github.com/godotengine/godot/pull/87741)). +- ThorVG: update from v0.12.3 to v0.12.4 ([GH-87869](https://github.com/godotengine/godot/pull/87869)). +- wayland-protocols: Update to 1.33 ([GH-87982](https://github.com/godotengine/godot/pull/87982)). +- etcpak: Sync with upstream ([GH-87984](https://github.com/godotengine/godot/pull/87984)). +- vulkan: Update all components to Vulkan SDK 1.3.275.0 ([GH-88011](https://github.com/godotengine/godot/pull/88011)). +- thorvg: Re-enable thread support, made opt-in upstream ([GH-88053](https://github.com/godotengine/godot/pull/88053)). +- libktx: Update to 4.3.1 ([GH-88075](https://github.com/godotengine/godot/pull/88075)). +- ThorVG: update from v0.12.4 to v0.12.5 ([GH-88094](https://github.com/godotengine/godot/pull/88094)). +- miniupnpc: Update to version 2.2.6 ([GH-88285](https://github.com/godotengine/godot/pull/88285)). +- basis_universal: Unbundle jpgd to fix symbol conflict, use our newer copy with SSE2 support ([GH-88508](https://github.com/godotengine/godot/pull/88508)). +- FastNoiseLite: Sync with 1.1.0, clean up SCsub ([GH-88526](https://github.com/godotengine/godot/pull/88526)). +- tinyexr: Update to 1.0.8 ([GH-88702](https://github.com/godotengine/godot/pull/88702)). +- embree: Update to 4.3.1 ([GH-88783](https://github.com/godotengine/godot/pull/88783)). +- clipper2: Update to 1.3.0 ([GH-89025](https://github.com/godotengine/godot/pull/89025)). +- harfbuzz: Update to 8.3.0 ([GH-89304](https://github.com/godotengine/godot/pull/89304)). +- libpng: Update to 1.6.43 ([GH-89314](https://github.com/godotengine/godot/pull/89314)). +- thorvg: Update to 0.12.7 ([GH-89337](https://github.com/godotengine/godot/pull/89337)). +- pcre2: Update to 10.43 ([GH-89371](https://github.com/godotengine/godot/pull/89371)). +- Update ICU and msdfgen ([GH-89414](https://github.com/godotengine/godot/pull/89414)). +- pcre2: Remove unused sjlit files after last update ([GH-89495](https://github.com/godotengine/godot/pull/89495)). +- iOS: Disable PCRE2 JIT ([GH-89507](https://github.com/godotengine/godot/pull/89507)). +- meshoptimizer: State used version explicitly ([GH-89544](https://github.com/godotengine/godot/pull/89544)). +- thorvg: Update to 0.12.9 ([GH-89591](https://github.com/godotengine/godot/pull/89591)). +- mbedtls: Update to upstream version 2.28.8 ([GH-90209](https://github.com/godotengine/godot/pull/90209)). +- certs: Sync with Mozilla bundle as of Mar 11, 2024 ([GH-90211](https://github.com/godotengine/godot/pull/90211)). +- thorvg: Update to 0.12.10 ([GH-90243](https://github.com/godotengine/godot/pull/90243)). +- enet: Sync with upstream commit c44b7d0 ([GH-90244](https://github.com/godotengine/godot/pull/90244)). +- harfbuzz: Update to 8.4.0 ([GH-90247](https://github.com/godotengine/godot/pull/90247)). +- libktx: Update to 4.3.2 ([GH-90248](https://github.com/godotengine/godot/pull/90248)). +- miniupnpc: Update to 2.2.7 ([GH-90250](https://github.com/godotengine/godot/pull/90250)). +- squish: Clean up patches, add LICENSE.txt ([GH-90251](https://github.com/godotengine/godot/pull/90251)). +- zstd: Update to upstream version 1.5.6 ([GH-90253](https://github.com/godotengine/godot/pull/90253)). +- Sync controller mappings DB with SDL2 community repo ([GH-90406](https://github.com/godotengine/godot/pull/90406)). +- Sync controller mappings DB with SDL 2 community repo ([GH-91108](https://github.com/godotengine/godot/pull/91108)). +- FBX: Update ufbx to v0.14.0 ([GH-91528](https://github.com/godotengine/godot/pull/91528)). +- thorvg: Update to 0.13.3, add webp loader ([GH-91788](https://github.com/godotengine/godot/pull/91788)). +- Update ICU to 75.1 ([GH-91937](https://github.com/godotengine/godot/pull/91937)). +- astcenc: Update to 4.8.0 ([GH-91941](https://github.com/godotengine/godot/pull/91941)). +- enet: Update to 1.3.18 ([GH-91942](https://github.com/godotengine/godot/pull/91942)). +- libwebp: Update to 1.4.0 ([GH-91943](https://github.com/godotengine/godot/pull/91943)). +- Update HarfBuzz to 8.5.0 ([GH-91959](https://github.com/godotengine/godot/pull/91959)). +- thorvg: Update to 0.13.5 + hotfix for GCC x86_32 build ([GH-92567](https://github.com/godotengine/godot/pull/92567)). +- qoa: Apply upstream patches ([GH-92905](https://github.com/godotengine/godot/pull/92905)). +- ThorVG: Update to 0.13.7 ([GH-92915](https://github.com/godotengine/godot/pull/92915)). +- thorvg: Update to 0.13.8 ([GH-93378](https://github.com/godotengine/godot/pull/93378)). +- ThorVG: Update to 0.14.0 ([GH-93655](https://github.com/godotengine/godot/pull/93655)). +- thorvg: Update to 0.14.1 ([GH-94103](https://github.com/godotengine/godot/pull/94103)). +- embree: Fix include order causing unwanted dllexport symbols ([GH-94256](https://github.com/godotengine/godot/pull/94256)). +- ThorVG: Update to 0.14.2 ([GH-94258](https://github.com/godotengine/godot/pull/94258)). +- Windows: Add `libSynchronization` to link flags ([GH-94466](https://github.com/godotengine/godot/pull/94466)). +- Remove unused Bitstream Vera license ([GH-94823](https://github.com/godotengine/godot/pull/94823)). +- Windows: Remove libSynchronization ([GH-94836](https://github.com/godotengine/godot/pull/94836)). #### XR -- Expose OpenXR raw hand tracking data ([GH-78032](https://github.com/godotengine/godot/pull/78032)). -- Fix issue with accessing hand tracking without timing info ([GH-78817](https://github.com/godotengine/godot/pull/78817)). -- Change to new PICO interaction profiles ([GH-79570](https://github.com/godotengine/godot/pull/79570)). -- Compile OpenXR into MacOS build ([GH-79614](https://github.com/godotengine/godot/pull/79614)). -- Optimized the XRTracker by reusing XRPose objects to minimize garbage collection overhead in C# ([GH-80198](https://github.com/godotengine/godot/pull/80198)). -- Fix casts of XR handles in OpenXRExtensionWrapperExtension ([GH-80656](https://github.com/godotengine/godot/pull/80656)). -- Remove error print from `XRServer.find_interface` ([GH-80730](https://github.com/godotengine/godot/pull/80730)). -- Ensure OpenXR classes are declared properly ([GH-81037](https://github.com/godotengine/godot/pull/81037)). -- Add XR tracking state-change signals ([GH-81239](https://github.com/godotengine/godot/pull/81239)). -- OpenXR: Fix missing add profile for Huawei ([GH-81534](https://github.com/godotengine/godot/pull/81534)). -- OpenXR: Fix error spam if session hasn't started yet ([GH-81536](https://github.com/godotengine/godot/pull/81536)). -- Fix issue with OpenXR environment blend mode not being applied properly ([GH-81561](https://github.com/godotengine/godot/pull/81561)). -- Add support for the OpenXR Eye gaze interaction extension ([GH-82614](https://github.com/godotengine/godot/pull/82614)). -- OpenXR - add access to hand joint validity flags ([GH-82715](https://github.com/godotengine/godot/pull/82715)). -- OpenXR: Fix small hand tracking issues ([GH-82722](https://github.com/godotengine/godot/pull/82722)). -- Skip 2D rendering if stereo enabled and fix couple of MSAA issues ([GH-83649](https://github.com/godotengine/godot/pull/83649)). -- Revert to `proxy_to_pthread=no` as default ([GH-83837](https://github.com/godotengine/godot/pull/83837)). -- Fix OpenXR sample count ([GH-84099](https://github.com/godotengine/godot/pull/84099)). +- Remove unused grip touch action from default OpenXR action map ([GH-85048](https://github.com/godotengine/godot/pull/85048)). +- OpenXR: Add runtime selection dropdown ([GH-85117](https://github.com/godotengine/godot/pull/85117)). +- OpenXR: Add support for retrieving play area ([GH-85163](https://github.com/godotengine/godot/pull/85163)). +- OpenXR: Add support for hand tracking source extension ([GH-85204](https://github.com/godotengine/godot/pull/85204)). +- Cleanup of OpenXR module SCons config ([GH-86537](https://github.com/godotengine/godot/pull/86537)). +- Add ability to drive full-body avatars using OpenXRHand ([GH-86906](https://github.com/godotengine/godot/pull/86906)). +- OpenXR: Add Meta touch plus interaction profile ([GH-86982](https://github.com/godotengine/godot/pull/86982)). +- Add support for OpenXR local floor extension ([GH-87235](https://github.com/godotengine/godot/pull/87235)). +- Add bone update option to OpenXRHand to allow preserving original hand scale ([GH-87240](https://github.com/godotengine/godot/pull/87240)). +- OpenXR: Make it possible to implement vendor extensions to hand tracking from GDExtension ([GH-87546](https://github.com/godotengine/godot/pull/87546)). +- OpenXR: Allow moving vendor passthrough extensions to GDExtension ([GH-87630](https://github.com/godotengine/godot/pull/87630)). +- OpenXR: Allow changing play area mode during active session ([GH-87745](https://github.com/godotengine/godot/pull/87745)). +- Enable getting suggested tracker names from OpenXR extensions ([GH-88311](https://github.com/godotengine/godot/pull/88311)). +- Add XR Face Tracking support ([GH-88312](https://github.com/godotengine/godot/pull/88312)). +- WebXR: Add support for hand tracking ([GH-88411](https://github.com/godotengine/godot/pull/88411)). +- OpenXR: Update to version 1.0.34 ([GH-88574](https://github.com/godotengine/godot/pull/88574)). +- Provide generic interface for XR hand tracking ([GH-88639](https://github.com/godotengine/godot/pull/88639)). +- Fix crash when using OpenXR extension wrappers from GDExtension ([GH-88689](https://github.com/godotengine/godot/pull/88689)). +- Fix building on MinGW ([GH-88724](https://github.com/godotengine/godot/pull/88724)). +- Fix lint errors in WebXR module ([GH-88740](https://github.com/godotengine/godot/pull/88740)). +- OpenXR: Register eye gaze even when disabled ([GH-88754](https://github.com/godotengine/godot/pull/88754)). +- Add body tracking support ([GH-88798](https://github.com/godotengine/godot/pull/88798)). +- Fix XR Body crouching and climbing ([GH-89103](https://github.com/godotengine/godot/pull/89103)). +- Fix XRHandModifier3D scaling ([GH-89130](https://github.com/godotengine/godot/pull/89130)). +- Expose `profile_changed` signal to XRController3D ([GH-89219](https://github.com/godotengine/godot/pull/89219)). +- Consistently use `USE_MULTIVIEW` as the define in shaders ([GH-89376](https://github.com/godotengine/godot/pull/89376)). +- Improve warning when XR shaders are not enabled ([GH-89397](https://github.com/godotengine/godot/pull/89397)). +- Disable XR server when compiling without 3D ([GH-89411](https://github.com/godotengine/godot/pull/89411)). +- Fix XRBodyModifier3D hip driving for avatars no Root bone ([GH-89727](https://github.com/godotengine/godot/pull/89727)). +- Tweak OpenXR alert to mention WMR only on Windows ([GH-89968](https://github.com/godotengine/godot/pull/89968)). +- Allow OpenXR extensions to add properties to the OpenXRCompositionLayer node ([GH-90237](https://github.com/godotengine/godot/pull/90237)). +- Add `intersects_ray()` method to `OpenXRCompositionLayer` ([GH-90286](https://github.com/godotengine/godot/pull/90286)). +- OpenXR: Add refresh rate signal support ([GH-90374](https://github.com/godotengine/godot/pull/90374)). +- Rework XR Trackers to have a common ancestor ([GH-90645](https://github.com/godotengine/godot/pull/90645)). +- Revert `OpenXRHand` to its pre-`SkeletonModifier3D` state ([GH-90759](https://github.com/godotengine/godot/pull/90759)). +- Mark `OpenXRCompositionLayer` and its children as experimental ([GH-90761](https://github.com/godotengine/godot/pull/90761)). +- Remove the Hand enum from XRHandTracker ([GH-91130](https://github.com/godotengine/godot/pull/91130)). +- Add a new property named `offset_rect` to `MobileVRInterface` ([GH-91140](https://github.com/godotengine/godot/pull/91140)). +- MobileVR: Orientation is progressive and needs to be initialized ([GH-91305](https://github.com/godotengine/godot/pull/91305)). +- Store previous relative transforms in `XRHandModifier3D` ([GH-91335](https://github.com/godotengine/godot/pull/91335)). +- OpenXR: Allow composition layers to enable hole punching ([GH-91485](https://github.com/godotengine/godot/pull/91485)). +- OpenXR: Fix composition layers not having correct play space ([GH-91686](https://github.com/godotengine/godot/pull/91686)). +- Fix `layer_viewport` getting cleared on `OpenXRCompositionLayer` in editor ([GH-91775](https://github.com/godotengine/godot/pull/91775)). +- Fix sample count on OpenXR composition layers ([GH-91952](https://github.com/godotengine/godot/pull/91952)). +- OpenXR: Fix updating swapchain for foveation ([GH-92137](https://github.com/godotengine/godot/pull/92137)). +- Allow `OpenXRCompositionLayer` property `layer_viewport` to always be assigned `nullptr` ([GH-92200](https://github.com/godotengine/godot/pull/92200)). +- Apply reference frame transform to `OpenXRCompositionLayer` nodes ([GH-92339](https://github.com/godotengine/godot/pull/92339)). +- Set `XRHandTracker` property `has_tracking_data` to true only when palm joint is tracked ([GH-92801](https://github.com/godotengine/godot/pull/92801)). +- OpenXR: Add HTC/MSFT hand interaction profiles ([GH-93075](https://github.com/godotengine/godot/pull/93075)). +- Check for bad input in `make_vrs_texture` ([GH-93536](https://github.com/godotengine/godot/pull/93536)). +- WebXR: Fix closure compiler mangling `XRSession.enabledFeatures` ([GH-93593](https://github.com/godotengine/godot/pull/93593)). +- Fix WebXR palm joint calculation to include rotation ([GH-93614](https://github.com/godotengine/godot/pull/93614)). +- Improve WebXR API docs related to hand tracking support ([GH-93633](https://github.com/godotengine/godot/pull/93633)). +- Fix support for environment blend modes on `WebXRInterface` ([GH-93646](https://github.com/godotengine/godot/pull/93646)). +- OpenXR: Fix `LOCAL_FLOOR` emulation on HTC Vive XR Elite ([GH-93678](https://github.com/godotengine/godot/pull/93678)). +- OpenXR: Couple of small fixes on the action map ([GH-94158](https://github.com/godotengine/godot/pull/94158)). +- Fix creating default action map ([GH-94457](https://github.com/godotengine/godot/pull/94457)). +- OpenXR: Fix enabling passthrough via environment blend mode in project settings ([GH-94550](https://github.com/godotengine/godot/pull/94550)). ## Past releases +- [4.2](https://github.com/godotengine/godot/blob/4.2-stable/CHANGELOG.md) - [4.1](https://github.com/godotengine/godot/blob/4.1-stable/CHANGELOG.md) - [4.0](https://github.com/godotengine/godot/blob/4.0-stable/CHANGELOG.md) - [3.5](https://github.com/godotengine/godot/blob/3.5-stable/CHANGELOG.md) @@ -18,7 +18,6 @@ generous deed immortalized in the next stable release of Godot Engine. ## Platinum sponsors Google Play <https://play.google.com/> - Heroic Labs <https://heroiclabs.com/> Ramatak <https://ramatak.com/> V-Sekai <https://github.com/V-Sekai> W4 Games <https://w4games.com/> @@ -34,67 +33,61 @@ generous deed immortalized in the next stable release of Godot Engine. Broken Rules <https://brokenrul.es/> Chasing Carrots <https://www.chasing-carrots.com/> + Copia Wealth Studios <https://copiawealthstudios.com/> Indoor Astronaut <https://indoorastronaut.ch/> + Load Complete <https://loadcomplete.com/> Null <https://null.com/> Orbital Knight <https://www.orbitalknight.com/> Playful Studios <https://playfulstudios.com/> ## Diamond members + Bippinbits <http://domekeepergame.com/> Sealow - Sylv <https://rankith.itch.io/unnamed-space-idle-prototype/> - And 4 anonymous donors + And 5 anonymous donors ## Titanium members Adriaan de Jongh <https://adriaan.games/> + Anitya Space <https://www.anitya.space/> Basically Games FDG Entertainment <https://www.fdg-entertainment.com/> Game Dev Artisan <https://gamedevartisan.com/> Garry Newman Isaiah Smith <https://www.isaiahsmith.dev/> - Kenney <https://kenney.nl/> Libretrend <https://libretrend.com/> Life Art Studios <https://lifeartstudios.net/> Lucid Silence Games Matthew Campbell - Maxim Karsten PolyMars <https://polymars.dev/> RPG in a Box <https://www.rpginabox.com/> Razenpok <https://www.youtube.com/watch?v=-QxI-RP6-HM> Smirk Software <https://smirk.gg/> - Sterling Long <https://www.sterlinglong.me/> - Sunshower <https://github.com/Phanterm> - TrampolineTales <https://trampolinetales.com/> 粟二华 (Su Erhua) - And 4 anonymous donors + And 6 anonymous donors ## Platinum members Andy Touch BlockImperiumGames (BIG) - Christian Baune Christoph Woinke Christopher Shifflett + Cody Bentley Darrin Massena - Druvsaft Edward Flick - getIntoGameDev + GetIntoGameDev HP van Braam iCommitGames Jonah Stich - Justin McGettigan - Justo Delgado Baudí katnamag Marek Belski Matthew Ekenstedt Memories in 8Bit Mike King - Nassor Paulino da Silva Neal Gompa (Conan Kudo) + Radivarig Ronnie Cheng Ryan Heath - Samantha Scott Pezza ShikadiGum Silver Creek Entertainment @@ -102,35 +95,36 @@ generous deed immortalized in the next stable release of Godot Engine. Stephan Kessler Stephan Lanfermann TigerJ - Tim Yuen Violin Iliev Vladimír Chvátil - And 15 anonymous donors + And 16 anonymous donors ## Gold members - @reilaos + 80px + afreytes alMoo Games Alva Majo - Amadan Interactive (Cillian Clifford) Antti Vesanen - Artur Ilkaev Asher Glick - Ben Burbank - Ben Rog-Wilhelm + Axthelm + Bellbird Studio Benito Benjamin Sarsgard + Ben Rog-Wilhelm Bernd Barsuhn - Blake Farnsworth + BetaTester704 Brian Levinsen Brut + Bryce Dixon + c64cosmin Carlo del Mundo - Chickensoft + Cindy Trieu ClarkThyLord - Cosmin Munteanu - cowoder - Coy Humphrey + Codex404 + cora Daniel Eichler + Daniel Krafft David Chen Zhen David Coles David Hubber @@ -138,85 +132,112 @@ generous deed immortalized in the next stable release of Godot Engine. Deakcor Delton Ding dfseifert - Don't You Know Who I Am? Inc. + dgehrig + dhanielk + Distorted Realities Dono + Don't You Know Who I Am? Inc. Dustuu Edelweiss - ElektroFox - endaye Ends - Eren Öğrül + Eren Ogrul + Eric Brand Eric Phy Faisal Al-Kubaisi (QatariGameDev) FeralBytes - Garrus Vakarian + Festzeltgaming.de + Gaudipern GlassBrick Grau Guangzhou Lingchan - Here's my 20 cents + Hayden Oliver hiulit Illyan + Ivan Tabashki Jacob (HACKhalo2 Studios) Jam Jason Cawood Javier Roman + Jeff Hungerford + Jeronimo Schreyer Joel Martinez + Johannes Wuensch John Gabriel - Jon Woodward + Jonas Yamazaki José Canepa + Joshua Stelly Justin Sasso + Kalydi Balázs KAR Games - Karasu Studio + Kiri "ExpiredPopsicle" Artemis + KOGA Mitsuhiro (@shiena) korinVR Kristian Kriehl + Lars Thießen + Lisandro Lorea (Red Mage Games) Logan Apple Luca Junge - Luca Vazzano LyaaaaaGames - MHDante - Malcolm Nixon + m1n1ster Manuel Requena Mara Huldra Martin Šenkeřík - Megabit Interactive Michael Gooch Modus Ponens + Moshe Harris + Moth + Mr. Byte + Nassor Paulino da Silva nezticle Niklas Wahrman + Niwl Games NotNet - Obelisk Island Studios + Oathbringer + Officine Pixel ohanaya3 + Okatima AB Oleksii Nosov - Pav Soor - RAWRLAB Games - RadenTheFolf + Osirisa + Patrick Traynor + Petr Malac + pirey Rafa Laguna + @reilaos Request re:thinc - Robin Ward - Saltlight Studio + Richard Ivánek + Rudi P Samuel Judd ScoreSpace + Shiny Shinken Silverclad Studios Sofox Space Kraken Studios + spacesloth Spoony Panda TANAKA Yu - TaraSophieDev + TaraSophieDev (pls fix #43093) + Thad Guidry ThatGamer - ThePolyglotProgrammer + The Polyglot Programmer + TheRiverNyx + Thomas Lobig Tim Nedvyga Tom Langwaldt Trevor Slocum tukon + Tyler C Vagastella Vincent Foulon + Vojtech Lacina + Watchinofoye Weasel Games + Wilson Birney + Wolfram WuotanStudios.com - Yury K. - Zee Weasel Zhu Li zikes + 嗯大爷 Alex Khayrullin Algebrute @@ -226,30 +247,24 @@ generous deed immortalized in the next stable release of Godot Engine. Ari Arisaka Mayuki Arthur S. Muszynski - Bread Cameron Connolly Charlie Whitfield Craig Ostrin Craig Swain CzechBlueBear - Daniel Eichler Dennis Belfrage Emily A. Bellows - Eric Brand Felix Winterhalter Fransiska Harry Tumber - Harvey Fong James Couzens Jared White Jesús Chicharro Joel Fivat Johnathan Kupferer Josef Stumpfegger - Josh Nygaard Joshua Lesperance Kelteseth - Khora kickmaniac Liam Smyth LoparPanda @@ -281,24 +296,16 @@ generous deed immortalized in the next stable release of Godot Engine. toto bibi Valryia VoidPointer - wpbirney420 Yifan Lai - zkip lan Aaron Mayfield Adam Carr Adam Smeltzer Adisibio - Adrien de Pierres - Agustinus Arya Aidan Marwick Aidan O'Flannagain - aiekick - Aiguo Wang AJWolbers - Aki Mimoto Alan Beauchamp - Alejandro Saucedo Alexander Erlemann Alex Clavelle alex raeside @@ -308,25 +315,20 @@ generous deed immortalized in the next stable release of Godot Engine. Ano Nim Arch Toasty Arda Erol + A Really Tall Horse Arturo Rosales Ash K Aubrey Falconer Austin Miller AzulCrescent - Balázs Batári Beau Seymour Benedikt - Ben Visness - Bill Thibault Bread Brian Ford Caleb Makela Cameron Meyer Carl van der Geest - Cerno_b - ChainZ Checkpoint Charlie - chendrak Chris Cavalluzzi Chris Jagusch Chris Lee @@ -334,16 +336,13 @@ generous deed immortalized in the next stable release of Godot Engine. Christian Ringshofer Christoph Czurda Christophe Gagnier - Ciyvius Cody Parker Conall O Corchari Corey W - cynwav Dakota Watkins Daniele Tolomelli Daniel Ramos - Daren Scot Wilson Dave Jansen Davesnothere David Baker @@ -354,10 +353,8 @@ generous deed immortalized in the next stable release of Godot Engine. Devin R Dimitri Roche Donovan Hutcheon - dragoon Ducky Duodecimal - Edward Swartz Egon Elbre Elijah Anderson Eric Persson @@ -370,13 +367,9 @@ generous deed immortalized in the next stable release of Godot Engine. Frying☆Pan Game Endeavor gamerminstrel - Garrett Steffen Gary Thomas gebba - Green Fox Greyson Richey - Grominet - Guldoman Guo Hongci Haplo Helge Maus @@ -392,9 +385,6 @@ generous deed immortalized in the next stable release of Godot Engine. Jamie Massey JARKKO PARVIAINEN Jason Evans - Jeff Hungerford - Jeffrey Berube - Jennifer Graves Joakim Askenbäck Jonas Jonas Arndt @@ -403,17 +393,11 @@ generous deed immortalized in the next stable release of Godot Engine. Jon Sully Joseph Catrambone Josh Taylor - Joshua Heidrich Juanfran - Juan Maggi Julian le Roux Justin Spedding - Kalydi Balázs - Keegan Scott Keith Bradner - Kent Jofur kindzadza - Kodera Software KsyTek Games Kyle Burnett Kyle Haltermann @@ -438,7 +422,6 @@ generous deed immortalized in the next stable release of Godot Engine. Martin Liška Martin Trbola Matěj Drábek - Mateo Navarrete Mathieu Matt Edwards Maverick @@ -447,14 +430,9 @@ generous deed immortalized in the next stable release of Godot Engine. Melissa Mears Metal Demon 2000 Michael Morrison - Michal Skwarek - Mikael Nordenberg - Mikayla Mike Copley Molly Jameson - MoltenGears Moritz Weissenberger - MrAZIE Mrjemandem naonya3 Nathaniel @@ -464,12 +442,9 @@ generous deed immortalized in the next stable release of Godot Engine. Nerdforge Nerdyninja Nick Eldrenkamp - Nicolas Rosset Nik Rudenko Noel Billig - Oscar Domingo ozrk - Parth Patel Patrick Horn Patrickm Patrick Nafarrete @@ -477,24 +452,20 @@ generous deed immortalized in the next stable release of Godot Engine. Paul Gieske Paul Mozet Pete - Philip Ludington (MrPhil) Phoenix Jauregui Pierre Caye Pixel Archipel Point08 - Portponky PsycHead Quincy Quincy Quinn Morrison Raghava Kovvali - RagingRoosevelt Ragnar Pettersson Rammeow Rebecca H Richard Hayes Riley RobotCritter - Roka Roland Rząsa Russ Ryan Groom @@ -502,22 +473,16 @@ generous deed immortalized in the next stable release of Godot Engine. Satnam Singh Sebastian Michailidis SeongWan Kim - Sessamekesh Shane Lillie Shane Spoor Shaun Kohanowski - simdee Simon Jonas Larsen Simon Schoenenberger Sina Yeganeh - sirn Skalli slavfox - smbe19 smo1704 SpicyCactuar - SquidgySapphic - Squirrel Stephen Rice Stephen Schlie Sven Walter @@ -527,20 +492,14 @@ generous deed immortalized in the next stable release of Godot Engine. TheVoiceInMyHead Thibaut DECROMBECQUE thomas - Thomas Bechtold Thomas Pickett Tim Drumheller Tim Klein - Timothy B. MacDonald - Tim Raveling - Tim Riley Tom Webster Trent Skinner - Tyler Stafos Tyler Stepke Uther Vaughan Ling - vgmoose vlnx Wapiti . Wiley Thompson @@ -549,7 +508,7 @@ generous deed immortalized in the next stable release of Godot Engine. ケルベロス 貴宏 小松 - And 201 anonymous donors + And 181 anonymous donors ## Silver and bronze donors diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp index 37a2608c10..f231e4010f 100644 --- a/core/config/project_settings.cpp +++ b/core/config/project_settings.cpp @@ -1489,15 +1489,6 @@ ProjectSettings::ProjectSettings() { GLOBAL_DEF(PropertyInfo(Variant::INT, "audio/general/ios/session_category", PROPERTY_HINT_ENUM, "Ambient,Multi Route,Play and Record,Playback,Record,Solo Ambient"), 0); GLOBAL_DEF("audio/general/ios/mix_with_others", false); - PackedStringArray extensions; - extensions.push_back("gd"); - if (ClassDB::class_exists("CSharpScript")) { - extensions.push_back("cs"); - } - extensions.push_back("gdshader"); - - GLOBAL_DEF(PropertyInfo(Variant::PACKED_STRING_ARRAY, "editor/script/search_in_file_extensions"), extensions); - _add_builtin_input_map(); // Keep the enum values in sync with the `DisplayServer::ScreenOrientation` enum. diff --git a/core/core_bind.cpp b/core/core_bind.cpp index a1b7b81111..a15085bcde 100644 --- a/core/core_bind.cpp +++ b/core/core_bind.cpp @@ -1440,6 +1440,14 @@ TypedArray<Dictionary> ClassDB::class_get_property_list(const StringName &p_clas return ret; } +StringName ClassDB::class_get_property_getter(const StringName &p_class, const StringName &p_property) { + return ::ClassDB::get_property_getter(p_class, p_property); +} + +StringName ClassDB::class_get_property_setter(const StringName &p_class, const StringName &p_property) { + return ::ClassDB::get_property_setter(p_class, p_property); +} + Variant ClassDB::class_get_property(Object *p_object, const StringName &p_property) const { Variant ret; ::ClassDB::get_property(p_object, p_property, ret); @@ -1601,6 +1609,8 @@ void ClassDB::_bind_methods() { ::ClassDB::bind_method(D_METHOD("class_get_signal_list", "class", "no_inheritance"), &ClassDB::class_get_signal_list, DEFVAL(false)); ::ClassDB::bind_method(D_METHOD("class_get_property_list", "class", "no_inheritance"), &ClassDB::class_get_property_list, DEFVAL(false)); + ::ClassDB::bind_method(D_METHOD("class_get_property_getter", "class", "property"), &ClassDB::class_get_property_getter); + ::ClassDB::bind_method(D_METHOD("class_get_property_setter", "class", "property"), &ClassDB::class_get_property_setter); ::ClassDB::bind_method(D_METHOD("class_get_property", "object", "property"), &ClassDB::class_get_property); ::ClassDB::bind_method(D_METHOD("class_set_property", "object", "property", "value"), &ClassDB::class_set_property); diff --git a/core/core_bind.h b/core/core_bind.h index b142a2fbbd..69a359e4ed 100644 --- a/core/core_bind.h +++ b/core/core_bind.h @@ -447,6 +447,8 @@ public: TypedArray<Dictionary> class_get_signal_list(const StringName &p_class, bool p_no_inheritance = false) const; TypedArray<Dictionary> class_get_property_list(const StringName &p_class, bool p_no_inheritance = false) const; + StringName class_get_property_getter(const StringName &p_class, const StringName &p_property); + StringName class_get_property_setter(const StringName &p_class, const StringName &p_property); Variant class_get_property(Object *p_object, const StringName &p_property) const; Error class_set_property(Object *p_object, const StringName &p_property, const Variant &p_value) const; diff --git a/core/error/error_macros.cpp b/core/error/error_macros.cpp index 8376c0aaf8..813ee7684f 100644 --- a/core/error/error_macros.cpp +++ b/core/error/error_macros.cpp @@ -34,6 +34,12 @@ #include "core/os/os.h" #include "core/string/ustring.h" +// Optional physics interpolation warnings try to include the path to the relevant node. +#if defined(DEBUG_ENABLED) && defined(TOOLS_ENABLED) +#include "core/config/project_settings.h" +#include "scene/main/node.h" +#endif + static ErrorHandlerList *error_handler_list = nullptr; void add_error_handler(ErrorHandlerList *p_handler) { @@ -128,3 +134,48 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li void _err_flush_stdout() { fflush(stdout); } + +// Prevent error spam by limiting the warnings to a certain frequency. +void _physics_interpolation_warning(const char *p_function, const char *p_file, int p_line, ObjectID p_id, const char *p_warn_string) { +#if defined(DEBUG_ENABLED) && defined(TOOLS_ENABLED) + const uint32_t warn_max = 2048; + const uint32_t warn_timeout_seconds = 15; + + static uint32_t warn_count = warn_max; + static uint32_t warn_timeout = warn_timeout_seconds; + + uint32_t time_now = UINT32_MAX; + + if (warn_count) { + warn_count--; + } + + if (!warn_count) { + time_now = OS::get_singleton()->get_ticks_msec() / 1000; + } + + if ((warn_count == 0) && (time_now >= warn_timeout)) { + warn_count = warn_max; + warn_timeout = time_now + warn_timeout_seconds; + + if (GLOBAL_GET("debug/settings/physics_interpolation/enable_warnings")) { + // UINT64_MAX means unused. + if (p_id.operator uint64_t() == UINT64_MAX) { + _err_print_error(p_function, p_file, p_line, "[Physics interpolation] " + String(p_warn_string) + " (possibly benign).", false, ERR_HANDLER_WARNING); + } else { + String node_name; + if (p_id.is_valid()) { + Node *node = Object::cast_to<Node>(ObjectDB::get_instance(p_id)); + if (node && node->is_inside_tree()) { + node_name = "\"" + String(node->get_path()) + "\""; + } else { + node_name = "\"unknown\""; + } + } + + _err_print_error(p_function, p_file, p_line, "[Physics interpolation] " + String(p_warn_string) + ": " + node_name + " (possibly benign).", false, ERR_HANDLER_WARNING); + } + } + } +#endif +} diff --git a/core/error/error_macros.h b/core/error/error_macros.h index ab7dbcbd44..d31adb72be 100644 --- a/core/error/error_macros.h +++ b/core/error/error_macros.h @@ -31,6 +31,7 @@ #ifndef ERROR_MACROS_H #define ERROR_MACROS_H +#include "core/object/object_id.h" #include "core/typedefs.h" #include <atomic> // We'd normally use safe_refcount.h, but that would cause circular includes. @@ -71,6 +72,8 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const String &p_message, bool p_editor_notify = false, bool fatal = false); void _err_flush_stdout(); +void _physics_interpolation_warning(const char *p_function, const char *p_file, int p_line, ObjectID p_id, const char *p_warn_string); + #ifdef __GNUC__ //#define FUNCTION_STR __PRETTY_FUNCTION__ - too annoying #define FUNCTION_STR __FUNCTION__ @@ -832,4 +835,14 @@ void _err_flush_stdout(); #define DEV_CHECK_ONCE(m_cond) #endif +/** + * Physics Interpolation warnings. + * These are spam protection warnings. + */ +#define PHYSICS_INTERPOLATION_NODE_WARNING(m_object_id, m_string) \ + _physics_interpolation_warning(FUNCTION_STR, __FILE__, __LINE__, m_object_id, m_string) + +#define PHYSICS_INTERPOLATION_WARNING(m_string) \ + _physics_interpolation_warning(FUNCTION_STR, __FILE__, __LINE__, UINT64_MAX, m_string) + #endif // ERROR_MACROS_H diff --git a/core/extension/gdextension.cpp b/core/extension/gdextension.cpp index 8e2366fc95..cb6832ea39 100644 --- a/core/extension/gdextension.cpp +++ b/core/extension/gdextension.cpp @@ -781,23 +781,14 @@ Error GDExtension::open_library(const String &p_path, const String &p_entry_symb } } - String actual_lib_path; OS::GDExtensionData data = { true, // also_set_library_path - &actual_lib_path, // r_resolved_path + &library_path, // r_resolved_path Engine::get_singleton()->is_editor_hint(), // generate_temp_files &abs_dependencies_paths, // library_dependencies }; Error err = OS::get_singleton()->open_dynamic_library(abs_path, library, &data); - if (actual_lib_path.get_file() != abs_path.get_file()) { - // If temporary files are generated, let's change the library path to point at the original, - // because that's what we want to check to see if it's changed. - library_path = actual_lib_path.get_base_dir().path_join(p_path.get_file()); - } else { - library_path = actual_lib_path; - } - ERR_FAIL_COND_V_MSG(err == ERR_FILE_NOT_FOUND, err, "GDExtension dynamic library not found: " + abs_path); ERR_FAIL_COND_V_MSG(err != OK, err, "Can't open GDExtension dynamic library: " + abs_path); diff --git a/core/input/godotcontrollerdb.txt b/core/input/godotcontrollerdb.txt index f5158bfabb..8e8ec4c718 100644 --- a/core/input/godotcontrollerdb.txt +++ b/core/input/godotcontrollerdb.txt @@ -8,7 +8,7 @@ __XINPUT_DEVICE__,XInput Gamepad,a:b12,b:b13,x:b14,y:b15,start:b4,guide:b10,back Default Android Gamepad,Default Controller,leftx:a0,lefty:a1,dpdown:h0.4,rightstick:b8,rightshoulder:b10,rightx:a2,start:b6,righty:a3,dpleft:h0.8,lefttrigger:a4,x:b2,dpup:h0.1,back:b4,leftstick:b7,leftshoulder:b9,y:b3,a:b0,dpright:h0.2,righttrigger:a5,b:b1,platform:Android, # Web -standard,Standard Gamepad Mapping,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b8,start:b9,leftstick:b10,rightstick:b11,dpup:b12,dpdown:b13,dpleft:b14,dpright:b15,guide:b16,leftstick:b10,rightstick:b11,platform:Web, +standard,Standard Gamepad Mapping,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:+a4,righttrigger:+a5,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b8,start:b9,leftstick:b10,rightstick:b11,dpup:b12,dpdown:b13,dpleft:b14,dpright:b15,guide:b16,leftstick:b10,rightstick:b11,platform:Web, Linux24c6581a,PowerA Xbox One Cabled,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:-a7,dpleft:-a6,dpdown:+a7,dpright:+a6,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Web, Linux0e6f0301,Logic 3 Controller (xbox compatible),a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:-a7,dpleft:-a6,dpdown:+a7,dpright:+a6,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Web, Linux045e028e,Microsoft X-Box 360 pad,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:-a7,dpleft:-a6,dpdown:+a7,dpright:+a6,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Web, diff --git a/core/io/image.cpp b/core/io/image.cpp index d0598e4dc6..b35d405662 100644 --- a/core/io/image.cpp +++ b/core/io/image.cpp @@ -501,6 +501,38 @@ static void _convert(int p_width, int p_height, const uint8_t *p_src, uint8_t *p } } +template <typename T, uint32_t read_channels, uint32_t write_channels, T def_zero, T def_one> +static void _convert_fast(int p_width, int p_height, const T *p_src, T *p_dst) { + uint32_t dst_count = 0; + uint32_t src_count = 0; + + const int resolution = p_width * p_height; + + for (int i = 0; i < resolution; i++) { + memcpy(p_dst + dst_count, p_src + src_count, MIN(read_channels, write_channels) * sizeof(T)); + + if constexpr (write_channels > read_channels) { + const T def_value[4] = { def_zero, def_zero, def_zero, def_one }; + memcpy(p_dst + dst_count + read_channels, &def_value[read_channels], (write_channels - read_channels) * sizeof(T)); + } + + dst_count += write_channels; + src_count += read_channels; + } +} + +static bool _are_formats_compatible(Image::Format p_format0, Image::Format p_format1) { + if (p_format0 <= Image::FORMAT_RGBA8 && p_format1 <= Image::FORMAT_RGBA8) { + return true; + } else if (p_format0 <= Image::FORMAT_RGBAH && p_format0 >= Image::FORMAT_RH && p_format1 <= Image::FORMAT_RGBAH && p_format1 >= Image::FORMAT_RH) { + return true; + } else if (p_format0 <= Image::FORMAT_RGBAF && p_format0 >= Image::FORMAT_RF && p_format1 <= Image::FORMAT_RGBAF && p_format1 >= Image::FORMAT_RF) { + return true; + } + + return false; +} + void Image::convert(Format p_new_format) { ERR_FAIL_INDEX_MSG(p_new_format, FORMAT_MAX, "The Image format specified (" + itos(p_new_format) + ") is out of range. See Image's Format enum."); if (data.size() == 0) { @@ -517,7 +549,7 @@ void Image::convert(Format p_new_format) { if (Image::is_format_compressed(format) || Image::is_format_compressed(p_new_format)) { ERR_FAIL_MSG("Cannot convert to <-> from compressed formats. Use compress() and decompress() instead."); - } else if (format > FORMAT_RGBA8 || p_new_format > FORMAT_RGBA8) { + } else if (!_are_formats_compatible(format, p_new_format)) { //use put/set pixel which is slower but works with non byte formats Image new_img(width, height, mipmaps, p_new_format); @@ -648,6 +680,78 @@ void Image::convert(Format p_new_format) { case FORMAT_RGBA8 | (FORMAT_RGB8 << 8): _convert<3, true, 3, false, false, false>(mip_width, mip_height, rptr, wptr); break; + case FORMAT_RH | (FORMAT_RGH << 8): + _convert_fast<uint16_t, 1, 2, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RH | (FORMAT_RGBH << 8): + _convert_fast<uint16_t, 1, 3, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RH | (FORMAT_RGBAH << 8): + _convert_fast<uint16_t, 1, 4, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RGH | (FORMAT_RH << 8): + _convert_fast<uint16_t, 2, 1, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RGH | (FORMAT_RGBH << 8): + _convert_fast<uint16_t, 2, 3, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RGH | (FORMAT_RGBAH << 8): + _convert_fast<uint16_t, 2, 4, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RGBH | (FORMAT_RH << 8): + _convert_fast<uint16_t, 3, 1, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RGBH | (FORMAT_RGH << 8): + _convert_fast<uint16_t, 3, 2, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RGBH | (FORMAT_RGBAH << 8): + _convert_fast<uint16_t, 3, 4, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RGBAH | (FORMAT_RH << 8): + _convert_fast<uint16_t, 4, 1, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RGBAH | (FORMAT_RGH << 8): + _convert_fast<uint16_t, 4, 2, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RGBAH | (FORMAT_RGBH << 8): + _convert_fast<uint16_t, 4, 3, 0x0000, 0x3C00>(mip_width, mip_height, (const uint16_t *)rptr, (uint16_t *)wptr); + break; + case FORMAT_RF | (FORMAT_RGF << 8): + _convert_fast<uint32_t, 1, 2, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RF | (FORMAT_RGBF << 8): + _convert_fast<uint32_t, 1, 3, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RF | (FORMAT_RGBAF << 8): + _convert_fast<uint32_t, 1, 4, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RGF | (FORMAT_RF << 8): + _convert_fast<uint32_t, 2, 1, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RGF | (FORMAT_RGBF << 8): + _convert_fast<uint32_t, 2, 3, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RGF | (FORMAT_RGBAF << 8): + _convert_fast<uint32_t, 2, 4, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RGBF | (FORMAT_RF << 8): + _convert_fast<uint32_t, 3, 1, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RGBF | (FORMAT_RGF << 8): + _convert_fast<uint32_t, 3, 2, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RGBF | (FORMAT_RGBAF << 8): + _convert_fast<uint32_t, 3, 4, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RGBAF | (FORMAT_RF << 8): + _convert_fast<uint32_t, 4, 1, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RGBAF | (FORMAT_RGF << 8): + _convert_fast<uint32_t, 4, 2, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; + case FORMAT_RGBAF | (FORMAT_RGBF << 8): + _convert_fast<uint32_t, 4, 3, 0x00000000, 0x3F800000>(mip_width, mip_height, (const uint32_t *)rptr, (uint32_t *)wptr); + break; } } diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index 928bb95de3..e727dfa56d 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -583,13 +583,7 @@ ResourceLoader::ThreadLoadStatus ResourceLoader::load_threaded_get_status(const } String local_path = _validate_local_path(p_path); - if (!thread_load_tasks.has(local_path)) { -#ifdef DEV_ENABLED - CRASH_NOW(); -#endif - // On non-dev, be defensive and at least avoid crashing (at this point at least). - return THREAD_LOAD_INVALID_RESOURCE; - } + ERR_FAIL_COND_V_MSG(!thread_load_tasks.has(local_path), THREAD_LOAD_INVALID_RESOURCE, "Bug in ResourceLoader logic, please report."); ThreadLoadTask &load_task = thread_load_tasks[local_path]; status = load_task.status; @@ -678,14 +672,10 @@ Ref<Resource> ResourceLoader::_load_complete_inner(LoadToken &p_load_token, Erro if (!p_load_token.local_path.is_empty()) { if (!thread_load_tasks.has(p_load_token.local_path)) { -#ifdef DEV_ENABLED - CRASH_NOW(); -#endif - // On non-dev, be defensive and at least avoid crashing (at this point at least). if (r_error) { *r_error = ERR_BUG; } - return Ref<Resource>(); + ERR_FAIL_V_MSG(Ref<Resource>(), "Bug in ResourceLoader logic, please report."); } ThreadLoadTask &load_task = thread_load_tasks[p_load_token.local_path]; diff --git a/core/math/color.h b/core/math/color.h index e17b8c9fd7..70fad78acb 100644 --- a/core/math/color.h +++ b/core/math/color.h @@ -129,33 +129,46 @@ struct [[nodiscard]] Color { } _FORCE_INLINE_ uint32_t to_rgbe9995() const { - const float pow2to9 = 512.0f; - const float B = 15.0f; - const float N = 9.0f; - - float sharedexp = 65408.000f; // Result of: ((pow2to9 - 1.0f) / pow2to9) * powf(2.0f, 31.0f - 15.0f) - - float cRed = MAX(0.0f, MIN(sharedexp, r)); - float cGreen = MAX(0.0f, MIN(sharedexp, g)); - float cBlue = MAX(0.0f, MIN(sharedexp, b)); - - float cMax = MAX(cRed, MAX(cGreen, cBlue)); - - float expp = MAX(-B - 1.0f, floor(Math::log(cMax) / (real_t)Math_LN2)) + 1.0f + B; - - float sMax = (float)floor((cMax / Math::pow(2.0f, expp - B - N)) + 0.5f); - - float exps = expp + 1.0f; - - if (0.0f <= sMax && sMax < pow2to9) { - exps = expp; - } - - float sRed = Math::floor((cRed / pow(2.0f, exps - B - N)) + 0.5f); - float sGreen = Math::floor((cGreen / pow(2.0f, exps - B - N)) + 0.5f); - float sBlue = Math::floor((cBlue / pow(2.0f, exps - B - N)) + 0.5f); - - return (uint32_t(Math::fast_ftoi(sRed)) & 0x1FF) | ((uint32_t(Math::fast_ftoi(sGreen)) & 0x1FF) << 9) | ((uint32_t(Math::fast_ftoi(sBlue)) & 0x1FF) << 18) | ((uint32_t(Math::fast_ftoi(exps)) & 0x1F) << 27); + // https://github.com/microsoft/DirectX-Graphics-Samples/blob/v10.0.19041.0/MiniEngine/Core/Color.cpp + static const float kMaxVal = float(0x1FF << 7); + static const float kMinVal = float(1.f / (1 << 16)); + + // Clamp RGB to [0, 1.FF*2^16] + const float _r = CLAMP(r, 0.0f, kMaxVal); + const float _g = CLAMP(g, 0.0f, kMaxVal); + const float _b = CLAMP(b, 0.0f, kMaxVal); + + // Compute the maximum channel, no less than 1.0*2^-15 + const float MaxChannel = MAX(MAX(_r, _g), MAX(_b, kMinVal)); + + // Take the exponent of the maximum channel (rounding up the 9th bit) and + // add 15 to it. When added to the channels, it causes the implicit '1.0' + // bit and the first 8 mantissa bits to be shifted down to the low 9 bits + // of the mantissa, rounding the truncated bits. + union { + float f; + int32_t i; + } R, G, B, E; + + E.f = MaxChannel; + E.i += 0x07804000; // Add 15 to the exponent and 0x4000 to the mantissa + E.i &= 0x7F800000; // Zero the mantissa + + // This shifts the 9-bit values we need into the lowest bits, rounding as + // needed. Note that if the channel has a smaller exponent than the max + // channel, it will shift even more. This is intentional. + R.f = _r + E.f; + G.f = _g + E.f; + B.f = _b + E.f; + + // Convert the Bias to the correct exponent in the upper 5 bits. + E.i <<= 4; + E.i += 0x10000000; + + // Combine the fields. RGB floats have unwanted data in the upper 9 + // bits. Only red needs to mask them off because green and blue shift + // it out to the left. + return E.i | (B.i << 18) | (G.i << 9) | (R.i & 511); } _FORCE_INLINE_ Color blend(const Color &p_over) const { diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h index 3060f31970..fd53ed28fd 100644 --- a/core/math/math_funcs.h +++ b/core/math/math_funcs.h @@ -447,14 +447,22 @@ public: static _ALWAYS_INLINE_ double smoothstep(double p_from, double p_to, double p_s) { if (is_equal_approx(p_from, p_to)) { - return p_from; + if (likely(p_from <= p_to)) { + return p_s <= p_from ? 0.0 : 1.0; + } else { + return p_s <= p_to ? 1.0 : 0.0; + } } double s = CLAMP((p_s - p_from) / (p_to - p_from), 0.0, 1.0); return s * s * (3.0 - 2.0 * s); } static _ALWAYS_INLINE_ float smoothstep(float p_from, float p_to, float p_s) { if (is_equal_approx(p_from, p_to)) { - return p_from; + if (likely(p_from <= p_to)) { + return p_s <= p_from ? 0.0f : 1.0f; + } else { + return p_s <= p_to ? 1.0f : 0.0f; + } } float s = CLAMP((p_s - p_from) / (p_to - p_from), 0.0f, 1.0f); return s * s * (3.0f - 2.0f * s); diff --git a/core/math/transform_interpolator.cpp b/core/math/transform_interpolator.cpp index 6a564b0ca7..1cd35b3d1a 100644 --- a/core/math/transform_interpolator.cpp +++ b/core/math/transform_interpolator.cpp @@ -31,6 +31,7 @@ #include "transform_interpolator.h" #include "core/math/transform_2d.h" +#include "core/math/transform_3d.h" void TransformInterpolator::interpolate_transform_2d(const Transform2D &p_prev, const Transform2D &p_curr, Transform2D &r_result, real_t p_fraction) { // Special case for physics interpolation, if flipping, don't interpolate basis. @@ -44,3 +45,340 @@ void TransformInterpolator::interpolate_transform_2d(const Transform2D &p_prev, r_result = p_prev.interpolate_with(p_curr, p_fraction); } + +void TransformInterpolator::interpolate_transform_3d(const Transform3D &p_prev, const Transform3D &p_curr, Transform3D &r_result, real_t p_fraction) { + r_result.origin = p_prev.origin + ((p_curr.origin - p_prev.origin) * p_fraction); + interpolate_basis(p_prev.basis, p_curr.basis, r_result.basis, p_fraction); +} + +void TransformInterpolator::interpolate_basis(const Basis &p_prev, const Basis &p_curr, Basis &r_result, real_t p_fraction) { + Method method = find_method(p_prev, p_curr); + interpolate_basis_via_method(p_prev, p_curr, r_result, p_fraction, method); +} + +void TransformInterpolator::interpolate_transform_3d_via_method(const Transform3D &p_prev, const Transform3D &p_curr, Transform3D &r_result, real_t p_fraction, Method p_method) { + r_result.origin = p_prev.origin + ((p_curr.origin - p_prev.origin) * p_fraction); + interpolate_basis_via_method(p_prev.basis, p_curr.basis, r_result.basis, p_fraction, p_method); +} + +void TransformInterpolator::interpolate_basis_via_method(const Basis &p_prev, const Basis &p_curr, Basis &r_result, real_t p_fraction, Method p_method) { + switch (p_method) { + default: { + interpolate_basis_linear(p_prev, p_curr, r_result, p_fraction); + } break; + case INTERP_SLERP: { + r_result = _basis_slerp_unchecked(p_prev, p_curr, p_fraction); + } break; + case INTERP_SCALED_SLERP: { + interpolate_basis_scaled_slerp(p_prev, p_curr, r_result, p_fraction); + } break; + } +} + +Quaternion TransformInterpolator::_basis_to_quat_unchecked(const Basis &p_basis) { + Basis m = p_basis; + real_t trace = m.rows[0][0] + m.rows[1][1] + m.rows[2][2]; + real_t temp[4]; + + if (trace > 0.0) { + real_t s = Math::sqrt(trace + 1.0f); + temp[3] = (s * 0.5f); + s = 0.5f / s; + + temp[0] = ((m.rows[2][1] - m.rows[1][2]) * s); + temp[1] = ((m.rows[0][2] - m.rows[2][0]) * s); + temp[2] = ((m.rows[1][0] - m.rows[0][1]) * s); + } else { + int i = m.rows[0][0] < m.rows[1][1] + ? (m.rows[1][1] < m.rows[2][2] ? 2 : 1) + : (m.rows[0][0] < m.rows[2][2] ? 2 : 0); + int j = (i + 1) % 3; + int k = (i + 2) % 3; + + real_t s = Math::sqrt(m.rows[i][i] - m.rows[j][j] - m.rows[k][k] + 1.0f); + temp[i] = s * 0.5f; + s = 0.5f / s; + + temp[3] = (m.rows[k][j] - m.rows[j][k]) * s; + temp[j] = (m.rows[j][i] + m.rows[i][j]) * s; + temp[k] = (m.rows[k][i] + m.rows[i][k]) * s; + } + + return Quaternion(temp[0], temp[1], temp[2], temp[3]); +} + +Quaternion TransformInterpolator::_quat_slerp_unchecked(const Quaternion &p_from, const Quaternion &p_to, real_t p_fraction) { + Quaternion to1; + real_t omega, cosom, sinom, scale0, scale1; + + // Calculate cosine. + cosom = p_from.dot(p_to); + + // Adjust signs (if necessary) + if (cosom < 0.0f) { + cosom = -cosom; + to1.x = -p_to.x; + to1.y = -p_to.y; + to1.z = -p_to.z; + to1.w = -p_to.w; + } else { + to1.x = p_to.x; + to1.y = p_to.y; + to1.z = p_to.z; + to1.w = p_to.w; + } + + // Calculate coefficients. + + // This check could possibly be removed as we dealt with this + // case in the find_method() function, but is left for safety, it probably + // isn't a bottleneck. + if ((1.0f - cosom) > (real_t)CMP_EPSILON) { + // standard case (slerp) + omega = Math::acos(cosom); + sinom = Math::sin(omega); + scale0 = Math::sin((1.0f - p_fraction) * omega) / sinom; + scale1 = Math::sin(p_fraction * omega) / sinom; + } else { + // "from" and "to" quaternions are very close + // ... so we can do a linear interpolation + scale0 = 1.0f - p_fraction; + scale1 = p_fraction; + } + // Calculate final values. + return Quaternion( + scale0 * p_from.x + scale1 * to1.x, + scale0 * p_from.y + scale1 * to1.y, + scale0 * p_from.z + scale1 * to1.z, + scale0 * p_from.w + scale1 * to1.w); +} + +Basis TransformInterpolator::_basis_slerp_unchecked(Basis p_from, Basis p_to, real_t p_fraction) { + Quaternion from = _basis_to_quat_unchecked(p_from); + Quaternion to = _basis_to_quat_unchecked(p_to); + + Basis b(_quat_slerp_unchecked(from, to, p_fraction)); + return b; +} + +void TransformInterpolator::interpolate_basis_scaled_slerp(Basis p_prev, Basis p_curr, Basis &r_result, real_t p_fraction) { + // Normalize both and find lengths. + Vector3 lengths_prev = _basis_orthonormalize(p_prev); + Vector3 lengths_curr = _basis_orthonormalize(p_curr); + + r_result = _basis_slerp_unchecked(p_prev, p_curr, p_fraction); + + // Now the result is unit length basis, we need to scale. + Vector3 lengths_lerped = lengths_prev + ((lengths_curr - lengths_prev) * p_fraction); + + // Keep a note that the column / row order of the basis is weird, + // so keep an eye for bugs with this. + r_result[0] *= lengths_lerped; + r_result[1] *= lengths_lerped; + r_result[2] *= lengths_lerped; +} + +void TransformInterpolator::interpolate_basis_linear(const Basis &p_prev, const Basis &p_curr, Basis &r_result, real_t p_fraction) { + // Interpolate basis. + r_result = p_prev.lerp(p_curr, p_fraction); + + // It turns out we need to guard against zero scale basis. + // This is kind of silly, as we should probably fix the bugs elsewhere in Godot that can't deal with + // zero scale, but until that time... + for (int n = 0; n < 3; n++) { + Vector3 &axis = r_result[n]; + + // Not ok, this could cause errors due to bugs elsewhere, + // so we will bodge set this to a small value. + const real_t smallest = 0.0001f; + const real_t smallest_squared = smallest * smallest; + if (axis.length_squared() < smallest_squared) { + // Setting a different component to the smallest + // helps prevent the situation where all the axes are pointing in the same direction, + // which could be a problem for e.g. cross products... + axis[n] = smallest; + } + } +} + +// Returns length. +real_t TransformInterpolator::_vec3_normalize(Vector3 &p_vec) { + real_t lengthsq = p_vec.length_squared(); + if (lengthsq == 0.0f) { + p_vec.x = p_vec.y = p_vec.z = 0.0f; + return 0.0f; + } + real_t length = Math::sqrt(lengthsq); + p_vec.x /= length; + p_vec.y /= length; + p_vec.z /= length; + return length; +} + +// Returns lengths. +Vector3 TransformInterpolator::_basis_orthonormalize(Basis &r_basis) { + // Gram-Schmidt Process. + + Vector3 x = r_basis.get_column(0); + Vector3 y = r_basis.get_column(1); + Vector3 z = r_basis.get_column(2); + + Vector3 lengths; + + lengths.x = _vec3_normalize(x); + y = (y - x * (x.dot(y))); + lengths.y = _vec3_normalize(y); + z = (z - x * (x.dot(z)) - y * (y.dot(z))); + lengths.z = _vec3_normalize(z); + + r_basis.set_column(0, x); + r_basis.set_column(1, y); + r_basis.set_column(2, z); + + return lengths; +} + +TransformInterpolator::Method TransformInterpolator::_test_basis(Basis p_basis, bool r_needed_normalize, Quaternion &r_quat) { + // Axis lengths. + Vector3 al = Vector3(p_basis.get_column(0).length_squared(), + p_basis.get_column(1).length_squared(), + p_basis.get_column(2).length_squared()); + + // Non unit scale? + if (r_needed_normalize || !_vec3_is_equal_approx(al, Vector3(1.0, 1.0, 1.0), (real_t)0.001f)) { + // If the basis is not normalized (at least approximately), it will fail the checks needed for slerp. + // So we try to detect a scaled (but not sheared) basis, which we *can* slerp by normalizing first, + // and lerping the scales separately. + + // If any of the axes are really small, it is unlikely to be a valid rotation, or is scaled too small to deal with float error. + const real_t sl_epsilon = 0.00001f; + if ((al.x < sl_epsilon) || + (al.y < sl_epsilon) || + (al.z < sl_epsilon)) { + return INTERP_LERP; + } + + // Normalize the basis. + Basis norm_basis = p_basis; + + al.x = Math::sqrt(al.x); + al.y = Math::sqrt(al.y); + al.z = Math::sqrt(al.z); + + norm_basis.set_column(0, norm_basis.get_column(0) / al.x); + norm_basis.set_column(1, norm_basis.get_column(1) / al.y); + norm_basis.set_column(2, norm_basis.get_column(2) / al.z); + + // This doesn't appear necessary, as the later checks will catch it. + // if (!_basis_is_orthogonal_any_scale(norm_basis)) { + // return INTERP_LERP; + // } + + p_basis = norm_basis; + + // Orthonormalize not necessary as normal normalization(!) works if the + // axes are orthonormal. + // p_basis.orthonormalize(); + + // If we needed to normalize one of the two bases, we will need to normalize both, + // regardless of whether the 2nd needs it, just to make sure it takes the path to return + // INTERP_SCALED_LERP on the 2nd call of _test_basis. + r_needed_normalize = true; + } + + // Apply less stringent tests than the built in slerp, the standard Godot slerp + // is too susceptible to float error to be useful. + real_t det = p_basis.determinant(); + if (!Math::is_equal_approx(det, 1, (real_t)0.01f)) { + return INTERP_LERP; + } + + if (!_basis_is_orthogonal(p_basis)) { + return INTERP_LERP; + } + + // TODO: This could possibly be less stringent too, check this. + r_quat = _basis_to_quat_unchecked(p_basis); + if (!r_quat.is_normalized()) { + return INTERP_LERP; + } + + return r_needed_normalize ? INTERP_SCALED_SLERP : INTERP_SLERP; +} + +// This check doesn't seem to be needed but is preserved in case of bugs. +bool TransformInterpolator::_basis_is_orthogonal_any_scale(const Basis &p_basis) { + Vector3 cross = p_basis.get_column(0).cross(p_basis.get_column(1)); + real_t l = _vec3_normalize(cross); + // Too small numbers, revert to lerp. + if (l < 0.001f) { + return false; + } + + const real_t epsilon = 0.9995f; + + real_t dot = cross.dot(p_basis.get_column(2)); + if (dot < epsilon) { + return false; + } + + cross = p_basis.get_column(1).cross(p_basis.get_column(2)); + l = _vec3_normalize(cross); + // Too small numbers, revert to lerp. + if (l < 0.001f) { + return false; + } + + dot = cross.dot(p_basis.get_column(0)); + if (dot < epsilon) { + return false; + } + + return true; +} + +bool TransformInterpolator::_basis_is_orthogonal(const Basis &p_basis, real_t p_epsilon) { + Basis identity; + Basis m = p_basis * p_basis.transposed(); + + // Less stringent tests than the standard Godot slerp. + if (!_vec3_is_equal_approx(m[0], identity[0], p_epsilon) || !_vec3_is_equal_approx(m[1], identity[1], p_epsilon) || !_vec3_is_equal_approx(m[2], identity[2], p_epsilon)) { + return false; + } + return true; +} + +real_t TransformInterpolator::checksum_transform_3d(const Transform3D &p_transform) { + // just a really basic checksum, this can probably be improved + real_t sum = _vec3_sum(p_transform.origin); + sum -= _vec3_sum(p_transform.basis.rows[0]); + sum += _vec3_sum(p_transform.basis.rows[1]); + sum -= _vec3_sum(p_transform.basis.rows[2]); + return sum; +} + +TransformInterpolator::Method TransformInterpolator::find_method(const Basis &p_a, const Basis &p_b) { + bool needed_normalize = false; + + Quaternion q0; + Method method = _test_basis(p_a, needed_normalize, q0); + if (method == INTERP_LERP) { + return method; + } + + Quaternion q1; + method = _test_basis(p_b, needed_normalize, q1); + if (method == INTERP_LERP) { + return method; + } + + // Are they close together? + // Apply the same test that will revert to lerp as is present in the slerp routine. + // Calculate cosine. + real_t cosom = Math::abs(q0.dot(q1)); + if ((1.0f - cosom) <= (real_t)CMP_EPSILON) { + return INTERP_LERP; + } + + return method; +} diff --git a/core/math/transform_interpolator.h b/core/math/transform_interpolator.h index a9bce2bd7f..cc556707e4 100644 --- a/core/math/transform_interpolator.h +++ b/core/math/transform_interpolator.h @@ -32,15 +32,64 @@ #define TRANSFORM_INTERPOLATOR_H #include "core/math/math_defs.h" +#include "core/math/vector3.h" + +// Keep all the functions for fixed timestep interpolation together. +// There are two stages involved: +// Finding a method, for determining the interpolation method between two +// keyframes (which are physics ticks). +// And applying that pre-determined method. + +// Pre-determining the method makes sense because it is expensive and often +// several frames may occur between each physics tick, which will make it cheaper +// than performing every frame. struct Transform2D; +struct Transform3D; +struct Basis; +struct Quaternion; class TransformInterpolator { +public: + enum Method { + INTERP_LERP, + INTERP_SLERP, + INTERP_SCALED_SLERP, + }; + private: - static bool _sign(real_t p_val) { return p_val >= 0; } + _FORCE_INLINE_ static bool _sign(real_t p_val) { return p_val >= 0; } + static real_t _vec3_sum(const Vector3 &p_pt) { return p_pt.x + p_pt.y + p_pt.z; } + static real_t _vec3_normalize(Vector3 &p_vec); + _FORCE_INLINE_ static bool _vec3_is_equal_approx(const Vector3 &p_a, const Vector3 &p_b, real_t p_tolerance) { + return Math::is_equal_approx(p_a.x, p_b.x, p_tolerance) && Math::is_equal_approx(p_a.y, p_b.y, p_tolerance) && Math::is_equal_approx(p_a.z, p_b.z, p_tolerance); + } + static Vector3 _basis_orthonormalize(Basis &r_basis); + static Method _test_basis(Basis p_basis, bool r_needed_normalize, Quaternion &r_quat); + static Basis _basis_slerp_unchecked(Basis p_from, Basis p_to, real_t p_fraction); + static Quaternion _quat_slerp_unchecked(const Quaternion &p_from, const Quaternion &p_to, real_t p_fraction); + static Quaternion _basis_to_quat_unchecked(const Basis &p_basis); + static bool _basis_is_orthogonal(const Basis &p_basis, real_t p_epsilon = 0.01f); + static bool _basis_is_orthogonal_any_scale(const Basis &p_basis); + + static void interpolate_basis_linear(const Basis &p_prev, const Basis &p_curr, Basis &r_result, real_t p_fraction); + static void interpolate_basis_scaled_slerp(Basis p_prev, Basis p_curr, Basis &r_result, real_t p_fraction); public: static void interpolate_transform_2d(const Transform2D &p_prev, const Transform2D &p_curr, Transform2D &r_result, real_t p_fraction); + + // Generic functions, use when you don't know what method should be used, e.g. from GDScript. + // These will be slower. + static void interpolate_transform_3d(const Transform3D &p_prev, const Transform3D &p_curr, Transform3D &r_result, real_t p_fraction); + static void interpolate_basis(const Basis &p_prev, const Basis &p_curr, Basis &r_result, real_t p_fraction); + + // Optimized function when you know ahead of time the method. + static void interpolate_transform_3d_via_method(const Transform3D &p_prev, const Transform3D &p_curr, Transform3D &r_result, real_t p_fraction, Method p_method); + static void interpolate_basis_via_method(const Basis &p_prev, const Basis &p_curr, Basis &r_result, real_t p_fraction, Method p_method); + + static real_t checksum_transform_3d(const Transform3D &p_transform); + + static Method find_method(const Basis &p_a, const Basis &p_b); }; #endif // TRANSFORM_INTERPOLATOR_H diff --git a/core/os/main_loop.h b/core/os/main_loop.h index e48541d074..9c22cbaf3c 100644 --- a/core/os/main_loop.h +++ b/core/os/main_loop.h @@ -64,6 +64,7 @@ public: virtual void initialize(); virtual void iteration_prepare() {} virtual bool physics_process(double p_time); + virtual void iteration_end() {} virtual bool process(double p_time); virtual void finalize(); diff --git a/core/string/ustring.cpp b/core/string/ustring.cpp index 3d37e17ef8..cf19a1d48f 100644 --- a/core/string/ustring.cpp +++ b/core/string/ustring.cpp @@ -1639,13 +1639,43 @@ Vector<int> String::split_ints_mk(const Vector<String> &p_splitters, bool p_allo } String String::join(const Vector<String> &parts) const { + if (parts.is_empty()) { + return String(); + } else if (parts.size() == 1) { + return parts[0]; + } + + const int this_length = length(); + + int new_size = (parts.size() - 1) * this_length; + for (const String &part : parts) { + new_size += part.length(); + } + new_size += 1; + String ret; - for (int i = 0; i < parts.size(); ++i) { - if (i > 0) { - ret += *this; + ret.resize(new_size); + char32_t *ret_ptrw = ret.ptrw(); + const char32_t *this_ptr = ptr(); + + bool first = true; + for (const String &part : parts) { + if (first) { + first = false; + } else if (this_length) { + memcpy(ret_ptrw, this_ptr, this_length * sizeof(char32_t)); + ret_ptrw += this_length; + } + + const int part_length = part.length(); + if (part_length) { + memcpy(ret_ptrw, part.ptr(), part_length * sizeof(char32_t)); + ret_ptrw += part_length; } - ret += parts[i]; } + + *ret_ptrw = 0; + return ret; } @@ -3149,7 +3179,7 @@ Vector<uint8_t> String::sha256_buffer() const { } String String::insert(int p_at_pos, const String &p_string) const { - if (p_at_pos < 0) { + if (p_string.is_empty() || p_at_pos < 0) { return *this; } @@ -3157,17 +3187,27 @@ String String::insert(int p_at_pos, const String &p_string) const { p_at_pos = length(); } - String pre; + String ret; + ret.resize(length() + p_string.length() + 1); + char32_t *ret_ptrw = ret.ptrw(); + const char32_t *this_ptr = ptr(); + if (p_at_pos > 0) { - pre = substr(0, p_at_pos); + memcpy(ret_ptrw, this_ptr, p_at_pos * sizeof(char32_t)); + ret_ptrw += p_at_pos; } - String post; + memcpy(ret_ptrw, p_string.ptr(), p_string.length() * sizeof(char32_t)); + ret_ptrw += p_string.length(); + if (p_at_pos < length()) { - post = substr(p_at_pos, length() - p_at_pos); + memcpy(ret_ptrw, this_ptr + p_at_pos, (length() - p_at_pos) * sizeof(char32_t)); + ret_ptrw += length() - p_at_pos; } - return pre + p_string + post; + *ret_ptrw = 0; + + return ret; } String String::erase(int p_pos, int p_chars) const { @@ -5321,6 +5361,11 @@ String String::lpad(int min_length, const String &character) const { // "fish %s %d pie" % ["frog", 12] // In case of an error, the string returned is the error description and "error" is true. String String::sprintf(const Array &values, bool *error) const { + static const String ZERO("0"); + static const String SPACE(" "); + static const String MINUS("-"); + static const String PLUS("+"); + String formatted; char32_t *self = (char32_t *)get_data(); bool in_format = false; @@ -5343,7 +5388,7 @@ String String::sprintf(const Array &values, bool *error) const { if (in_format) { // We have % - let's see what else we get. switch (c) { case '%': { // Replace %% with % - formatted += chr(c); + formatted += c; in_format = false; break; } @@ -5393,7 +5438,7 @@ String String::sprintf(const Array &values, bool *error) const { // Padding. int pad_chars_count = (negative || show_sign) ? min_chars - 1 : min_chars; - String pad_char = pad_with_zeros ? String("0") : String(" "); + const String &pad_char = pad_with_zeros ? ZERO : SPACE; if (left_justified) { str = str.rpad(pad_chars_count, pad_char); } else { @@ -5402,7 +5447,7 @@ String String::sprintf(const Array &values, bool *error) const { // Sign. if (show_sign || negative) { - String sign_char = negative ? "-" : "+"; + const String &sign_char = negative ? MINUS : PLUS; if (left_justified) { str = str.insert(0, sign_char); } else { @@ -5439,7 +5484,7 @@ String String::sprintf(const Array &values, bool *error) const { // Padding. Leave room for sign later if required. int pad_chars_count = (is_negative || show_sign) ? min_chars - 1 : min_chars; - String pad_char = (pad_with_zeros && is_finite) ? String("0") : String(" "); // Never pad NaN or inf with zeros + const String &pad_char = (pad_with_zeros && is_finite) ? ZERO : SPACE; // Never pad NaN or inf with zeros if (left_justified) { str = str.rpad(pad_chars_count, pad_char); } else { @@ -5448,7 +5493,7 @@ String String::sprintf(const Array &values, bool *error) const { // Add sign if needed. if (show_sign || is_negative) { - String sign_char = is_negative ? "-" : "+"; + const String &sign_char = is_negative ? MINUS : PLUS; if (left_justified) { str = str.insert(0, sign_char); } else { @@ -5501,7 +5546,7 @@ String String::sprintf(const Array &values, bool *error) const { // Padding. Leave room for sign later if required. int pad_chars_count = val < 0 ? min_chars - 1 : min_chars; - String pad_char = (pad_with_zeros && is_finite) ? String("0") : String(" "); // Never pad NaN or inf with zeros + const String &pad_char = (pad_with_zeros && is_finite) ? ZERO : SPACE; // Never pad NaN or inf with zeros if (left_justified) { number_str = number_str.rpad(pad_chars_count, pad_char); } else { @@ -5511,9 +5556,9 @@ String String::sprintf(const Array &values, bool *error) const { // Add sign if needed. if (val < 0) { if (left_justified) { - number_str = number_str.insert(0, "-"); + number_str = number_str.insert(0, MINUS); } else { - number_str = number_str.insert(pad_with_zeros ? 0 : number_str.length() - initial_len, "-"); + number_str = number_str.insert(pad_with_zeros ? 0 : number_str.length() - initial_len, MINUS); } } @@ -5678,7 +5723,7 @@ String String::sprintf(const Array &values, bool *error) const { in_decimals = false; break; default: - formatted += chr(c); + formatted += c; } } } diff --git a/core/templates/cowdata.h b/core/templates/cowdata.h index f22ae1f1d3..fedcfaec3b 100644 --- a/core/templates/cowdata.h +++ b/core/templates/cowdata.h @@ -160,7 +160,7 @@ private: return *out; } - void _unref(void *p_data); + void _unref(); void _ref(const CowData *p_from); void _ref(const CowData &p_from); USize _copy_on_write(); @@ -222,12 +222,15 @@ public: } Error insert(Size p_pos, const T &p_val) { - ERR_FAIL_INDEX_V(p_pos, size() + 1, ERR_INVALID_PARAMETER); - resize(size() + 1); - for (Size i = (size() - 1); i > p_pos; i--) { - set(i, get(i - 1)); + Size new_size = size() + 1; + ERR_FAIL_INDEX_V(p_pos, new_size, ERR_INVALID_PARAMETER); + Error err = resize(new_size); + ERR_FAIL_COND_V(err, err); + T *p = ptrw(); + for (Size i = new_size - 1; i > p_pos; i--) { + p[i] = p[i - 1]; } - set(p_pos, p_val); + p[p_pos] = p_val; return OK; } @@ -242,30 +245,29 @@ public: }; template <typename T> -void CowData<T>::_unref(void *p_data) { - if (!p_data) { +void CowData<T>::_unref() { + if (!_ptr) { return; } SafeNumeric<USize> *refc = _get_refcount(); - if (refc->decrement() > 0) { return; // still in use } // clean up if constexpr (!std::is_trivially_destructible_v<T>) { - USize *count = _get_size(); - T *data = (T *)(count + 1); + USize current_size = *_get_size(); - for (USize i = 0; i < *count; ++i) { + for (USize i = 0; i < current_size; ++i) { // call destructors - data[i].~T(); + T *t = &_ptr[i]; + t->~T(); } } // free mem - Memory::free_static(((uint8_t *)p_data) - DATA_OFFSET, false); + Memory::free_static(((uint8_t *)_ptr) - DATA_OFFSET, false); } template <typename T> @@ -300,7 +302,7 @@ typename CowData<T>::USize CowData<T>::_copy_on_write() { } } - _unref(_ptr); + _unref(); _ptr = _data_ptr; rc = 1; @@ -321,7 +323,7 @@ Error CowData<T>::resize(Size p_size) { if (p_size == 0) { // wants to clean up - _unref(_ptr); + _unref(); _ptr = nullptr; return OK; } @@ -460,7 +462,7 @@ void CowData<T>::_ref(const CowData &p_from) { return; // self assign, do nothing. } - _unref(_ptr); + _unref(); _ptr = nullptr; if (!p_from._ptr) { @@ -474,7 +476,7 @@ void CowData<T>::_ref(const CowData &p_from) { template <typename T> CowData<T>::~CowData() { - _unref(_ptr); + _unref(); } #if defined(__GNUC__) && !defined(__clang__) diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index 2cd3a51722..339bbb71dd 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -1248,8 +1248,9 @@ <param index="1" name="to" type="float" /> <param index="2" name="x" type="float" /> <description> - Returns the result of smoothly interpolating the value of [param x] between [code]0[/code] and [code]1[/code], based on the where [param x] lies with respect to the edges [param from] and [param to]. - The return value is [code]0[/code] if [code]x <= from[/code], and [code]1[/code] if [code]x >= to[/code]. If [param x] lies between [param from] and [param to], the returned value follows an S-shaped curve that maps [param x] between [code]0[/code] and [code]1[/code]. + Returns a smooth cubic Hermite interpolation between [code]0[/code] and [code]1[/code]. + For positive ranges (when [code]from <= to[/code]) the return value is [code]0[/code] when [code]x <= from[/code], and [code]1[/code] when [code]x >= to[/code]. If [param x] lies between [param from] and [param to], the return value follows an S-shaped curve that smoothly transitions from [code]0[/code] to [code]1[/code]. + For negative ranges (when [code]from > to[/code]) the function is mirrored and returns [code]1[/code] when [code]x <= to[/code] and [code]0[/code] when [code]x >= from[/code]. This S-shaped curve is the cubic Hermite interpolator, given by [code]f(y) = 3*y^2 - 2*y^3[/code] where [code]y = (x-from) / (to-from)[/code]. [codeblock] smoothstep(0, 2, -5.0) # Returns 0.0 @@ -1259,6 +1260,7 @@ [/codeblock] Compared to [method ease] with a curve value of [code]-1.6521[/code], [method smoothstep] returns the smoothest possible curve with no sudden changes in the derivative. If you need to perform more advanced transitions, use [Tween] or [AnimationPlayer]. [url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/smoothstep_ease_comparison.png]Comparison between smoothstep() and ease(x, -1.6521) return values[/url] + [url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/smoothstep_range.webp]Smoothstep() return values with positive, zero, and negative ranges[/url] </description> </method> <method name="snapped"> diff --git a/doc/classes/ClassDB.xml b/doc/classes/ClassDB.xml index 59ed0b8fe7..66b67d1a59 100644 --- a/doc/classes/ClassDB.xml +++ b/doc/classes/ClassDB.xml @@ -99,6 +99,14 @@ Returns the default value of [param property] of [param class] or its ancestor classes. </description> </method> + <method name="class_get_property_getter"> + <return type="StringName" /> + <param index="0" name="class" type="StringName" /> + <param index="1" name="property" type="StringName" /> + <description> + Returns the getter method name of [param property] of [param class]. + </description> + </method> <method name="class_get_property_list" qualifiers="const"> <return type="Dictionary[]" /> <param index="0" name="class" type="StringName" /> @@ -107,6 +115,14 @@ Returns an array with all the properties of [param class] or its ancestry if [param no_inheritance] is [code]false[/code]. </description> </method> + <method name="class_get_property_setter"> + <return type="StringName" /> + <param index="0" name="class" type="StringName" /> + <param index="1" name="property" type="StringName" /> + <description> + Returns the setter method name of [param property] of [param class]. + </description> + </method> <method name="class_get_signal" qualifiers="const"> <return type="Dictionary" /> <param index="0" name="class" type="StringName" /> diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml index 4d82a32dae..320b119b6a 100644 --- a/doc/classes/EditorSettings.xml +++ b/doc/classes/EditorSettings.xml @@ -311,13 +311,13 @@ The grid size in units. Higher values prevent the grid from appearing "cut off" at certain angles, but make the grid more demanding to render. Depending on the camera's position, the grid may not be fully visible since a shader is used to fade it progressively. </member> <member name="editors/3d/grid_xy_plane" type="bool" setter="" getter=""> - If [code]true[/code], render the grid on an XY plane. This can be useful for 3D side-scrolling games. + If [code]true[/code], renders the grid on the XY plane in perspective view. This can be useful for 3D side-scrolling games. </member> <member name="editors/3d/grid_xz_plane" type="bool" setter="" getter=""> - If [code]true[/code], render the grid on an XZ plane. + If [code]true[/code], renders the grid on the XZ plane in perspective view. </member> <member name="editors/3d/grid_yz_plane" type="bool" setter="" getter=""> - If [code]true[/code], render the grid on a YZ plane. This can be useful for 3D side-scrolling games. + If [code]true[/code], renders the grid on the YZ plane in perspective view. This can be useful for 3D side-scrolling games. </member> <member name="editors/3d/navigation/emulate_3_button_mouse" type="bool" setter="" getter=""> If [code]true[/code], enables 3-button mouse emulation mode. This is useful on laptops when using a trackpad. @@ -656,6 +656,9 @@ Expanding main editor window content to the title, if supported by [DisplayServer]. See [constant DisplayServer.WINDOW_FLAG_EXTEND_TO_TITLE]. Specific to the macOS platform. </member> + <member name="interface/editor/font_allow_msdf" type="bool" setter="" getter=""> + If set to [code]true[/code], MSDF font rendering will be used for the visual shader graph editor. You may need to set this to [code]false[/code] when using a custom main font, as some fonts will look broken due to the use of self-intersecting outlines in their font data. Downloading the font from the font maker's official website as opposed to a service like Google Fonts can help resolve this issue. + </member> <member name="interface/editor/font_antialiasing" type="int" setter="" getter=""> FreeType's font anti-aliasing mode used to render the editor fonts. Most fonts are not designed to look good with anti-aliasing disabled, so it's recommended to leave this enabled unless you're using a pixel art font. </member> diff --git a/doc/classes/Geometry2D.xml b/doc/classes/Geometry2D.xml index f21696d02c..2dd76ad989 100644 --- a/doc/classes/Geometry2D.xml +++ b/doc/classes/Geometry2D.xml @@ -126,8 +126,34 @@ <param index="2" name="from_b" type="Vector2" /> <param index="3" name="dir_b" type="Vector2" /> <description> - Checks if the two lines ([param from_a], [param dir_a]) and ([param from_b], [param dir_b]) intersect. If yes, return the point of intersection as [Vector2]. If no intersection takes place, returns [code]null[/code]. - [b]Note:[/b] The lines are specified using direction vectors, not end points. + Returns the point of intersection between the two lines ([param from_a], [param dir_a]) and ([param from_b], [param dir_b]). Returns a [Vector2], or [code]null[/code] if the lines are parallel. + [code]from[/code] and [code]dir[/code] are [i]not[/i] endpoints of a line segment or ray but the slope ([code]dir[/code]) and a known point ([code]from[/code]) on that line. + [codeblocks] + [gdscript] + var from_a = Vector2.ZERO + var dir_a = Vector2.RIGHT + var from_b = Vector2.DOWN + + # Returns Vector2(1, 0) + Geometry2D.line_intersects_line(from_a, dir_a, from_b, Vector2(1, -1)) + # Returns Vector2(-1, 0) + Geometry2D.line_intersects_line(from_a, dir_a, from_b, Vector2(-1, -1)) + # Returns null + Geometry2D.line_intersects_line(from_a, dir_a, from_b, Vector2.RIGHT) + [/gdscript] + [csharp] + var fromA = Vector2.Zero; + var dirA = Vector2.Right; + var fromB = Vector2.Down; + + // Returns new Vector2(1, 0) + Geometry2D.LineIntersectsLine(fromA, dirA, fromB, new Vector2(1, -1)); + // Returns new Vector2(-1, 0) + Geometry2D.LineIntersectsLine(fromA, dirA, fromB, new Vector2(-1, -1)); + // Returns null + Geometry2D.LineIntersectsLine(fromA, dirA, fromB, Vector2.Right); + [/csharp] + [/codeblocks] </description> </method> <method name="make_atlas"> diff --git a/doc/classes/NavigationLink2D.xml b/doc/classes/NavigationLink2D.xml index 0892c9ec44..2e1c962dd1 100644 --- a/doc/classes/NavigationLink2D.xml +++ b/doc/classes/NavigationLink2D.xml @@ -29,6 +29,12 @@ Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [param layer_number] between 1 and 32. </description> </method> + <method name="get_navigation_map" qualifiers="const"> + <return type="RID" /> + <description> + Returns the current navigation map [RID] used by this link. + </description> + </method> <method name="get_rid" qualifiers="const"> <return type="RID" /> <description> @@ -57,6 +63,13 @@ Based on [param value], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [param layer_number] between 1 and 32. </description> </method> + <method name="set_navigation_map"> + <return type="void" /> + <param index="0" name="navigation_map" type="RID" /> + <description> + Sets the [RID] of the navigation map this link should use. By default the link will automatically join the [World2D] default navigation map so this function is only required to override the default map. + </description> + </method> </methods> <members> <member name="bidirectional" type="bool" setter="set_bidirectional" getter="is_bidirectional" default="true"> diff --git a/doc/classes/NavigationLink3D.xml b/doc/classes/NavigationLink3D.xml index 0fcc106beb..174228ea5b 100644 --- a/doc/classes/NavigationLink3D.xml +++ b/doc/classes/NavigationLink3D.xml @@ -29,6 +29,12 @@ Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [param layer_number] between 1 and 32. </description> </method> + <method name="get_navigation_map" qualifiers="const"> + <return type="RID" /> + <description> + Returns the current navigation map [RID] used by this link. + </description> + </method> <method name="get_rid" qualifiers="const"> <return type="RID" /> <description> @@ -57,6 +63,13 @@ Based on [param value], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [param layer_number] between 1 and 32. </description> </method> + <method name="set_navigation_map"> + <return type="void" /> + <param index="0" name="navigation_map" type="RID" /> + <description> + Sets the [RID] of the navigation map this link should use. By default the link will automatically join the [World3D] default navigation map so this function is only required to override the default map. + </description> + </method> </methods> <members> <member name="bidirectional" type="bool" setter="set_bidirectional" getter="is_bidirectional" default="true"> diff --git a/doc/classes/Node3D.xml b/doc/classes/Node3D.xml index 125c7ef3ee..ae13af4b82 100644 --- a/doc/classes/Node3D.xml +++ b/doc/classes/Node3D.xml @@ -46,6 +46,14 @@ Returns all the gizmos attached to this [Node3D]. </description> </method> + <method name="get_global_transform_interpolated"> + <return type="Transform3D" /> + <description> + When using physics interpolation, there will be circumstances in which you want to know the interpolated (displayed) transform of a node rather than the standard transform (which may only be accurate to the most recent physics tick). + This is particularly important for frame-based operations that take place in [method Node._process], rather than [method Node._physics_process]. Examples include [Camera3D]s focusing on a node, or finding where to fire lasers from on a frame rather than physics tick. + [b]Note:[/b] This function creates an interpolation pump on the [Node3D] the first time it is called, which can respond to physics interpolation resets. If you get problems with "streaking" when initially following a [Node3D], be sure to call [method get_global_transform_interpolated] at least once [i]before[/i] resetting the [Node3D] physics interpolation. + </description> + </method> <method name="get_parent_node_3d" qualifiers="const"> <return type="Node3D" /> <description> diff --git a/doc/classes/Polygon2D.xml b/doc/classes/Polygon2D.xml index 90d3522002..4e9208d9bb 100644 --- a/doc/classes/Polygon2D.xml +++ b/doc/classes/Polygon2D.xml @@ -71,9 +71,6 @@ <member name="antialiased" type="bool" setter="set_antialiased" getter="get_antialiased" default="false"> If [code]true[/code], polygon edges will be anti-aliased. </member> - <member name="bones" type="Array" setter="_set_bones" getter="_get_bones" default="[]"> - Internal list of [Bone2D] nodes used by the assigned [member skeleton]. Edited using the Polygon2D editor ("UV" button on the top toolbar). - </member> <member name="color" type="Color" setter="set_color" getter="get_color" default="Color(1, 1, 1, 1)" keywords="colour"> The polygon's fill color. If [member texture] is set, it will be multiplied by this color. It will also be the default color for vertices not set in [member vertex_colors]. </member> diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index b20b374382..8d567f347a 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -630,6 +630,10 @@ <member name="debug/settings/gdscript/max_call_stack" type="int" setter="" getter="" default="1024"> Maximum call stack allowed for debugging GDScript. </member> + <member name="debug/settings/physics_interpolation/enable_warnings" type="bool" setter="" getter="" default="true"> + If [code]true[/code], enables warnings which can help pinpoint where nodes are being incorrectly updated, which will result in incorrect interpolation and visual glitches. + When a node is being interpolated, it is essential that the transform is set during [method Node._physics_process] (during a physics tick) rather than [method Node._process] (during a frame). + </member> <member name="debug/settings/profiler/max_functions" type="int" setter="" getter="" default="16384"> Maximum number of functions per frame allowed when profiling. </member> @@ -1000,7 +1004,7 @@ prime-run %command% [/codeblock] </member> - <member name="editor/script/search_in_file_extensions" type="PackedStringArray" setter="" getter="" default="PackedStringArray("gd", "gdshader")"> + <member name="editor/script/search_in_file_extensions" type="PackedStringArray" setter="" getter=""> Text-based file extensions to include in the script editor's "Find in Files" feature. You can add e.g. [code]tscn[/code] if you wish to also parse your scene files, especially if you use built-in scripts which are serialized in the scene files. </member> <member name="editor/script/templates_search_path" type="String" setter="" getter="" default=""res://script_templates""> @@ -2322,7 +2326,8 @@ </member> <member name="physics/common/physics_jitter_fix" type="float" setter="" getter="" default="0.5"> Controls how much physics ticks are synchronized with real time. For 0 or less, the ticks are synchronized. Such values are recommended for network games, where clock synchronization matters. Higher values cause higher deviation of in-game clock and real clock, but allows smoothing out framerate jitters. The default value of 0.5 should be good enough for most; values above 2 could cause the game to react to dropped frames with a noticeable delay and are not recommended. - [b]Note:[/b] When using a physics interpolation solution (such as enabling [member physics/common/physics_interpolation] or using a custom solution), the physics jitter fix should be disabled by setting [member physics/common/physics_jitter_fix] to [code]0.0[/code]. + [b]Note:[/b] Jitter fix is automatically disabled at runtime when [member physics/common/physics_interpolation] is enabled. + [b]Note:[/b] When using a custom physics interpolation solution, the physics jitter fix should be disabled by setting [member physics/common/physics_jitter_fix] to [code]0.0[/code]. [b]Note:[/b] This property is only read when the project starts. To change the physics jitter fix at runtime, set [member Engine.physics_jitter_fix] instead. </member> <member name="physics/common/physics_ticks_per_second" type="int" setter="" getter="" default="60"> diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml index 3c9f0fc7af..d86b82b72a 100644 --- a/doc/classes/RenderingServer.xml +++ b/doc/classes/RenderingServer.xml @@ -1855,6 +1855,14 @@ Sets the visibility range values for the given geometry instance. Equivalent to [member GeometryInstance3D.visibility_range_begin] and related properties. </description> </method> + <method name="instance_reset_physics_interpolation"> + <return type="void" /> + <param index="0" name="instance" type="RID" /> + <description> + Prevents physics interpolation for the current physics tick. + This is useful when moving an instance to a new location, to give an instantaneous change rather than interpolation from the previous location. + </description> + </method> <method name="instance_set_base"> <return type="void" /> <param index="0" name="instance" type="RID" /> @@ -1896,6 +1904,14 @@ If [code]true[/code], ignores both frustum and occlusion culling on the specified 3D geometry instance. This is not the same as [member GeometryInstance3D.ignore_occlusion_culling], which only ignores occlusion culling and leaves frustum culling intact. </description> </method> + <method name="instance_set_interpolated"> + <return type="void" /> + <param index="0" name="instance" type="RID" /> + <param index="1" name="interpolated" type="bool" /> + <description> + Turns on and off physics interpolation for the instance. + </description> + </method> <method name="instance_set_layer_mask"> <return type="void" /> <param index="0" name="instance" type="RID" /> diff --git a/doc/classes/ResourceImporterDynamicFont.xml b/doc/classes/ResourceImporterDynamicFont.xml index f100670e08..b678a04e34 100644 --- a/doc/classes/ResourceImporterDynamicFont.xml +++ b/doc/classes/ResourceImporterDynamicFont.xml @@ -69,12 +69,13 @@ <member name="script_support" type="Dictionary" setter="" getter="" default="{}"> Override the list of language scripts supported by this font. If left empty, this is supplied by the font metadata. There is usually no need to change this. See also [member language_support]. </member> - <member name="subpixel_positioning" type="int" setter="" getter="" default="1"> + <member name="subpixel_positioning" type="int" setter="" getter="" default="4"> Subpixel positioning improves font rendering appearance, especially at smaller font sizes. The downside is that it takes more time to initially render the font, which can cause stuttering during gameplay, especially if used with large font sizes. This should be set to [b]Disabled[/b] for fonts with a pixel art appearance. [b]Disabled:[/b] No subpixel positioning. Lowest quality, fastest rendering. [b]Auto:[/b] Use subpixel positioning at small font sizes (the chosen quality varies depending on font size). Large fonts will not use subpixel positioning. This is a good tradeoff between performance and quality. [b]One Half of a Pixel:[/b] Always perform intermediate subpixel positioning regardless of font size. High quality, slow rendering. [b]One Quarter of a Pixel:[/b] Always perform precise subpixel positioning regardless of font size. Highest quality, slowest rendering. + [b]Auto (Except Pixel Fonts):[/b] [b]Disabled[/b] for the pixel style fonts (each glyph contours contain only straight horizontal and vertical lines), [b]Auto[/b] for the other fonts. </member> </members> </class> diff --git a/doc/classes/ResourceImporterOBJ.xml b/doc/classes/ResourceImporterOBJ.xml index 55043a311c..a63dddb0e8 100644 --- a/doc/classes/ResourceImporterOBJ.xml +++ b/doc/classes/ResourceImporterOBJ.xml @@ -21,9 +21,6 @@ <member name="offset_mesh" type="Vector3" setter="" getter="" default="Vector3(0, 0, 0)"> Offsets the mesh's data by the specified value. This can be used to work around misaligned meshes without having to modify the source file. </member> - <member name="optimize_mesh" type="bool" setter="" getter="" default="true"> - Unused parameter. This currently has no effect. - </member> <member name="scale_mesh" type="Vector3" setter="" getter="" default="Vector3(1, 1, 1)"> Scales the mesh's data by the specified value. This can be used to work around misscaled meshes without having to modify the source file. </member> diff --git a/doc/classes/ShapeCast2D.xml b/doc/classes/ShapeCast2D.xml index 576bd62cc3..385e3a9285 100644 --- a/doc/classes/ShapeCast2D.xml +++ b/doc/classes/ShapeCast2D.xml @@ -139,7 +139,7 @@ <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="1"> The shape's collision mask. Only objects in at least one collision layer enabled in the mask will be detected. </member> - <member name="collision_result" type="Array" setter="" getter="_get_collision_result" default="[]"> + <member name="collision_result" type="Array" setter="" getter="get_collision_result" default="[]"> Returns the complete collision information from the collision sweep. The data returned is the same as in the [method PhysicsDirectSpaceState2D.get_rest_info] method. </member> <member name="enabled" type="bool" setter="set_enabled" getter="is_enabled" default="true"> diff --git a/doc/classes/ShapeCast3D.xml b/doc/classes/ShapeCast3D.xml index 2c6efe2ebe..f70cf169df 100644 --- a/doc/classes/ShapeCast3D.xml +++ b/doc/classes/ShapeCast3D.xml @@ -146,7 +146,7 @@ <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="1"> The shape's collision mask. Only objects in at least one collision layer enabled in the mask will be detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information. </member> - <member name="collision_result" type="Array" setter="" getter="_get_collision_result" default="[]"> + <member name="collision_result" type="Array" setter="" getter="get_collision_result" default="[]"> Returns the complete collision information from the collision sweep. The data returned is the same as in the [method PhysicsDirectSpaceState3D.get_rest_info] method. </member> <member name="debug_shape_custom_color" type="Color" setter="set_debug_shape_custom_color" getter="get_debug_shape_custom_color" default="Color(0, 0, 0, 1)"> diff --git a/doc/classes/TextServer.xml b/doc/classes/TextServer.xml index 4fa9700f9c..9d476691bf 100644 --- a/doc/classes/TextServer.xml +++ b/doc/classes/TextServer.xml @@ -459,6 +459,13 @@ Returns a string containing all the characters available in the font. </description> </method> + <method name="font_get_supported_glyphs" qualifiers="const"> + <return type="PackedInt32Array" /> + <param index="0" name="font_rid" type="RID" /> + <description> + Returns an array containing all glyph indices in the font. + </description> + </method> <method name="font_get_texture_count" qualifiers="const"> <return type="int" /> <param index="0" name="font_rid" type="RID" /> diff --git a/doc/classes/TextServerExtension.xml b/doc/classes/TextServerExtension.xml index c148cdad52..3c27404f8e 100644 --- a/doc/classes/TextServerExtension.xml +++ b/doc/classes/TextServerExtension.xml @@ -496,6 +496,14 @@ Returns a string containing all the characters available in the font. </description> </method> + <method name="_font_get_supported_glyphs" qualifiers="virtual const"> + <return type="PackedInt32Array" /> + <param index="0" name="font_rid" type="RID" /> + <description> + [b]Required.[/b] + Returns an array containing all glyph indices in the font. + </description> + </method> <method name="_font_get_texture_count" qualifiers="virtual const"> <return type="int" /> <param index="0" name="font_rid" type="RID" /> diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml index d3197efc6b..0995a5a672 100644 --- a/doc/classes/TileMap.xml +++ b/doc/classes/TileMap.xml @@ -256,6 +256,33 @@ Returns a rectangle enclosing the used (non-empty) tiles of the map, including all layers. </description> </method> + <method name="is_cell_flipped_h" qualifiers="const"> + <return type="bool" /> + <param index="0" name="layer" type="int" /> + <param index="1" name="coords" type="Vector2i" /> + <param index="2" name="use_proxies" type="bool" default="false" /> + <description> + Returns [code]true[/code] if the cell on layer [param layer] at coordinates [param coords] is flipped horizontally. The result is valid only for atlas sources. + </description> + </method> + <method name="is_cell_flipped_v" qualifiers="const"> + <return type="bool" /> + <param index="0" name="layer" type="int" /> + <param index="1" name="coords" type="Vector2i" /> + <param index="2" name="use_proxies" type="bool" default="false" /> + <description> + Returns [code]true[/code] if the cell on layer [param layer] at coordinates [param coords] is flipped vertically. The result is valid only for atlas sources. + </description> + </method> + <method name="is_cell_transposed" qualifiers="const"> + <return type="bool" /> + <param index="0" name="layer" type="int" /> + <param index="1" name="coords" type="Vector2i" /> + <param index="2" name="use_proxies" type="bool" default="false" /> + <description> + Returns [code]true[/code] if the cell on layer [param layer] at coordinates [param coords] is transposed. The result is valid only for atlas sources. + </description> + </method> <method name="is_layer_enabled" qualifiers="const"> <return type="bool" /> <param index="0" name="layer" type="int" /> diff --git a/doc/classes/TileMapLayer.xml b/doc/classes/TileMapLayer.xml index b9acef2095..bead1c32c0 100644 --- a/doc/classes/TileMapLayer.xml +++ b/doc/classes/TileMapLayer.xml @@ -153,6 +153,27 @@ Returns whether the provided [param body] [RID] belongs to one of this [TileMapLayer]'s cells. </description> </method> + <method name="is_cell_flipped_h" qualifiers="const"> + <return type="bool" /> + <param index="0" name="coords" type="Vector2i" /> + <description> + Returns [code]true[/code] if the cell at coordinates [param coords] is flipped horizontally. The result is valid only for atlas sources. + </description> + </method> + <method name="is_cell_flipped_v" qualifiers="const"> + <return type="bool" /> + <param index="0" name="coords" type="Vector2i" /> + <description> + Returns [code]true[/code] if the cell at coordinates [param coords] is flipped vertically. The result is valid only for atlas sources. + </description> + </method> + <method name="is_cell_transposed" qualifiers="const"> + <return type="bool" /> + <param index="0" name="coords" type="Vector2i" /> + <description> + Returns [code]true[/code] if the cell at coordinates [param coords] is transposed. The result is valid only for atlas sources. + </description> + </method> <method name="local_to_map" qualifiers="const"> <return type="Vector2i" /> <param index="0" name="local_position" type="Vector2" /> diff --git a/doc/classes/Timer.xml b/doc/classes/Timer.xml index 9de1e09273..f8f9393847 100644 --- a/doc/classes/Timer.xml +++ b/doc/classes/Timer.xml @@ -28,7 +28,7 @@ <return type="void" /> <param index="0" name="time_sec" type="float" default="-1" /> <description> - Starts the timer, if it was not started already. Fails if the timer is not inside the tree. If [param time_sec] is greater than [code]0[/code], this value is used for the [member wait_time]. + Starts the timer, or resets the timer if it was started already. Fails if the timer is not inside the tree. If [param time_sec] is greater than [code]0[/code], this value is used for the [member wait_time]. [b]Note:[/b] This method does not resume a paused timer. See [member paused]. </description> </method> diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml index b288ee7ff6..f57185ae87 100644 --- a/doc/classes/Viewport.xml +++ b/doc/classes/Viewport.xml @@ -301,6 +301,7 @@ <member name="own_world_3d" type="bool" setter="set_use_own_world_3d" getter="is_using_own_world_3d" default="false"> If [code]true[/code], the viewport will use a unique copy of the [World3D] defined in [member world_3d]. </member> + <member name="physics_interpolation_mode" type="int" setter="set_physics_interpolation_mode" getter="get_physics_interpolation_mode" overrides="Node" enum="Node.PhysicsInterpolationMode" default="1" /> <member name="physics_object_picking" type="bool" setter="set_physics_object_picking" getter="get_physics_object_picking" default="false"> If [code]true[/code], the objects rendered by viewport become subjects of mouse picking process. [b]Note:[/b] The number of simultaneously pickable objects is limited to 64 and they are selected in a non-deterministic order, which can be different in each picking process. diff --git a/doc/translations/de.po b/doc/translations/de.po index 901689d45d..2a24be1d56 100644 --- a/doc/translations/de.po +++ b/doc/translations/de.po @@ -92,13 +92,14 @@ # dass2608 <jarvisseekamp@gmail.com>, 2024. # Random Person Games <ranpergames@gmail.com>, 2024. # thereisno anderson <thereisnoanderson@users.noreply.hosted.weblate.org>, 2024. +# Johannes Oskar Silvennoinen <johannes.silvennoinen44@gmail.com>, 2024. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2024-08-05 14:04+0000\n" -"Last-Translator: thereisno anderson <thereisnoanderson@users.noreply.hosted." -"weblate.org>\n" +"PO-Revision-Date: 2024-08-13 23:09+0000\n" +"Last-Translator: Johannes Oskar Silvennoinen <johannes.silvennoinen44@gmail." +"com>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/godot-" "class-reference/de/>\n" "Language: de\n" @@ -9111,6 +9112,22 @@ msgid "Sets the value of an existing key." msgstr "Setzt den Wert eines vorhandenen Schlüssels." msgid "" +"Sets the path of a track. Paths must be valid scene-tree paths to a node and " +"must be specified starting from the [member AnimationMixer.root_node] that " +"will reproduce the animation. Tracks that control properties or bones must " +"append their name after the path, separated by [code]\":\"[/code].\n" +"For example, [code]\"character/skeleton:ankle\"[/code] or [code]\"character/" +"mesh:transform/local\"[/code]." +msgstr "" +"Legt den Pfad einer Spur fest. Pfade müssen gültige scene-tree zu einem " +"Knoten sein und müssen ausgehend vom [member AnimationMixer.root_node], der " +"die Animation wiedergeben wird, angegeben werden. Spuren, die Eigenschaften " +"oder Bones steuern, müssen ihren Namen nach dem Pfad anhängen, getrennt durch " +"[code]\":\"[/code].\n" +"Beispiel: [code]\"character/skeleton:ankle\"[/code] oder [code]\"character/" +"mesh:transform/local\"[/code]." + +msgid "" "Swaps the track [param track_idx]'s index position with the track [param " "with_idx]." msgstr "" @@ -9154,6 +9171,16 @@ msgstr "" "diese vor oder nach dem Ende liegen kann, um eine korrekte Interpolation und " "Schleifenbildung zu gewährleisten." +msgid "" +"Determines the behavior of both ends of the animation timeline during " +"animation playback. This is used for correct interpolation of animation " +"cycles, and for hinting the player that it must restart the animation." +msgstr "" +"Bestimmt das Verhalten beider Enden der Animationszeitachse während der " +"Animationswiedergabe. Dies wird verwendet, um Animationszyklen korrekt zu " +"interpolieren und dem Spieler mitzuteilen, dass er die Animation neu starten " +"muss." + msgid "The animation step value." msgstr "Der Animationsschrittwert." @@ -9244,10 +9271,25 @@ msgstr "" "[b]Hinweis:[/b] Der Ergebniswert ist immer normalisiert und stimmt " "möglicherweise nicht mit dem Schlüsselwert überein." +msgid "Update between keyframes and hold the value." +msgstr "Aktualisiert zwischen Keyframes und behalten ihren Wert." + msgid "Update at the keyframes." msgstr "Aktualisierung an den Keyframes." msgid "" +"Same as [constant UPDATE_CONTINUOUS] but works as a flag to capture the value " +"of the current object and perform interpolation in some methods. See also " +"[method AnimationMixer.capture], [member AnimationPlayer." +"playback_auto_capture], and [method AnimationPlayer.play_with_capture]." +msgstr "" +"Identisch mit [Konstante UPDATE_CONTINUOUS], fungiert jedoch als Flag, um den " +"Wert des aktuellen Objekts zu erfassen und in einigen Methoden eine " +"Interpolation durchzuführen. Siehe auch [Methode AnimationMixer.capture], " +"[Member AnimationPlayer.playback_auto_capture] und [Methode AnimationPlayer." +"play_with_capture]." + +msgid "" "At both ends of the animation, the animation will be repeated without " "changing the playback direction." msgstr "" diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po index 15696a06b9..103afadbf1 100644 --- a/doc/translations/zh_CN.po +++ b/doc/translations/zh_CN.po @@ -94,7 +94,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2024-08-01 13:06+0000\n" +"PO-Revision-Date: 2024-08-13 23:09+0000\n" "Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot-class-reference/zh_Hans/>\n" @@ -8611,6 +8611,9 @@ msgstr "" "于播放和混合的常用属性和方法。\n" "在扩展后的类中实例化播放信息数据后,就会由 [AnimationMixer] 负责处理混合。" +msgid "Migrating Animations from Godot 4.0 to 4.3" +msgstr "将动画从 Godot 4.0 迁移到 4.3" + msgid "A virtual function for processing after getting a key during playback." msgstr "虚函数,用于播放期间在获取关键帧之后的处理。" @@ -8697,6 +8700,82 @@ msgid "Returns the list of stored animation keys." msgstr "返回存储的动画键列表。" msgid "" +"Retrieve the motion delta of position with the [member root_motion_track] as " +"a [Vector3] that can be used elsewhere.\n" +"If [member root_motion_track] is not a path to a track of type [constant " +"Animation.TYPE_POSITION_3D], returns [code]Vector3(0, 0, 0)[/code].\n" +"See also [member root_motion_track] and [RootMotionView].\n" +"The most basic example is applying position to [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_rotation: Quaternion\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_rotation = get_quaternion()\n" +" state_machine.travel(\"Animate\")\n" +" var velocity: Vector3 = current_rotation * animation_tree." +"get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"By using this in combination with [method " +"get_root_motion_rotation_accumulator], you can apply the root motion position " +"more correctly to account for the rotation of the node.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +" var velocity: Vector3 = (animation_tree." +"get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * " +"animation_tree.get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"将具有 [member root_motion_track] 的位置的运动增量,检索为一个可以在其他地方使" +"用的 [Vector3]。\n" +"如果 [member root_motion_track] 不是 [constant Animation.TYPE_POSITION_3D] 类" +"型轨道的路径,则返回 [code]Vector3(0, 0, 0)[/code]。\n" +"另见 [member root_motion_track] 和 [RootMotionView]。\n" +"最基本的示例是将位置应用于 [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_rotation: Quaternion\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_rotation = get_quaternion()\n" +" state_machine.travel(\"Animate\")\n" +" var velocity: Vector3 = current_rotation * animation_tree." +"get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"通过将其与 [method get_root_motion_rotation_accumulator] 结合使用,你可以更正" +"确地应用根运动位置来考虑节点的旋转。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +" var velocity: Vector3 = (animation_tree." +"get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * " +"animation_tree.get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" "Retrieve the blended value of the position tracks with the [member " "root_motion_track] as a [Vector3] that can be used elsewhere.\n" "This is useful in cases where you want to respect the initial key values of " @@ -9487,6 +9566,20 @@ msgid "" msgstr "" "作为输出使用的动画。它是 [member AnimationTree.anim_player] 提供的动画之一。" +msgid "" +"If [member use_custom_timeline] is [code]true[/code], override the loop " +"settings of the original [Animation] resource with the value.\n" +"[b]Note:[/b] If the [member Animation.loop_mode] isn't set to looping, the " +"[method Animation.track_set_interpolation_loop_wrap] option will not be " +"respected. If you cannot get the expected behavior, consider duplicating the " +"[Animation] resource and changing the loop settings." +msgstr "" +"如果 [member use_custom_timeline] 为 [code]true[/code],则会用该值覆盖原始 " +"[Animation] 资源的循环设置。\n" +"[b]注意:[/b]如果 [member Animation.loop_mode] 未设置为循环,就不会遵守 " +"[method Animation.track_set_interpolation_loop_wrap] 选项。如果无法得到想要的" +"行为,请考虑制作 [Animation] 资源的副本并修改其循环设置。" + msgid "Determines the playback direction of the animation." msgstr "确定动画的播放方向。" @@ -17064,6 +17157,22 @@ msgid "A node for audio playback." msgstr "用于播放音频的节点。" msgid "" +"The [AudioStreamPlayer] node plays an audio stream non-positionally. It is " +"ideal for user interfaces, menus, or background music.\n" +"To use this node, [member stream] needs to be set to a valid [AudioStream] " +"resource. Playing more than one sound at the same time is also supported, see " +"[member max_polyphony].\n" +"If you need to play audio at a specific position, use [AudioStreamPlayer2D] " +"or [AudioStreamPlayer3D] instead." +msgstr "" +"[AudioStreamPlayer] 节点能够播放音频流,播放的效果与位置无关,是用户界面、菜" +"单、背景音乐的理想选择。\n" +"使用该节点时,需要将 [member stream] 设为有效的 [AudioStream] 资源。此外,还支" +"持同时播放多个声音,见 [member max_polyphony]。\n" +"如果你需要在特定的位置播放音频,请改用 [AudioStreamPlayer2D] 或 " +"[AudioStreamPlayer3D]。" + +msgid "" "Returns the position in the [AudioStream] of the latest sound, in seconds. " "Returns [code]0.0[/code] if no sounds are playing.\n" "[b]Note:[/b] The position is not always accurate, as the [AudioServer] does " @@ -17684,6 +17793,9 @@ msgstr "设置同步音频流的音量,使用索引号指定。" msgid "Set the total amount of streams that will be played back synchronized." msgstr "设置同步播放的音频流的总数。" +msgid "Maximum amount of streams that can be synchronized." +msgstr "可以同步播放的音频流的最大数量。" + msgid "Stores audio data loaded from WAV files." msgstr "存储从 WAV 文件加载的音频数据。" @@ -28769,6 +28881,19 @@ msgid "This resource allows for creating a custom rendering effect." msgstr "用于创建自定义渲染效果的资源。" msgid "" +"This resource defines a custom rendering effect that can be applied to " +"[Viewport]s through the viewports' [Environment]. You can implement a " +"callback that is called during rendering at a given stage of the rendering " +"pipeline and allows you to insert additional passes. Note that this callback " +"happens on the rendering thread. CompositorEffect is an abstract base class " +"and must be extended to implement specific rendering logic." +msgstr "" +"这种资源定义的是自定义渲染效果,可以通过视口的 [Environment] 应用到 " +"[Viewport] 上。可以实现在渲染管道的给定阶段进行渲染期间调用的回调,并允许插入" +"其他阶段。请注意,该回调是在渲染线程上执行的。CompositorEffect 是抽象基类,实" +"现特定的渲染逻辑必须对该类进行扩展。" + +msgid "" "Implement this function with your custom rendering code. [param " "effect_callback_type] should always match the effect callback type you've " "specified in [member effect_callback_type]. [param render_data] provides " @@ -35858,6 +35983,36 @@ msgstr "" "覆盖,具体取决于 [param overwrite] 的值,但它们永远不会被合并在一起。" msgid "" +"Returns a copy of this dictionary merged with the other [param dictionary]. " +"By default, duplicate keys are not copied over, unless [param overwrite] is " +"[code]true[/code]. See also [method merge].\n" +"This method is useful for quickly making dictionaries with default values:\n" +"[codeblock]\n" +"var base = { \"fruit\": \"apple\", \"vegetable\": \"potato\" }\n" +"var extra = { \"fruit\": \"orange\", \"dressing\": \"vinegar\" }\n" +"# Prints { \"fruit\": \"orange\", \"vegetable\": \"potato\", \"dressing\": " +"\"vinegar\" }\n" +"print(extra.merged(base))\n" +"# Prints { \"fruit\": \"apple\", \"vegetable\": \"potato\", \"dressing\": " +"\"vinegar\" }\n" +"print(extra.merged(base, true))\n" +"[/codeblock]" +msgstr "" +"返回该字典与 [param dictionary] 合并后的副本。默认情况下不会复制重复的键,除" +"非 [param overwrite] 为 [code]true[/code]。另见 [method merge]。\n" +"该方法可以使用默认值快速制作字典:\n" +"[codeblock]\n" +"var base = { \"fruit\": \"apple\", \"vegetable\": \"potato\" }\n" +"var extra = { \"fruit\": \"orange\", \"dressing\": \"vinegar\" }\n" +"# 输出 { \"fruit\": \"orange\", \"vegetable\": \"potato\", \"dressing\": " +"\"vinegar\" }\n" +"print(extra.merged(base))\n" +"# 输出 { \"fruit\": \"apple\", \"vegetable\": \"potato\", \"dressing\": " +"\"vinegar\" }\n" +"print(extra.merged(base, true))\n" +"[/codeblock]" + +msgid "" "Returns [code]true[/code] if the two dictionaries contain the same keys and " "values, inner [Dictionary] and [Array] keys and values are compared " "recursively." @@ -42103,6 +42258,9 @@ msgstr "表示你的应用是否会将广告数据链接到用户的身份。" msgid "Indicates whether your app uses advertising data for tracking." msgstr "表示你的应用是否会将广告数据用于追踪。" +msgid "Indicates whether your app collects audio data." +msgstr "表示你的应用是否会收集音频数据。" + msgid "" "The reasons your app collects audio data. See [url=https://developer.apple." "com/documentation/bundleresources/privacy_manifest_files/" @@ -42113,6 +42271,12 @@ msgstr "" "documentation/bundleresources/privacy_manifest_files/" "describing_data_use_in_privacy_manifests]描述隐私清单中的数据使用[/url]。" +msgid "Indicates whether your app links audio data to the user's identity." +msgstr "表示你的应用是否会将音频数据链接到用户的身份。" + +msgid "Indicates whether your app uses audio data for tracking." +msgstr "表示你的应用是否会将音频数据用于追踪。" + msgid "Indicates whether your app collects browsing history." msgstr "表示你的应用是否会收集浏览历史。" @@ -44961,6 +45125,258 @@ msgstr "" "在编辑器中注册一个自定义资源导入器。使用该类来解析任何文件,并将其作为新的资源" "类型导入。" +msgid "" +"[EditorImportPlugin]s provide a way to extend the editor's resource import " +"functionality. Use them to import resources from custom files or to provide " +"alternatives to the editor's existing importers.\n" +"EditorImportPlugins work by associating with specific file extensions and a " +"resource type. See [method _get_recognized_extensions] and [method " +"_get_resource_type]. They may optionally specify some import presets that " +"affect the import process. EditorImportPlugins are responsible for creating " +"the resources and saving them in the [code].godot/imported[/code] directory " +"(see [member ProjectSettings.application/config/" +"use_hidden_project_data_directory]).\n" +"Below is an example EditorImportPlugin that imports a [Mesh] from a file with " +"the extension \".special\" or \".spec\":\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends EditorImportPlugin\n" +"\n" +"func _get_importer_name():\n" +" return \"my.special.plugin\"\n" +"\n" +"func _get_visible_name():\n" +" return \"Special Mesh\"\n" +"\n" +"func _get_recognized_extensions():\n" +" return [\"special\", \"spec\"]\n" +"\n" +"func _get_save_extension():\n" +" return \"mesh\"\n" +"\n" +"func _get_resource_type():\n" +" return \"Mesh\"\n" +"\n" +"func _get_preset_count():\n" +" return 1\n" +"\n" +"func _get_preset_name(preset_index):\n" +" return \"Default\"\n" +"\n" +"func _get_import_options(path, preset_index):\n" +" return [{\"name\": \"my_option\", \"default_value\": false}]\n" +"\n" +"func _import(source_file, save_path, options, platform_variants, gen_files):\n" +" var file = FileAccess.open(source_file, FileAccess.READ)\n" +" if file == null:\n" +" return FAILED\n" +" var mesh = ArrayMesh.new()\n" +" # Fill the Mesh with data read in \"file\", left as an exercise to the " +"reader.\n" +"\n" +" var filename = save_path + \".\" + _get_save_extension()\n" +" return ResourceSaver.save(mesh, filename)\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"\n" +"public partial class MySpecialPlugin : EditorImportPlugin\n" +"{\n" +" public override string _GetImporterName()\n" +" {\n" +" return \"my.special.plugin\";\n" +" }\n" +"\n" +" public override string _GetVisibleName()\n" +" {\n" +" return \"Special Mesh\";\n" +" }\n" +"\n" +" public override string[] _GetRecognizedExtensions()\n" +" {\n" +" return new string[] { \"special\", \"spec\" };\n" +" }\n" +"\n" +" public override string _GetSaveExtension()\n" +" {\n" +" return \"mesh\";\n" +" }\n" +"\n" +" public override string _GetResourceType()\n" +" {\n" +" return \"Mesh\";\n" +" }\n" +"\n" +" public override int _GetPresetCount()\n" +" {\n" +" return 1;\n" +" }\n" +"\n" +" public override string _GetPresetName(int presetIndex)\n" +" {\n" +" return \"Default\";\n" +" }\n" +"\n" +" public override Godot.Collections.Array<Godot.Collections.Dictionary> " +"_GetImportOptions(string path, int presetIndex)\n" +" {\n" +" return new Godot.Collections.Array<Godot.Collections.Dictionary>\n" +" {\n" +" new Godot.Collections.Dictionary\n" +" {\n" +" { \"name\", \"myOption\" },\n" +" { \"default_value\", false },\n" +" }\n" +" };\n" +" }\n" +"\n" +" public override Error _Import(string sourceFile, string savePath, Godot." +"Collections.Dictionary options, Godot.Collections.Array<string> " +"platformVariants, Godot.Collections.Array<string> genFiles)\n" +" {\n" +" using var file = FileAccess.Open(sourceFile, FileAccess.ModeFlags." +"Read);\n" +" if (file.GetError() != Error.Ok)\n" +" {\n" +" return Error.Failed;\n" +" }\n" +"\n" +" var mesh = new ArrayMesh();\n" +" // Fill the Mesh with data read in \"file\", left as an exercise to " +"the reader.\n" +" string filename = $\"{savePath}.{_GetSaveExtension()}\";\n" +" return ResourceSaver.Save(mesh, filename);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To use [EditorImportPlugin], register it using the [method EditorPlugin." +"add_import_plugin] method first." +msgstr "" +"[EditorImportPlugin] 提供了一种方法来扩展编辑器的资源导入功能。使用它们从自定" +"义文件中导入资源,或为编辑器的现有导入器提供替代方案。\n" +"EditorImportPlugin 通过与特定的文件扩展名和资源类型相关联来工作。请参见 " +"[method _get_recognized_extensions] 和 [method _get_resource_type]。它们可以选" +"择性地指定一些影响导入过程的导入预设。EditorImportPlugin 负责创建资源并将它们" +"保存在 [code].godot/imported[/code] 目录中(见 [member ProjectSettings." +"application/config/use_hidden_project_data_directory])。\n" +"下面是一个 EditorImportPlugin 的示例,它从扩展名为“.special”或“.spec”的文件中" +"导入 [Mesh]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends EditorImportPlugin\n" +"\n" +"func _get_importer_name():\n" +" return \"my.special.plugin\"\n" +"\n" +"func _get_visible_name():\n" +" return \"Special Mesh\"\n" +"\n" +"func _get_recognized_extensions():\n" +" return [\"special\", \"spec\"]\n" +"\n" +"func _get_save_extension():\n" +" return \"mesh\"\n" +"\n" +"func _get_resource_type():\n" +" return \"Mesh\"\n" +"\n" +"func _get_preset_count():\n" +" return 1\n" +"\n" +"func _get_preset_name(preset_index):\n" +" return \"Default\"\n" +"\n" +"func _get_import_options(path, preset_index):\n" +" return [{\"name\": \"my_option\", \"default_value\": false}]\n" +"\n" +"func _import(source_file, save_path, options, platform_variants, gen_files):\n" +" var file = FileAccess.open(source_file, FileAccess.READ)\n" +" if file == null:\n" +" return FAILED\n" +" var mesh = ArrayMesh.new()\n" +" # 使用从“file”中读取的数据填充 Mesh,留作读者的练习。\n" +"\n" +" var filename = save_path + \".\" + _get_save_extension()\n" +" return ResourceSaver.save(mesh, filename)\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"\n" +"public partial class MySpecialPlugin : EditorImportPlugin\n" +"{\n" +" public override string _GetImporterName()\n" +" {\n" +" return \"my.special.plugin\";\n" +" }\n" +"\n" +" public override string _GetVisibleName()\n" +" {\n" +" return \"Special Mesh\";\n" +" }\n" +"\n" +" public override string[] _GetRecognizedExtensions()\n" +" {\n" +" return new string[] { \"special\", \"spec\" };\n" +" }\n" +"\n" +" public override string _GetSaveExtension()\n" +" {\n" +" return \"mesh\";\n" +" }\n" +"\n" +" public override string _GetResourceType()\n" +" {\n" +" return \"Mesh\";\n" +" }\n" +"\n" +" public override int _GetPresetCount()\n" +" {\n" +" return 1;\n" +" }\n" +"\n" +" public override string _GetPresetName(int presetIndex)\n" +" {\n" +" return \"Default\";\n" +" }\n" +"\n" +" public override Godot.Collections.Array<Godot.Collections.Dictionary> " +"_GetImportOptions(string path, int presetIndex)\n" +" {\n" +" return new Godot.Collections.Array<Godot.Collections.Dictionary>\n" +" {\n" +" new Godot.Collections.Dictionary\n" +" {\n" +" { \"name\", \"myOption\" },\n" +" { \"default_value\", false },\n" +" }\n" +" };\n" +" }\n" +"\n" +" public override Error _Import(string sourceFile, string savePath, Godot." +"Collections.Dictionary options, Godot.Collections.Array<string> " +"platformVariants, Godot.Collections.Array<string> genFiles)\n" +" {\n" +" using var file = FileAccess.Open(sourceFile, FileAccess.ModeFlags." +"Read);\n" +" if (file.GetError() != Error.Ok)\n" +" {\n" +" return Error.Failed;\n" +" }\n" +"\n" +" var mesh = new ArrayMesh();\n" +" // 使用从“file”中读取的数据填充 Mesh,留作读者的练习\n" +" string filename = $\"{savePath}.{_GetSaveExtension()}\";\n" +" return ResourceSaver.Save(mesh, filename);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"要使用 [EditorImportPlugin],请先使用 [method EditorPlugin.add_import_plugin] " +"方法注册它。" + msgid "Import plugins" msgstr "导入插件" @@ -45127,6 +45543,28 @@ msgstr "" "组。\n" "必须重写这个方法才能完成实际的导入工作。参阅本类的描述以了解如何重写该方法。" +msgid "" +"This function can only be called during the [method _import] callback and it " +"allows manually importing resources from it. This is useful when the imported " +"file generates external resources that require importing (as example, " +"images). Custom parameters for the \".import\" file can be passed via the " +"[param custom_options]. Additionally, in cases where multiple importers can " +"handle a file, the [param custom_importer] can be specified to force a " +"specific one. This function performs a resource import and returns " +"immediately with a success or error code. [param generator_parameters] " +"defines optional extra metadata which will be stored as [code skip-" +"lint]generator_parameters[/code] in the [code]remap[/code] section of the " +"[code].import[/code] file, for example to store a md5 hash of the source data." +msgstr "" +"该函数只能在 [method _import] 回调期间调用,它允许从中手动导入资源。当导入的文" +"件生成需要导入的外部资源(例如图像)时,这很有用。“.import”文件的自定义参数可" +"以通过 [param custom_options] 传递。此外,在多个导入器可以处理一个文件的情况" +"下,可以指定 [param custom_importer] 以强制使用某个特定的导入器。该函数会执行" +"一次资源导入并立即返回成功或错误代码。[param generator_parameters] 定义可选的" +"额外元数据,这些元数据将作为 [code skip-lint]generator_parameters[/code] 存储" +"在 [code].import[/code] 文件的 [code]remap[/code] 小节中,例如存储源数据的一" +"个 md5 散列值。" + msgid "A control used to edit properties of an object." msgstr "用于编辑对象属性的控件。" @@ -46546,6 +46984,82 @@ msgstr "" "当用户在项目设置窗口的插件选项卡中启用该 [EditorPlugin] 时,由引擎调用。" msgid "" +"Called by the engine when the 3D editor's viewport is updated. Use the " +"[code]overlay[/code] [Control] for drawing. You can update the viewport " +"manually by calling [method update_overlays].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _forward_3d_draw_over_viewport(overlay):\n" +" # Draw a circle at cursor position.\n" +" overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE)\n" +"\n" +"func _forward_3d_gui_input(camera, event):\n" +" if event is InputEventMouseMotion:\n" +" # Redraw viewport when cursor is moved.\n" +" update_overlays()\n" +" return EditorPlugin.AFTER_GUI_INPUT_STOP\n" +" return EditorPlugin.AFTER_GUI_INPUT_PASS\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Forward3DDrawOverViewport(Control viewportControl)\n" +"{\n" +" // Draw a circle at cursor position.\n" +" viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, " +"Colors.White);\n" +"}\n" +"\n" +"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D " +"viewportCamera, InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseMotion)\n" +" {\n" +" // Redraw viewport when cursor is moved.\n" +" UpdateOverlays();\n" +" return EditorPlugin.AfterGuiInput.Stop;\n" +" }\n" +" return EditorPlugin.AfterGuiInput.Pass;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"当 3D 编辑器的视口更新时由引擎调用。将 [code]overlay[/code] [Control] 用于绘" +"制。可以通过调用 [method update_overlays] 手动更新该视口。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _forward_3d_draw_over_viewport(overlay):\n" +" # 在光标位置画一个圆。\n" +" overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE)\n" +"\n" +"func _forward_3d_gui_input(camera, event):\n" +" if event is InputEventMouseMotion:\n" +" # 当光标被移动时,重绘视口。\n" +" update_overlays()\n" +" return EditorPlugin.AFTER_GUI_INPUT_STOP\n" +" return EditorPlugin.AFTER_GUI_INPUT_PASS\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Forward3DDrawOverViewport(Control viewportControl)\n" +"{\n" +" // 在光标位置画一个圆。\n" +" viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, " +"Colors.White);\n" +"}\n" +"\n" +"public override EditorPlugin.AfterGuiInput _Forward3DGuiInput(Camera3D " +"viewportCamera, InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseMotion)\n" +" {\n" +" // 当光标被移动时,重绘视口。\n" +" UpdateOverlays();\n" +" return EditorPlugin.AfterGuiInput.Stop;\n" +" }\n" +" return EditorPlugin.AfterGuiInput.Pass;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "This method is the same as [method _forward_3d_draw_over_viewport], except it " "draws on top of everything. Useful when you need an extra layer that shows " "over anything else.\n" @@ -50265,6 +50779,30 @@ msgstr "" "code],那么更新旋转图会无视该设置,[i]永远不会[/i]显示。这么做是为了避免与现实" "场景中导致重绘的情况混淆。" +msgid "" +"If [code]true[/code], embed modal windows such as docks inside the main " +"editor window. When single-window mode is enabled, tooltips will also be " +"embedded inside the main editor window, which means they can't be displayed " +"outside of the editor window. Single-window mode can be faster as it does not " +"need to create a separate window for every popup and tooltip, which can be a " +"slow operation depending on the operating system and rendering method in " +"use.\n" +"This is equivalent to [member ProjectSettings.display/window/subwindows/" +"embed_subwindows] in the running project, except the setting's value is " +"inverted.\n" +"[b]Note:[/b] To query whether the editor can use multiple windows in an " +"editor plugin, use [method EditorInterface.is_multi_window_enabled] instead " +"of querying the value of this editor setting." +msgstr "" +"如果为 [code]true[/code],则会在主编辑器窗口中嵌入停靠面板等模态窗口。当启用单" +"窗口模式时,工具提示也会被嵌入到主编辑器窗口中,这意味着它们无法在编辑器窗口之" +"外显示。单窗口模式可能更快,因为无须为每个弹出项和工具提示都创建一个单独的窗" +"口,根据操作系统和所使用的渲染方法的不同,创建窗口可能是很慢的操作。\n" +"等价于项目运行时的 [member ProjectSettings.display/window/subwindows/" +"embed_subwindows],但是取值相反。\n" +"[b]注意:[/b]要查询编辑器是否可以在编辑器插件中使用多个窗口,请使用 [method " +"EditorInterface.is_multi_window_enabled] 而不是查询该编辑器设置的值。" + msgid "Editor UI default layout direction." msgstr "编辑器 UI 默认布局方向。" @@ -57431,6 +57969,45 @@ msgid "Returns list of OpenType features supported by font." msgstr "返回字体支持的 OpenType 特性列表。" msgid "" +"Returns list of supported [url=https://docs.microsoft.com/en-us/typography/" +"opentype/spec/dvaraxisreg]variation coordinates[/url], each coordinate is " +"returned as [code]tag: Vector3i(min_value,max_value,default_value)[/code].\n" +"Font variations allow for continuous change of glyph characteristics along " +"some given design axis, such as weight, width or slant.\n" +"To print available variation axes of a variable font:\n" +"[codeblock]\n" +"var fv = FontVariation.new()\n" +"fv.base_font = load(\"res://RobotoFlex.ttf\")\n" +"var variation_list = fv.get_supported_variation_list()\n" +"for tag in variation_list:\n" +" var name = TextServerManager.get_primary_interface().tag_to_name(tag)\n" +" var values = variation_list[tag]\n" +" print(\"variation axis: %s (%d)\\n\\tmin, max, default: %s\" % [name, " +"tag, values])\n" +"[/codeblock]\n" +"[b]Note:[/b] To set and get variation coordinates of a [FontVariation], use " +"[member FontVariation.variation_opentype]." +msgstr "" +"返回支持的[url=https://docs.microsoft.com/en-us/typography/opentype/spec/" +"dvaraxisreg]变体坐标[/url]列表,坐标以 [code]tag: Vector3i(min_value," +"max_value,default_value)[/code] 的形式返回。\n" +"字体变体能够沿着某个给定的设计轴对字形的特性进行连续的变化,例如字重、宽度、斜" +"度。\n" +"要输出可变字体的可用变体轴:\n" +"[codeblock]\n" +"var fv = FontVariation.new()\n" +"fv.base_font = load(\"res://RobotoFlex.ttf\")\n" +"var variation_list = fv.get_supported_variation_list()\n" +"for tag in variation_list:\n" +" var name = TextServerManager.get_primary_interface().tag_to_name(tag)\n" +" var values = variation_list[tag]\n" +" print(\"变体轴:%s (%d)\\n\\t最小值、最大值、默认值:%s\" % [name, tag, " +"values])\n" +"[/codeblock]\n" +"[b]注意:[/b][FontVariation] 变体坐标的设置和获取请使用 [member FontVariation." +"variation_opentype]。" + +msgid "" "Returns average pixel offset of the underline below the baseline.\n" "[b]Note:[/b] Real underline position of the string is context-dependent and " "can be significantly different from the value returned by this function. Use " @@ -57973,6 +58550,65 @@ msgid "A variation of a font with additional settings." msgstr "字体的变体,提供额外的设置。" msgid "" +"Provides OpenType variations, simulated bold / slant, and additional font " +"settings like OpenType features and extra spacing.\n" +"To use simulated bold font variant:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var fv = FontVariation.new()\n" +"fv.base_font = load(\"res://BarlowCondensed-Regular.ttf\")\n" +"fv.variation_embolden = 1.2\n" +"$Label.add_theme_font_override(\"font\", fv)\n" +"$Label.add_theme_font_size_override(\"font_size\", 64)\n" +"[/gdscript]\n" +"[csharp]\n" +"var fv = new FontVariation();\n" +"fv.SetBaseFont(ResourceLoader.Load<FontFile>(\"res://BarlowCondensed-Regular." +"ttf\"));\n" +"fv.SetVariationEmbolden(1.2);\n" +"GetNode(\"Label\").AddThemeFontOverride(\"font\", fv);\n" +"GetNode(\"Label\").AddThemeFontSizeOverride(\"font_size\", 64);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To set the coordinate of multiple variation axes:\n" +"[codeblock]\n" +"var fv = FontVariation.new();\n" +"var ts = TextServerManager.get_primary_interface()\n" +"fv.base_font = load(\"res://BarlowCondensed-Regular.ttf\")\n" +"fv.variation_opentype = { ts.name_to_tag(\"wght\"): 900, ts." +"name_to_tag(\"custom_hght\"): 900 }\n" +"[/codeblock]" +msgstr "" +"提供 OpenType 变体,模拟的粗体/斜体,以及 OpenType 特性和额外间距等额外的字体" +"设置。\n" +"要使用模拟的粗体变体:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var fv = FontVariation.new()\n" +"fv.base_font = load(\"res://BarlowCondensed-Regular.ttf\")\n" +"fv.variation_embolden = 1.2\n" +"$Label.add_theme_font_override(\"font\", fv)\n" +"$Label.add_theme_font_size_override(\"font_size\", 64)\n" +"[/gdscript]\n" +"[csharp]\n" +"var fv = new FontVariation();\n" +"fv.SetBaseFont(ResourceLoader.Load<FontFile>(\"res://BarlowCondensed-Regular." +"ttf\"));\n" +"fv.SetVariationEmbolden(1.2);\n" +"GetNode(\"Label\").AddThemeFontOverride(\"font\", fv);\n" +"GetNode(\"Label\").AddThemeFontSizeOverride(\"font_size\", 64);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"要设置多个变体轴的坐标:\n" +"[codeblock]\n" +"var fv = FontVariation.new();\n" +"var ts = TextServerManager.get_primary_interface()\n" +"fv.base_font = load(\"res://BarlowCondensed-Regular.ttf\")\n" +"fv.variation_opentype = { ts.name_to_tag(\"wght\"): 900, ts." +"name_to_tag(\"custom_hght\"): 900 }\n" +"[/codeblock]" + +msgid "" "Base font used to create a variation. If not set, default [Theme] font is " "used." msgstr "用于创建变体的基础字体。如果未设置,则使用默认的 [Theme] 字体。" @@ -70895,6 +71531,93 @@ msgid "Helper class for creating and parsing JSON data." msgstr "用于创建和解析 JSON 数据的辅助类。" msgid "" +"The [JSON] class enables all data types to be converted to and from a JSON " +"string. This is useful for serializing data, e.g. to save to a file or send " +"over the network.\n" +"[method stringify] is used to convert any data type into a JSON string.\n" +"[method parse] is used to convert any existing JSON data into a [Variant] " +"that can be used within Godot. If successfully parsed, use [member data] to " +"retrieve the [Variant], and use [code]typeof[/code] to check if the Variant's " +"type is what you expect. JSON Objects are converted into a [Dictionary], but " +"JSON data can be used to store [Array]s, numbers, [String]s and even just a " +"boolean.\n" +"[b]Example[/b]\n" +"[codeblock]\n" +"var data_to_send = [\"a\", \"b\", \"c\"]\n" +"var json_string = JSON.stringify(data_to_send)\n" +"# Save data\n" +"# ...\n" +"# Retrieve data\n" +"var json = JSON.new()\n" +"var error = json.parse(json_string)\n" +"if error == OK:\n" +" var data_received = json.data\n" +" if typeof(data_received) == TYPE_ARRAY:\n" +" print(data_received) # Prints array\n" +" else:\n" +" print(\"Unexpected data\")\n" +"else:\n" +" print(\"JSON Parse Error: \", json.get_error_message(), \" in \", " +"json_string, \" at line \", json.get_error_line())\n" +"[/codeblock]\n" +"Alternatively, you can parse strings using the static [method parse_string] " +"method, but it doesn't handle errors.\n" +"[codeblock]\n" +"var data = JSON.parse_string(json_string) # Returns null if parsing failed.\n" +"[/codeblock]\n" +"[b]Note:[/b] Both parse methods do not fully comply with the JSON " +"specification:\n" +"- Trailing commas in arrays or objects are ignored, instead of causing a " +"parser error.\n" +"- New line and tab characters are accepted in string literals, and are " +"treated like their corresponding escape sequences [code]\\n[/code] and " +"[code]\\t[/code].\n" +"- Numbers are parsed using [method String.to_float] which is generally more " +"lax than the JSON specification.\n" +"- Certain errors, such as invalid Unicode sequences, do not cause a parser " +"error. Instead, the string is cleansed and an error is logged to the console." +msgstr "" +"[JSON] 类允许所有数据类型与 JSON 字符串相互转换。可用于将数据序列化,从而保存" +"到文件或通过网络发送。\n" +"[method stringify] 用于将任何数据类型转换为 JSON 字符串。\n" +"[method parse] 用于将任何现有的 JSON 数据转换为可以在 Godot 中使用的 " +"[Variant]。如果解析成功,使用 [member data] 检索 [Variant],并使用 " +"[code]typeof[/code] 检查 Variant 的类型是否符合你的预期。JSON 对象被转换为 " +"[Dictionary],但 JSON 数据可用于存储 [Array]、数字、[String],甚至只是一个布尔" +"值。\n" +"[b]示例[/b]\n" +"[codeblock]\n" +"var data_to_send = [\"a\", \"b\", \"c\"]\n" +"var json_string = JSON.stringify(data_to_send)\n" +"# 保存数据\n" +"# ...\n" +"# 检索数据\n" +"var json = JSON.new()\n" +"var error = json.parse(json_string)\n" +"if error == OK:\n" +" var data_received = json.data\n" +" if typeof(data_received) == TYPE_ARRAY:\n" +" print(data_received) # 输出 array\n" +" else:\n" +" print(\"Unexpected data\")\n" +"else:\n" +" print(\"JSON Parse Error: \", json.get_error_message(), \" in \", " +"json_string, \" at line \", json.get_error_line())\n" +"[/codeblock]\n" +"你也可以使用静态的 [method parse_string] 方法解析字符串,但该方法不会处理错" +"误。\n" +"[codeblock]\n" +"var data = JSON.parse_string(json_string) # 如果解析失败则返回 null。\n" +"[/codeblock]\n" +"[b]注意:[/b]两种解析方式都不完全符合 JSON 规范:\n" +"- 数组或对象中的尾随逗号将被忽略,而不是引起解析器错误。\n" +"- 换行符和制表符在字符串文字中被接受,并被视为它们相应的转义序列 [code]\\n[/" +"code] 和 [code]\\t[/code]。\n" +"- 使用 [method String.to_float] 解析数字,这通常比 JSON 规范更宽松。\n" +"- 某些错误,例如无效的 Unicode 序列,不会导致解析器错误。相反,该字符串会被清" +"理并将错误记录到控制台。" + +msgid "" "Returns [code]0[/code] if the last call to [method parse] was successful, or " "the line number where the parse failed." msgstr "" @@ -70908,12 +71631,144 @@ msgstr "" "如果上一次调用 [method parse] 成功,则返回空字符串,否则返回失败时的错误消息。" msgid "" +"Return the text parsed by [method parse] (requires passing [code]keep_text[/" +"code] to [method parse])." +msgstr "" +"返回由 [method parse] 解析的文本(要求向 [method parse] 传递 [code]keep_text[/" +"code])。" + +msgid "" +"Attempts to parse the [param json_text] provided.\n" +"Returns an [enum Error]. If the parse was successful, it returns [constant " +"OK] and the result can be retrieved using [member data]. If unsuccessful, use " +"[method get_error_line] and [method get_error_message] to identify the source " +"of the failure.\n" +"Non-static variant of [method parse_string], if you want custom error " +"handling.\n" +"The optional [param keep_text] argument instructs the parser to keep a copy " +"of the original text. This text can be obtained later by using the [method " +"get_parsed_text] function and is used when saving the resource (instead of " +"generating new text from [member data])." +msgstr "" +"尝试解析提供的 [param json_text]。\n" +"返回 [enum Error]。如果解析成功则返回 [constant OK],并且可以使用 [member " +"data] 检索该结果。如果不成功,请使用 [method get_error_line] 和 [method " +"get_error_message] 来识别失败的原因。\n" +"如果想要自定义错误处理,可以使用的 [method parse_string] 的非静态版本。\n" +"可选的 [param keep_text] 参数会让解析器保留原始文本的副本。该文本稍后可以使用 " +"[method get_parsed_text] 函数获取,并在保存资源时使用(而不是从 [member data] " +"生成新文本)。" + +msgid "" "Attempts to parse the [param json_string] provided and returns the parsed " "data. Returns [code]null[/code] if parse failed." msgstr "" "试图解析提供的 [param json_string],并返回解析后的数据。如果解析失败,返回 " "[code]null[/code]。" +msgid "" +"Converts a [Variant] var to JSON text and returns the result. Useful for " +"serializing data to store or send over the network.\n" +"[b]Note:[/b] The JSON specification does not define integer or float types, " +"but only a [i]number[/i] type. Therefore, converting a Variant to JSON text " +"will convert all numerical values to [float] types.\n" +"[b]Note:[/b] If [param full_precision] is [code]true[/code], when " +"stringifying floats, the unreliable digits are stringified in addition to the " +"reliable digits to guarantee exact decoding.\n" +"The [param indent] parameter controls if and how something is indented; its " +"contents will be used where there should be an indent in the output. Even " +"spaces like [code]\" \"[/code] will work. [code]\\t[/code] and [code]\\n[/" +"code] can also be used for a tab indent, or to make a newline for each indent " +"respectively.\n" +"[b]Example output:[/b]\n" +"[codeblock]\n" +"## JSON.stringify(my_dictionary)\n" +"{\"name\":\"my_dictionary\",\"version\":\"1.0.0\",\"entities\":[{\"name\":" +"\"entity_0\",\"value\":\"value_0\"},{\"name\":\"entity_1\",\"value\":" +"\"value_1\"}]}\n" +"\n" +"## JSON.stringify(my_dictionary, \"\\t\")\n" +"{\n" +" \"name\": \"my_dictionary\",\n" +" \"version\": \"1.0.0\",\n" +" \"entities\": [\n" +" {\n" +" \"name\": \"entity_0\",\n" +" \"value\": \"value_0\"\n" +" },\n" +" {\n" +" \"name\": \"entity_1\",\n" +" \"value\": \"value_1\"\n" +" }\n" +" ]\n" +"}\n" +"\n" +"## JSON.stringify(my_dictionary, \"...\")\n" +"{\n" +"...\"name\": \"my_dictionary\",\n" +"...\"version\": \"1.0.0\",\n" +"...\"entities\": [\n" +"......{\n" +".........\"name\": \"entity_0\",\n" +".........\"value\": \"value_0\"\n" +"......},\n" +"......{\n" +".........\"name\": \"entity_1\",\n" +".........\"value\": \"value_1\"\n" +"......}\n" +"...]\n" +"}\n" +"[/codeblock]" +msgstr "" +"将 [Variant] 变量转换为 JSON 文本并返回结果。可用于将数据进行序列化保存或通过" +"网络发送。\n" +"[b]注意:[/b]JSON 规范没有定义整数和浮点数类型,只有一个[i]数字[/i]类型。因" +"此,将 Variant 转换为 JSON 文本会将所有数字值转换为 [float] 类型。\n" +"[b]注意:[/b]如果 [param full_precision] 为 [code]true[/code],则在字符串化浮" +"点数时,除可靠数字外,还将对不可靠数字进行字符串化,以保证准确解码。\n" +"[param indent] 参数控制是否缩进以及如何缩进,输出时应该有缩进的地方会用到它的" +"值。甚至可以使用空格 [code]\" \"[/code] 缩进。[code]\\t[/code] 和 [code]\\n[/" +"code] 可用于制表符缩进,或分别为每个缩进换行。\n" +"[b]示例输出:[/b]\n" +"[codeblock]\n" +"## JSON.stringify(my_dictionary)\n" +"{\"name\":\"my_dictionary\",\"version\":\"1.0.0\",\"entities\":[{\"name\":" +"\"entity_0\",\"value\":\"value_0\"},{\"name\":\"entity_1\",\"value\":" +"\"value_1\"}]}\n" +"\n" +"## JSON.stringify(my_dictionary, \"\\t\")\n" +"{\n" +" \"name\": \"my_dictionary\",\n" +" \"version\": \"1.0.0\",\n" +" \"entities\": [\n" +" {\n" +" \"name\": \"entity_0\",\n" +" \"value\": \"value_0\"\n" +" },\n" +" {\n" +" \"name\": \"entity_1\",\n" +" \"value\": \"value_1\"\n" +" }\n" +" ]\n" +"}\n" +"\n" +"## JSON.stringify(my_dictionary, \"...\")\n" +"{\n" +"...\"name\": \"my_dictionary\",\n" +"...\"version\": \"1.0.0\",\n" +"...\"entities\": [\n" +"......{\n" +".........\"name\": \"entity_0\",\n" +".........\"value\": \"value_0\"\n" +"......},\n" +"......{\n" +".........\"name\": \"entity_1\",\n" +".........\"value\": \"value_1\"\n" +"......}\n" +"...]\n" +"}\n" +"[/codeblock]" + msgid "Contains the parsed JSON data in [Variant] form." msgstr "包含解析到的 JSON 数据,类型为 [Variant]。" @@ -75721,6 +76576,33 @@ msgid "Generic mobile VR implementation." msgstr "通用移动 VR 实现。" msgid "" +"This is a generic mobile VR implementation where you need to provide details " +"about the phone and HMD used. It does not rely on any existing framework. " +"This is the most basic interface we have. For the best effect, you need a " +"mobile phone with a gyroscope and accelerometer.\n" +"Note that even though there is no positional tracking, the camera will assume " +"the headset is at a height of 1.85 meters. You can change this by setting " +"[member eye_height].\n" +"You can initialize this interface as follows:\n" +"[codeblock]\n" +"var interface = XRServer.find_interface(\"Native mobile\")\n" +"if interface and interface.initialize():\n" +" get_viewport().use_xr = true\n" +"[/codeblock]" +msgstr "" +"这是一个通用的移动 VR 实现,你需要提供有关所用手机和 HMD 的详细信息。它不依赖" +"于任何现有框架。这是我们拥有的最基本的接口。为了获得最佳效果,你需要一部带有陀" +"螺仪和加速度计的手机。\n" +"请注意,即使没有位置跟踪,相机也会假定头戴设备处于 1.85 米的高度。可以通过设" +"置 [member eye_height] 来更改该设置。\n" +"可以按如下方式初始化该接口:\n" +"[codeblock]\n" +"var interface = XRServer.find_interface(\"Native mobile\")\n" +"if interface and interface.initialize():\n" +" get_viewport().use_xr = true\n" +"[/codeblock]" + +msgid "" "The distance between the display and the lenses inside of the device in " "centimeters." msgstr "显示器与设备内部镜片之间的距离,单位为厘米。" @@ -76003,6 +76885,48 @@ msgstr "返回指定实例的 [Transform3D]。" msgid "Returns the [Transform2D] of a specific instance." msgstr "返回指定实例的 [Transform2D]。" +msgid "" +"Sets the color of a specific instance by [i]multiplying[/i] the mesh's " +"existing vertex colors. This allows for different color tinting per " +"instance.\n" +"[b]Note:[/b] Each component is stored in 32 bits in the Forward+ and Mobile " +"rendering methods, but is packed into 16 bits in the Compatibility rendering " +"method.\n" +"For the color to take effect, ensure that [member use_colors] is [code]true[/" +"code] on the [MultiMesh] and [member BaseMaterial3D." +"vertex_color_use_as_albedo] is [code]true[/code] on the material. If you " +"intend to set an absolute color instead of tinting, make sure the material's " +"albedo color is set to pure white ([code]Color(1, 1, 1)[/code])." +msgstr "" +"设置一个特定实例的颜色,通过[i]乘以[/i]该网格的现有顶点颜色来设置。这允许每个" +"实例使用不同的颜色。\n" +"[b]注意:[/b]各分量在 Forward+ 和 Mobile 渲染方法中都是使用 32 位存储的,而在 " +"Compatibility 渲染方法中则为 16 位。\n" +"要使颜色生效,请确保该 [MultiMesh] 上的 [member use_colors] 为 [code]true[/" +"code],并且材质上的 [member BaseMaterial3D.vertex_color_use_as_albedo] 为 " +"[code]true[/code]。如果打算设置绝对颜色而不是着色,请确保材质的反照率颜色被设" +"置为纯白色 ([code]Color(1, 1, 1)[/code])。" + +msgid "" +"Sets custom data for a specific instance. [param custom_data] is a [Color] " +"type only to contain 4 floating-point numbers.\n" +"[b]Note:[/b] Each number is stored in 32 bits in the Forward+ and Mobile " +"rendering methods, but is packed into 16 bits in the Compatibility rendering " +"method.\n" +"For the custom data to be used, ensure that [member use_custom_data] is " +"[code]true[/code].\n" +"This custom instance data has to be manually accessed in your custom shader " +"using [code]INSTANCE_CUSTOM[/code]." +msgstr "" +"为特定的实例设置自定义数据。[param custom_data] 是一个 [Color] 类型,仅为了包" +"含 4 个浮点数。\n" +"[b]注意:[/b]各个数字在 Forward+ 和 Mobile 渲染方法中都是使用 32 位存储的,而" +"在 Compatibility 渲染方法中则为 16 位。\n" +"对于要使用的自定义数据,请确保 [member use_custom_data] 为 [code]true[/" +"code]。\n" +"必须使用 [code]INSTANCE_CUSTOM[/code] 在自定义着色器中,手动访问该自定义实例数" +"据。" + msgid "Sets the [Transform3D] for a specific instance." msgstr "为指定实例设置 [Transform3D]。" @@ -86077,6 +87001,114 @@ msgstr "" "[/codeblock]" msgid "" +"Override this method to customize existing properties. Every property info " +"goes through this method, except properties added with [method " +"_get_property_list]. The dictionary contents is the same as in [method " +"_get_property_list].\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends Node\n" +"\n" +"@export var is_number_editable: bool:\n" +" set(value):\n" +" is_number_editable = value\n" +" notify_property_list_changed()\n" +"@export var number: int\n" +"\n" +"func _validate_property(property: Dictionary):\n" +" if property.name == \"number\" and not is_number_editable:\n" +" property.usage |= PROPERTY_USAGE_READ_ONLY\n" +"[/gdscript]\n" +"[csharp]\n" +"[Tool]\n" +"public partial class MyNode : Node\n" +"{\n" +" private bool _isNumberEditable;\n" +"\n" +" [Export]\n" +" public bool IsNumberEditable\n" +" {\n" +" get => _isNumberEditable;\n" +" set\n" +" {\n" +" _isNumberEditable = value;\n" +" NotifyPropertyListChanged();\n" +" }\n" +" }\n" +"\n" +" [Export]\n" +" public int Number { get; set; }\n" +"\n" +" public override void _ValidateProperty(Godot.Collections.Dictionary " +"property)\n" +" {\n" +" if (property[\"name\"].AsStringName() == PropertyName.Number && !" +"IsNumberEditable)\n" +" {\n" +" var usage = property[\"usage\"].As<PropertyUsageFlags>() | " +"PropertyUsageFlags.ReadOnly;\n" +" property[\"usage\"] = (int)usage;\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"覆盖该方法以自定义已有属性。除了使用 [method _get_property_list] 添加的属性之" +"外,每个属性信息都经过该方法。字典内容与 [method _get_property_list] 中的相" +"同。\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends Node\n" +"\n" +"@export var is_number_editable: bool:\n" +" set(value):\n" +" is_number_editable = value\n" +" notify_property_list_changed()\n" +"@export var number: int\n" +"\n" +"func _validate_property(property: Dictionary):\n" +" if property.name == \"number\" and not is_number_editable:\n" +" property.usage |= PROPERTY_USAGE_READ_ONLY\n" +"[/gdscript]\n" +"[csharp]\n" +"[Tool]\n" +"public partial class MyNode : Node\n" +"{\n" +" private bool _isNumberEditable;\n" +"\n" +" [Export]\n" +" public bool IsNumberEditable\n" +" {\n" +" get => _isNumberEditable;\n" +" set\n" +" {\n" +" _isNumberEditable = value;\n" +" NotifyPropertyListChanged();\n" +" }\n" +" }\n" +"\n" +" [Export]\n" +" public int Number { get; set; }\n" +"\n" +" public override void _ValidateProperty(Godot.Collections.Dictionary " +"property)\n" +" {\n" +" if (property[\"name\"].AsStringName() == PropertyName.Number && !" +"IsNumberEditable)\n" +" {\n" +" var usage = property[\"usage\"].As<PropertyUsageFlags>() | " +"PropertyUsageFlags.ReadOnly;\n" +" property[\"usage\"] = (int)usage;\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Adds a user-defined [param signal]. Optional arguments for the signal can be " "added as an [Array] of dictionaries, each defining a [code]name[/code] " "[String] and a [code]type[/code] [int] (see [enum Variant.Type]). See also " @@ -88883,6 +89915,13 @@ msgstr "通知我们的 OpenXR 实例正在退出。" msgid "Informs the user queued a recenter of the player position." msgstr "通知用户队列玩家位置的重新居中。" +msgid "" +"Informs the user the HMD refresh rate has changed.\n" +"[b]Note:[/b] Only emitted if XR runtime supports the refresh rate extension." +msgstr "" +"通知用户 HMD 刷新率发生了变化。\n" +"[b]注意:[/b]仅在 XR 运行时支持刷新率扩展时发出。" + msgid "Informs our OpenXR session has been started." msgstr "通知我们的 OpenXR 会话已经开始。" @@ -105304,6 +106343,26 @@ msgstr "" "义的基础视口大小一致,避免这种情况的发生。" msgid "" +"If [code]true[/code], subwindows are embedded in the main window (this is " +"also called single-window mode). Single-window mode can be faster as it does " +"not need to create a separate window for every popup and tooltip, which can " +"be a slow operation depending on the operating system and rendering method in " +"use.\n" +"If [code]false[/code], subwindows are created as separate windows (this is " +"also called multi-window mode). This allows them to be moved outside the main " +"window and use native operating system window decorations.\n" +"This is equivalent to [member EditorSettings.interface/editor/" +"single_window_mode] in the editor, except the setting's value is inverted." +msgstr "" +"如果为 [code]true[/code],则会将子窗口嵌入到主窗口中(也称为单窗口模式)。单窗" +"口模式可能更快,因为无须为每个弹出项和工具提示都创建一个单独的窗口,根据操作系" +"统和所使用的渲染方法的不同,创建窗口可能是很慢的操作。\n" +"如果为 [code]false[/code],则会为子窗口会创建单独的窗口(也称为多窗口模式)。" +"该模式下能够将子窗口移动到主窗口之外,使用的也是操作系统窗口的装饰。\n" +"等价于编辑器中的 [member EditorSettings.interface/editor/single_window_mode]," +"但是取值相反。" + +msgid "" "Sets the V-Sync mode for the main game window. The editor's own V-Sync mode " "can be set using [member EditorSettings.interface/editor/vsync_mode].\n" "See [enum DisplayServer.VSyncMode] for possible values and how they affect " @@ -126044,6 +127103,32 @@ msgstr "" "polycount.com/wiki/Normal_Map_Technical_Details]这里[/url]找到。" msgid "" +"An alternative to fixing darkened borders with [member process/" +"fix_alpha_border] is to use premultiplied alpha. By enabling this option, the " +"texture will be converted to this format. A premultiplied alpha texture " +"requires specific materials to be displayed correctly:\n" +"- In 2D, a [CanvasItemMaterial] will need to be created and configured to use " +"the [constant CanvasItemMaterial.BLEND_MODE_PREMULT_ALPHA] blend mode on " +"[CanvasItem]s that use this texture. In custom [code]@canvas_item[/code] " +"shaders, [code]render_mode blend_premul_alpha;[/code] should be used.\n" +"- In 3D, a [BaseMaterial3D] will need to be created and configured to use the " +"[constant BaseMaterial3D.BLEND_MODE_PREMULT_ALPHA] blend mode on materials " +"that use this texture. In custom [code]spatial[/code] shaders, " +"[code]render_mode blend_premul_alpha;[/code] should be used." +msgstr "" +"使用 [member process/fix_alpha_border] 修复黑色边框的另一种方法是使用预乘 " +"Alpha。通过启用该选项,纹理将被转换为该格式。预乘 Alpha 纹理需要特定材质才能正" +"确显示:\n" +"- 在 2D 中,需要创建并配置 [CanvasItemMaterial],以便在使用该纹理的 " +"[CanvasItem] 上使用 [constant CanvasItemMaterial.BLEND_MODE_PREMULT_ALPHA] 混" +"合模式。在自定义 [code]@canvas_item[/code] 着色器中应使用 [code]render_mode " +"blend_premul_alpha;[/code]。\n" +"- 在 3D 中,需要创建并配置 [BaseMaterial3D],以便在使用该纹理的材质上使用 " +"[constant BaseMaterial3D.BLEND_MODE_PREMULT_ALPHA] 混合模式。在自定义 " +"[code]spatial[/code] 着色器中应使用 [code]render_mode blend_premul_alpha;[/" +"code]。" + +msgid "" "If set to a value greater than [code]0[/code], the size of the texture is " "limited on import to a value smaller than or equal to the value specified " "here. For non-square textures, the size limit affects the longer dimension, " @@ -132849,6 +133934,21 @@ msgid "A Node that may modify Skeleton3D's bone." msgstr "能够对 Skeleton3D 中的骨骼进行修改的节点。" msgid "" +"[SkeletonModifier3D] retrieves a target [Skeleton3D] by having a [Skeleton3D] " +"parent.\n" +"If there is [AnimationMixer], modification always performs after playback " +"process of the [AnimationMixer].\n" +"This node should be used to implement custom IK solvers, constraints, or " +"skeleton physics." +msgstr "" +"[SkeletonModifier3D] 会将父级 [Skeleton3D] 节点作为目标 [Skeleton3D]。\n" +"如果存在 [AnimationMixer],则修改会在 [AnimationMixer] 的播放处理后执行。\n" +"该节点应该用于实现自定义 IK 解算器、约束、骨架物理。" + +msgid "Design of the Skeleton Modifier 3D" +msgstr "3D 骨架修改器的设计" + +msgid "" "Override this virtual method to implement a custom skeleton modifier. You " "should do things like get the [Skeleton3D]'s current pose and apply the pose " "here.\n" @@ -146345,6 +147445,16 @@ msgstr "该图块的排序索引,相对于 [TileMap]。" msgid "Emitted when any of the properties are changed." msgstr "任何属性发生变化时发出。" +msgid "" +"Use multiple [TileMapLayer] nodes instead. To convert a TileMap to a set of " +"TileMapLayer nodes, open the TileMap bottom panel with the node selected, " +"click the toolbox icon in the top-right corner and choose 'Extract TileMap " +"layers as individual TileMapLayer nodes'." +msgstr "" +"请改用多个 [TileMapLayer] 节点。将 TileMap 节点转换为多个 TileMapLayer 节点:" +"选中该节点后打开 TileMap 底部面板,点击右上角的工具箱图标,然后选择“将 " +"TileMap 图层提取为独立的 TileMapLayer 节点”。" + msgid "Node for 2D tile-based maps." msgstr "基于 2D 图块的地图节点。" @@ -158339,6 +159449,26 @@ msgid "" msgstr "2D 空间的矩形区域,用于检测其在屏幕上是否可见。" msgid "" +"[VisibleOnScreenNotifier2D] represents a rectangular region of 2D space. When " +"any part of this region becomes visible on screen or in a viewport, it will " +"emit a [signal screen_entered] signal, and likewise it will emit a [signal " +"screen_exited] signal when no part of it remains visible.\n" +"If you want a node to be enabled automatically when this region is visible on " +"screen, use [VisibleOnScreenEnabler2D].\n" +"[b]Note:[/b] [VisibleOnScreenNotifier2D] uses the render culling code to " +"determine whether it's visible on screen, so it won't function unless [member " +"CanvasItem.visible] is set to [code]true[/code]." +msgstr "" +"[VisibleOnScreenNotifier2D] 表示 2D 空间的矩形区块。当该区块的任何部分在屏幕或" +"视口中可见时,它将发出 [signal screen_entered] 信号,同样,当其任何部分都不可" +"见时,它将发出 [signal screen_exited] 信号。\n" +"如果希望当该区块在屏幕上可见时自动启用节点,请使用 " +"[VisibleOnScreenEnabler2D]。\n" +"[b]注意:[/b][VisibleOnScreenNotifier2D] 使用渲染剔除代码来确定它在屏幕上是否" +"可见,因此除非 [member CanvasItem.visible] 被设置为 [code]true[/code],否则它" +"不会起作用。" + +msgid "" "If [code]true[/code], the bounding rectangle is on the screen.\n" "[b]Note:[/b] It takes one frame for the [VisibleOnScreenNotifier2D]'s " "visibility to be determined once added to the scene tree, so this method will " @@ -158364,6 +159494,27 @@ msgid "" msgstr "3D 空间的盒形区块,用于检测其在屏幕上是否可见。" msgid "" +"[VisibleOnScreenNotifier3D] represents a box-shaped region of 3D space. When " +"any part of this region becomes visible on screen or in a [Camera3D]'s view, " +"it will emit a [signal screen_entered] signal, and likewise it will emit a " +"[signal screen_exited] signal when no part of it remains visible.\n" +"If you want a node to be enabled automatically when this region is visible on " +"screen, use [VisibleOnScreenEnabler3D].\n" +"[b]Note:[/b] [VisibleOnScreenNotifier3D] uses an approximate heuristic that " +"doesn't take walls and other occlusion into account, unless occlusion culling " +"is used. It also won't function unless [member Node3D.visible] is set to " +"[code]true[/code]." +msgstr "" +"[VisibleOnScreenNotifier3D] 表示 3D 空间的盒形区块。当该区块的任何部分在屏幕" +"或 [Camera3D] 视图中可见时,它将发出 [signal screen_entered] 信号;同样,当其" +"任何部分都不可见时,它将发出 [signal screen_exited] 信号。\n" +"如果你希望当该区块在屏幕上可见时自动启用节点,请使用 " +"[VisibleOnScreenEnabler3D]。\n" +"[b]注意:[/b][VisibleOnScreenNotifier3D] 使用近似启发式,不考虑墙壁和其他遮" +"挡,除非使用遮挡剔除。除非将 [member Node3D.visible] 设置为 [code]true[/" +"code],否则它也不会起作用。" + +msgid "" "Returns [code]true[/code] if the bounding box is on the screen.\n" "[b]Note:[/b] It takes one frame for the [VisibleOnScreenNotifier3D]'s " "visibility to be assessed once added to the scene tree, so this method will " @@ -163872,6 +165023,34 @@ msgid "Use [method Window.grab_focus] instead." msgstr "请改用 [method Window.grab_focus]。" msgid "" +"Shows the [Window] and makes it transient (see [member transient]). If [param " +"rect] is provided, it will be set as the [Window]'s size. Fails if called on " +"the main window.\n" +"If [member ProjectSettings.display/window/subwindows/embed_subwindows] is " +"[code]true[/code] (single-window mode), [param rect]'s coordinates are global " +"and relative to the main window's top-left corner (excluding window " +"decorations). If [param rect]'s position coordinates are negative, the window " +"will be located outside the main window and may not be visible as a result.\n" +"If [member ProjectSettings.display/window/subwindows/embed_subwindows] is " +"[code]false[/code] (multi-window mode), [param rect]'s coordinates are global " +"and relative to the top-left corner of the leftmost screen. If [param rect]'s " +"position coordinates are negative, the window will be placed at the top-left " +"corner of the screen.\n" +"[b]Note:[/b] [param rect] must be in global coordinates if specified." +msgstr "" +"显示该 [Window] 并将其设置为临时窗口(见 [member transient])。如果提供了 " +"[param rect],则会将其设为 [Window] 的大小。对主窗口调用时会失败。\n" +"如果 [member ProjectSettings.display/window/subwindows/embed_subwindows] 为 " +"[code]true[/code](单窗口模式),[param rect] 使用全局坐标系,相对于主窗口的左" +"上角(不含窗口的装饰)。如果 [param rect] 的位置坐标为负数,则该窗口位于主窗口" +"之外,因此可能不可见。\n" +"如果 [member ProjectSettings.display/window/subwindows/embed_subwindows] 为 " +"[code]false[/code](多窗口模式),[param rect] 使用全局坐标系,相对于最左侧屏" +"幕的左上角。如果 [param rect] 的位置坐标为负数,则该窗口会被放置在该屏幕的左上" +"角。\n" +"[b]注意:[/b]存在相关说明时,[param rect] 必须使用全局坐标。" + +msgid "" "Popups the [Window] at the center of the current screen, with optionally " "given minimum size. If the [Window] is embedded, it will be centered in the " "parent [Viewport] instead.\n" diff --git a/drivers/d3d12/rendering_device_driver_d3d12.cpp b/drivers/d3d12/rendering_device_driver_d3d12.cpp index a33fc977c6..38caff648e 100644 --- a/drivers/d3d12/rendering_device_driver_d3d12.cpp +++ b/drivers/d3d12/rendering_device_driver_d3d12.cpp @@ -2143,33 +2143,59 @@ void RenderingDeviceDriverD3D12::command_pipeline_barrier(CommandBufferID p_cmd_ for (uint32_t i = 0; i < p_texture_barriers.size(); i++) { const TextureBarrier &texture_barrier_rd = p_texture_barriers[i]; const TextureInfo *texture_info = (const TextureInfo *)(texture_barrier_rd.texture.id); + if (texture_info->main_texture) { + texture_info = texture_info->main_texture; + } _rd_stages_and_access_to_d3d12(p_src_stages, texture_barrier_rd.prev_layout, texture_barrier_rd.src_access, texture_barrier_d3d12.SyncBefore, texture_barrier_d3d12.AccessBefore); _rd_stages_and_access_to_d3d12(p_dst_stages, texture_barrier_rd.next_layout, texture_barrier_rd.dst_access, texture_barrier_d3d12.SyncAfter, texture_barrier_d3d12.AccessAfter); texture_barrier_d3d12.LayoutBefore = _rd_texture_layout_to_d3d12_barrier_layout(texture_barrier_rd.prev_layout); texture_barrier_d3d12.LayoutAfter = _rd_texture_layout_to_d3d12_barrier_layout(texture_barrier_rd.next_layout); texture_barrier_d3d12.pResource = texture_info->resource; - texture_barrier_d3d12.Subresources.IndexOrFirstMipLevel = texture_barrier_rd.subresources.base_mipmap; - texture_barrier_d3d12.Subresources.NumMipLevels = texture_barrier_rd.subresources.mipmap_count; - texture_barrier_d3d12.Subresources.FirstArraySlice = texture_barrier_rd.subresources.base_layer; - texture_barrier_d3d12.Subresources.NumArraySlices = texture_barrier_rd.subresources.layer_count; - texture_barrier_d3d12.Subresources.FirstPlane = _compute_plane_slice(texture_info->format, texture_barrier_rd.subresources.aspect); - texture_barrier_d3d12.Subresources.NumPlanes = format_get_plane_count(texture_info->format); + if (texture_barrier_rd.subresources.mipmap_count == texture_info->mipmaps && texture_barrier_rd.subresources.layer_count == texture_info->layers) { + // So, all resources. Then, let's be explicit about it so D3D12 doesn't think + // we are dealing with a subset of subresources. + texture_barrier_d3d12.Subresources.IndexOrFirstMipLevel = 0xffffffff; + texture_barrier_d3d12.Subresources.NumMipLevels = 0; + // Because NumMipLevels == 0, all the other fields are ignored by D3D12. + } else { + texture_barrier_d3d12.Subresources.IndexOrFirstMipLevel = texture_barrier_rd.subresources.base_mipmap; + texture_barrier_d3d12.Subresources.NumMipLevels = texture_barrier_rd.subresources.mipmap_count; + texture_barrier_d3d12.Subresources.FirstArraySlice = texture_barrier_rd.subresources.base_layer; + texture_barrier_d3d12.Subresources.NumArraySlices = texture_barrier_rd.subresources.layer_count; + texture_barrier_d3d12.Subresources.FirstPlane = _compute_plane_slice(texture_info->format, texture_barrier_rd.subresources.aspect); + texture_barrier_d3d12.Subresources.NumPlanes = format_get_plane_count(texture_info->format); + } texture_barrier_d3d12.Flags = (texture_barrier_rd.prev_layout == RDD::TEXTURE_LAYOUT_UNDEFINED) ? D3D12_TEXTURE_BARRIER_FLAG_DISCARD : D3D12_TEXTURE_BARRIER_FLAG_NONE; texture_barriers.push_back(texture_barrier_d3d12); } // Define the barrier groups and execute. + D3D12_BARRIER_GROUP barrier_groups[3] = {}; - barrier_groups[0].Type = D3D12_BARRIER_TYPE_GLOBAL; - barrier_groups[1].Type = D3D12_BARRIER_TYPE_BUFFER; - barrier_groups[2].Type = D3D12_BARRIER_TYPE_TEXTURE; - barrier_groups[0].NumBarriers = global_barriers.size(); - barrier_groups[1].NumBarriers = buffer_barriers.size(); - barrier_groups[2].NumBarriers = texture_barriers.size(); - barrier_groups[0].pGlobalBarriers = global_barriers.ptr(); - barrier_groups[1].pBufferBarriers = buffer_barriers.ptr(); - barrier_groups[2].pTextureBarriers = texture_barriers.ptr(); - cmd_list_7->Barrier(ARRAY_SIZE(barrier_groups), barrier_groups); + uint32_t barrier_groups_count = 0; + + if (!global_barriers.is_empty()) { + D3D12_BARRIER_GROUP &barrier_group = barrier_groups[barrier_groups_count++]; + barrier_group.Type = D3D12_BARRIER_TYPE_GLOBAL; + barrier_group.NumBarriers = global_barriers.size(); + barrier_group.pGlobalBarriers = global_barriers.ptr(); + } + + if (!buffer_barriers.is_empty()) { + D3D12_BARRIER_GROUP &barrier_group = barrier_groups[barrier_groups_count++]; + barrier_group.Type = D3D12_BARRIER_TYPE_BUFFER; + barrier_group.NumBarriers = buffer_barriers.size(); + barrier_group.pBufferBarriers = buffer_barriers.ptr(); + } + + if (!texture_barriers.is_empty()) { + D3D12_BARRIER_GROUP &barrier_group = barrier_groups[barrier_groups_count++]; + barrier_group.Type = D3D12_BARRIER_TYPE_TEXTURE; + barrier_group.NumBarriers = texture_barriers.size(); + barrier_group.pTextureBarriers = texture_barriers.ptr(); + } + + cmd_list_7->Barrier(barrier_groups_count, barrier_groups); } /****************/ diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp index 37e7256d76..19ef3d416c 100644 --- a/drivers/gles3/rasterizer_gles3.cpp +++ b/drivers/gles3/rasterizer_gles3.cpp @@ -62,6 +62,10 @@ #define _EXT_DEBUG_SEVERITY_LOW_ARB 0x9148 #define _EXT_DEBUG_OUTPUT 0x92E0 +#ifndef GL_FRAMEBUFFER_SRGB +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#endif + #ifndef GLAPIENTRY #if defined(WINDOWS_ENABLED) #define GLAPIENTRY APIENTRY @@ -345,6 +349,9 @@ RasterizerGLES3::RasterizerGLES3() { } } + // Disable OpenGL linear to sRGB conversion, because Godot will always do this conversion itself. + glDisable(GL_FRAMEBUFFER_SRGB); + // OpenGL needs to be initialized before initializing the Rasterizers config = memnew(GLES3::Config); utilities = memnew(GLES3::Utilities); diff --git a/drivers/gles3/shader_gles3.cpp b/drivers/gles3/shader_gles3.cpp index 4a15ed827a..5a0f394db0 100644 --- a/drivers/gles3/shader_gles3.cpp +++ b/drivers/gles3/shader_gles3.cpp @@ -698,7 +698,8 @@ void ShaderGLES3::_clear_version(Version *p_version) { void ShaderGLES3::_initialize_version(Version *p_version) { ERR_FAIL_COND(p_version->variants.size() > 0); - if (shader_cache_dir_valid && _load_from_cache(p_version)) { + bool use_cache = shader_cache_dir_valid && !(feedback_count > 0 && GLES3::Config::get_singleton()->disable_transform_feedback_shader_cache); + if (use_cache && _load_from_cache(p_version)) { return; } p_version->variants.reserve(variant_count); @@ -709,7 +710,7 @@ void ShaderGLES3::_initialize_version(Version *p_version) { _compile_specialization(spec, i, p_version, specialization_default_mask); p_version->variants[i].insert(specialization_default_mask, spec); } - if (shader_cache_dir_valid) { + if (use_cache) { _save_to_cache(p_version); } } diff --git a/drivers/gles3/shaders/skeleton.glsl b/drivers/gles3/shaders/skeleton.glsl index aad856a5a2..66befbc3b2 100644 --- a/drivers/gles3/shaders/skeleton.glsl +++ b/drivers/gles3/shaders/skeleton.glsl @@ -59,7 +59,7 @@ layout(location = 10) in highp uvec4 in_bone_attrib; layout(location = 11) in mediump vec4 in_weight_attrib; #endif -uniform mediump sampler2D skeleton_texture; // texunit:0 +uniform highp sampler2D skeleton_texture; // texunit:0 #endif /* clang-format on */ diff --git a/drivers/gles3/storage/config.cpp b/drivers/gles3/storage/config.cpp index a28b050bf8..2b3c19dbb8 100644 --- a/drivers/gles3/storage/config.cpp +++ b/drivers/gles3/storage/config.cpp @@ -218,6 +218,8 @@ Config::Config() { //https://github.com/godotengine/godot/issues/92662#issuecomment-2161199477 //disable_particles_workaround = false; } + } else if (rendering_device_name == "PowerVR Rogue GE8320") { + disable_transform_feedback_shader_cache = true; } } diff --git a/drivers/gles3/storage/config.h b/drivers/gles3/storage/config.h index 0c9f9bc275..ff72fc5b58 100644 --- a/drivers/gles3/storage/config.h +++ b/drivers/gles3/storage/config.h @@ -96,6 +96,9 @@ public: bool disable_particles_workaround = false; // set to 'true' to disable 'GPUParticles' bool flip_xy_workaround = false; + // PowerVR GE 8320 workaround + bool disable_transform_feedback_shader_cache = false; + #ifdef ANDROID_ENABLED PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC eglFramebufferTextureMultiviewOVR = nullptr; PFNGLTEXSTORAGE3DMULTISAMPLEPROC eglTexStorage3DMultisample = nullptr; diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp index 210507c2c6..ea8b42b2e4 100644 --- a/drivers/unix/file_access_unix.cpp +++ b/drivers/unix/file_access_unix.cpp @@ -383,7 +383,7 @@ uint64_t FileAccessUnix::_get_modified_time(const String &p_file) { if (!err) { return status.st_mtime; } else { - print_verbose("Failed to get modified time for: " + p_file + ""); + WARN_PRINT("Failed to get modified time for: " + p_file); return 0; } } diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp index e776291b2d..02a95fd836 100644 --- a/editor/editor_file_system.cpp +++ b/editor/editor_file_system.cpp @@ -1779,7 +1779,9 @@ String EditorFileSystem::_get_global_script_class(const String &p_type, const St void EditorFileSystem::_update_file_icon_path(EditorFileSystemDirectory::FileInfo *file_info) { String icon_path; - if (file_info->script_class_icon_path.is_empty() && !file_info->deps.is_empty()) { + if (file_info->resource_script_class != StringName()) { + icon_path = EditorNode::get_editor_data().script_class_get_icon_path(file_info->resource_script_class); + } else if (file_info->script_class_icon_path.is_empty() && !file_info->deps.is_empty()) { const String &script_dep = file_info->deps[0]; // Assuming the first dependency is a script. const String &script_path = script_dep.contains("::") ? script_dep.get_slice("::", 2) : script_dep; if (!script_path.is_empty()) { @@ -2112,8 +2114,8 @@ void EditorFileSystem::update_files(const Vector<String> &p_script_paths) { } if (!is_scanning()) { _process_update_pending(); - call_deferred(SNAME("emit_signal"), "filesystem_changed"); //update later } + call_deferred(SNAME("emit_signal"), "filesystem_changed"); // Update later } } diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 0956d12236..59c6f8626c 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -440,6 +440,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { #endif EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/font_subpixel_positioning", 1, "Disabled,Auto,One Half of a Pixel,One Quarter of a Pixel") EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/font_disable_embedded_bitmaps", true, ""); + EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/font_allow_msdf", true, "") EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/main_font", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm") EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/main_font_bold", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm") diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index d4bd97a393..b780d42119 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -953,7 +953,8 @@ void FileSystemDock::_update_file_list(bool p_keep_selection) { files->set_max_columns(1); files->set_max_text_lines(1); files->set_fixed_column_width(0); - files->set_fixed_icon_size(Size2()); + const int icon_size = get_theme_constant(SNAME("class_icon_size"), EditorStringName(Editor)); + files->set_fixed_icon_size(Size2(icon_size, icon_size)); } Ref<Texture2D> folder_icon = (use_thumbnails) ? folder_thumbnail : get_theme_icon(SNAME("folder"), SNAME("FileDialog")); diff --git a/editor/gui/editor_spin_slider.cpp b/editor/gui/editor_spin_slider.cpp index 4e8d6d63bf..9f9bdb37b3 100644 --- a/editor/gui/editor_spin_slider.cpp +++ b/editor/gui/editor_spin_slider.cpp @@ -614,13 +614,13 @@ void EditorSpinSlider::_value_focus_exited() { // -> TAB was pressed // -> modal_close was not called // -> need to close/hide manually - if (value_input_closed_frame != Engine::get_singleton()->get_frames_drawn()) { + if (!is_visible_in_tree() || value_input_closed_frame != Engine::get_singleton()->get_frames_drawn()) { + // Hidden or something else took focus. if (value_input_popup) { value_input_popup->hide(); } - //tab was pressed } else { - //enter, click, esc + // Enter or Esc was pressed. grab_focus(); } diff --git a/editor/import/3d/resource_importer_obj.cpp b/editor/import/3d/resource_importer_obj.cpp index 2fbf564ae8..f3770adcb7 100644 --- a/editor/import/3d/resource_importer_obj.cpp +++ b/editor/import/3d/resource_importer_obj.cpp @@ -202,7 +202,7 @@ static Error _parse_material_library(const String &p_path, HashMap<String, Ref<S return OK; } -static Error _parse_obj(const String &p_path, List<Ref<ImporterMesh>> &r_meshes, bool p_single_mesh, bool p_generate_tangents, bool p_optimize, Vector3 p_scale_mesh, Vector3 p_offset_mesh, bool p_disable_compression, List<String> *r_missing_deps) { +static Error _parse_obj(const String &p_path, List<Ref<ImporterMesh>> &r_meshes, bool p_single_mesh, bool p_generate_tangents, Vector3 p_scale_mesh, Vector3 p_offset_mesh, bool p_disable_compression, List<String> *r_missing_deps) { Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ); ERR_FAIL_COND_V_MSG(f.is_null(), ERR_CANT_OPEN, vformat("Couldn't open OBJ file '%s', it may not exist or not be readable.", p_path)); @@ -512,7 +512,7 @@ static Error _parse_obj(const String &p_path, List<Ref<ImporterMesh>> &r_meshes, Node *EditorOBJImporter::import_scene(const String &p_path, uint32_t p_flags, const HashMap<StringName, Variant> &p_options, List<String> *r_missing_deps, Error *r_err) { List<Ref<ImporterMesh>> meshes; - Error err = _parse_obj(p_path, meshes, false, p_flags & IMPORT_GENERATE_TANGENT_ARRAYS, false, Vector3(1, 1, 1), Vector3(0, 0, 0), p_flags & IMPORT_FORCE_DISABLE_MESH_COMPRESSION, r_missing_deps); + Error err = _parse_obj(p_path, meshes, false, p_flags & IMPORT_GENERATE_TANGENT_ARRAYS, Vector3(1, 1, 1), Vector3(0, 0, 0), p_flags & IMPORT_FORCE_DISABLE_MESH_COMPRESSION, r_missing_deps); if (err != OK) { if (r_err) { @@ -583,7 +583,6 @@ void ResourceImporterOBJ::get_import_options(const String &p_path, List<ImportOp r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "generate_tangents"), true)); r_options->push_back(ImportOption(PropertyInfo(Variant::VECTOR3, "scale_mesh"), Vector3(1, 1, 1))); r_options->push_back(ImportOption(PropertyInfo(Variant::VECTOR3, "offset_mesh"), Vector3(0, 0, 0))); - r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "optimize_mesh"), true)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "force_disable_mesh_compression"), false)); } @@ -594,7 +593,7 @@ bool ResourceImporterOBJ::get_option_visibility(const String &p_path, const Stri Error ResourceImporterOBJ::import(const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) { List<Ref<ImporterMesh>> meshes; - Error err = _parse_obj(p_source_file, meshes, true, p_options["generate_tangents"], p_options["optimize_mesh"], p_options["scale_mesh"], p_options["offset_mesh"], p_options["force_disable_mesh_compression"], nullptr); + Error err = _parse_obj(p_source_file, meshes, true, p_options["generate_tangents"], p_options["scale_mesh"], p_options["offset_mesh"], p_options["force_disable_mesh_compression"], nullptr); ERR_FAIL_COND_V(err != OK, err); ERR_FAIL_COND_V(meshes.size() != 1, ERR_BUG); diff --git a/editor/import/3d/resource_importer_scene.cpp b/editor/import/3d/resource_importer_scene.cpp index df4026195c..27b2af8f77 100644 --- a/editor/import/3d/resource_importer_scene.cpp +++ b/editor/import/3d/resource_importer_scene.cpp @@ -2013,6 +2013,7 @@ void ResourceImporterScene::get_internal_import_options(InternalImportCategory p r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "generate/lods", PROPERTY_HINT_ENUM, "Default,Enable,Disable"), 0)); r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "lods/normal_split_angle", PROPERTY_HINT_RANGE, "0,180,0.1,degrees"), 25.0f)); r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "lods/normal_merge_angle", PROPERTY_HINT_RANGE, "0,180,0.1,degrees"), 60.0f)); + r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "lods/raycast_normals", PROPERTY_HINT_NONE, ""), false)); } break; case INTERNAL_IMPORT_CATEGORY_MATERIAL: { r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "use_external/enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), false)); @@ -2440,6 +2441,7 @@ Node *ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_ bool generate_lods = p_generate_lods; float split_angle = 25.0f; float merge_angle = 60.0f; + bool raycast_normals = false; bool create_shadow_meshes = p_create_shadow_meshes; bool bake_lightmaps = p_light_bake_mode == LIGHT_BAKE_STATIC_LIGHTMAPS; String save_to_file; @@ -2494,6 +2496,10 @@ Node *ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_ merge_angle = mesh_settings["lods/normal_merge_angle"]; } + if (mesh_settings.has("lods/raycast_normals")) { + raycast_normals = mesh_settings["lods/raycast_normals"]; + } + if (bool(mesh_settings.get("save_to_file/enabled", false))) { save_to_file = mesh_settings.get("save_to_file/path", String()); if (!save_to_file.is_resource_file()) { @@ -2540,7 +2546,7 @@ Node *ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_ if (generate_lods) { Array skin_pose_transform_array = _get_skinned_pose_transforms(src_mesh_node); - src_mesh_node->get_mesh()->generate_lods(merge_angle, split_angle, skin_pose_transform_array); + src_mesh_node->get_mesh()->generate_lods(merge_angle, split_angle, skin_pose_transform_array, raycast_normals); } if (create_shadow_meshes) { diff --git a/editor/import/3d/scene_import_settings.cpp b/editor/import/3d/scene_import_settings.cpp index 6b741b7dd7..ed3eaa94c1 100644 --- a/editor/import/3d/scene_import_settings.cpp +++ b/editor/import/3d/scene_import_settings.cpp @@ -117,7 +117,9 @@ class SceneImportSettingsData : public Object { ERR_FAIL_NULL(settings); if (r_option.name == "rest_pose/load_pose") { if (!settings->has("rest_pose/load_pose") || int((*settings)["rest_pose/load_pose"]) != 2) { - (*settings)["rest_pose/external_animation_library"] = Variant(); + if (settings->has("rest_pose/external_animation_library")) { + (*settings)["rest_pose/external_animation_library"] = Variant(); + } } } if (r_option.name == "rest_pose/selected_animation") { @@ -134,7 +136,10 @@ class SceneImportSettingsData : public Object { } } break; case 2: { - Object *res = (*settings)["rest_pose/external_animation_library"]; + Object *res = nullptr; + if (settings->has("rest_pose/external_animation_library")) { + res = (*settings)["rest_pose/external_animation_library"]; + } Ref<Animation> anim(res); Ref<AnimationLibrary> library(res); if (anim.is_valid()) { diff --git a/editor/import/resource_importer_dynamic_font.cpp b/editor/import/resource_importer_dynamic_font.cpp index c52f53146e..fa222b2790 100644 --- a/editor/import/resource_importer_dynamic_font.cpp +++ b/editor/import/resource_importer_dynamic_font.cpp @@ -118,7 +118,7 @@ void ResourceImporterDynamicFont::get_import_options(const String &p_path, List< r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "allow_system_fallback"), true)); r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "force_autohinter"), false)); r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "hinting", PROPERTY_HINT_ENUM, "None,Light,Normal"), 1)); - r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "subpixel_positioning", PROPERTY_HINT_ENUM, "Disabled,Auto,One Half of a Pixel,One Quarter of a Pixel"), 1)); + r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "subpixel_positioning", PROPERTY_HINT_ENUM, "Disabled,Auto,One Half of a Pixel,One Quarter of a Pixel,Auto (Except Pixel Fonts)"), 4)); r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "oversampling", PROPERTY_HINT_RANGE, "0,10,0.1"), 0.0)); r_options->push_back(ImportOption(PropertyInfo(Variant::NIL, "Fallbacks", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_GROUP), Variant())); @@ -176,11 +176,44 @@ Error ResourceImporterDynamicFont::import(const String &p_source_file, const Str font->set_fixed_size(0); font->set_force_autohinter(autohinter); font->set_allow_system_fallback(allow_system_fallback); - font->set_subpixel_positioning((TextServer::SubpixelPositioning)subpixel_positioning); font->set_hinting((TextServer::Hinting)hinting); font->set_oversampling(oversampling); font->set_fallbacks(fallbacks); + if (subpixel_positioning == 4 /* Auto (Except Pixel Fonts) */) { + PackedInt32Array glyphs = TS->font_get_supported_glyphs(font->get_rids()[0]); + bool is_pixel = true; + for (int32_t gl : glyphs) { + Dictionary ct = TS->font_get_glyph_contours(font->get_rids()[0], 16, gl); + PackedInt32Array contours = ct["contours"]; + PackedVector3Array points = ct["points"]; + int prev_start = 0; + for (int i = 0; i < contours.size(); i++) { + for (int j = prev_start; j <= contours[i]; j++) { + int next_point = (j < contours[i]) ? (j + 1) : prev_start; + if ((points[j].z != TextServer::CONTOUR_CURVE_TAG_ON) || (!Math::is_equal_approx(points[j].x, points[next_point].x) && !Math::is_equal_approx(points[j].y, points[next_point].y))) { + is_pixel = false; + break; + } + } + prev_start = contours[i] + 1; + if (!is_pixel) { + break; + } + } + if (!is_pixel) { + break; + } + } + if (is_pixel && !glyphs.is_empty()) { + print_line(vformat("%s: Pixel font detected, disabling subpixel positioning.", p_source_file)); + subpixel_positioning = TextServer::SUBPIXEL_POSITIONING_DISABLED; + } else { + subpixel_positioning = TextServer::SUBPIXEL_POSITIONING_AUTO; + } + } + font->set_subpixel_positioning((TextServer::SubpixelPositioning)subpixel_positioning); + Dictionary langs = p_options["language_support"]; for (int i = 0; i < langs.size(); i++) { String key = langs.get_key_at_index(i); diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 59a4ac8075..1df9dae767 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -1064,21 +1064,23 @@ void Node3DEditorViewport::_select_region() { if (found_nodes.has(sp)) { continue; } - found_nodes.insert(sp); Node *node = Object::cast_to<Node>(sp); + + // Selection requires that the node is the edited scene or its descendant, and has an owner. if (node != edited_scene) { + if (!node->get_owner() || !edited_scene->is_ancestor_of(node)) { + continue; + } node = edited_scene->get_deepest_editable_node(node); - } - - // Prevent selection of nodes not owned by the edited scene. - while (node && node != edited_scene->get_parent()) { - Node *node_owner = node->get_owner(); - if (node_owner == edited_scene || node == edited_scene || (node_owner != nullptr && edited_scene->is_editable_instance(node_owner))) { - break; + while (node != edited_scene) { + Node *node_owner = node->get_owner(); + if (node_owner == edited_scene || (node_owner != nullptr && edited_scene->is_editable_instance(node_owner))) { + break; + } + node = node->get_parent(); } - node = node->get_parent(); } // Replace the node by the group if grouped @@ -5001,14 +5003,24 @@ void Node3DEditorViewport::update_transform(bool p_shift) { } break; case TRANSFORM_ROTATE: { - Plane plane = Plane(_get_camera_normal(), _edit.center); + Plane plane; + if (camera->get_projection() == Camera3D::PROJECTION_PERSPECTIVE) { + Vector3 cam_to_obj = _edit.center - _get_camera_position(); + if (!cam_to_obj.is_zero_approx()) { + plane = Plane(cam_to_obj.normalized(), _edit.center); + } else { + plane = Plane(_get_camera_normal(), _edit.center); + } + } else { + plane = Plane(_get_camera_normal(), _edit.center); + } Vector3 local_axis; Vector3 global_axis; switch (_edit.plane) { case TRANSFORM_VIEW: // local_axis unused - global_axis = _get_camera_normal(); + global_axis = plane.normal; break; case TRANSFORM_X_AXIS: local_axis = Vector3(1, 0, 0); @@ -5039,7 +5051,7 @@ void Node3DEditorViewport::update_transform(bool p_shift) { break; } - static const float orthogonal_threshold = Math::cos(Math::deg_to_rad(87.0f)); + static const float orthogonal_threshold = Math::cos(Math::deg_to_rad(85.0f)); bool axis_is_orthogonal = ABS(plane.normal.dot(global_axis)) < orthogonal_threshold; double angle = 0.0f; @@ -7289,9 +7301,15 @@ void Node3DEditor::_init_grid() { bool orthogonal = camera->get_projection() == Camera3D::PROJECTION_ORTHOGONAL; - Vector<Color> grid_colors[3]; - Vector<Vector3> grid_points[3]; - Vector<Vector3> grid_normals[3]; + static LocalVector<Color> grid_colors[3]; + static LocalVector<Vector3> grid_points[3]; + static LocalVector<Vector3> grid_normals[3]; + + for (uint32_t n = 0; n < 3; n++) { + grid_colors[n].clear(); + grid_points[n].clear(); + grid_normals[n].clear(); + } Color primary_grid_color = EDITOR_GET("editors/3d/primary_grid_color"); Color secondary_grid_color = EDITOR_GET("editors/3d/secondary_grid_color"); @@ -7299,9 +7317,9 @@ void Node3DEditor::_init_grid() { int primary_grid_steps = EDITOR_GET("editors/3d/primary_grid_steps"); // Which grid planes are enabled? Which should we generate? - grid_enable[0] = grid_visible[0] = EDITOR_GET("editors/3d/grid_xy_plane"); - grid_enable[1] = grid_visible[1] = EDITOR_GET("editors/3d/grid_yz_plane"); - grid_enable[2] = grid_visible[2] = EDITOR_GET("editors/3d/grid_xz_plane"); + grid_enable[0] = grid_visible[0] = orthogonal || EDITOR_GET("editors/3d/grid_xy_plane"); + grid_enable[1] = grid_visible[1] = orthogonal || EDITOR_GET("editors/3d/grid_yz_plane"); + grid_enable[2] = grid_visible[2] = orthogonal || EDITOR_GET("editors/3d/grid_xz_plane"); // Offsets division_level for bigger or smaller grids. // Default value is -0.2. -1.0 gives Blender-like behavior, 0.5 gives huge grids. @@ -7367,10 +7385,9 @@ void Node3DEditor::_init_grid() { grid_mat[c]->set_shader_parameter("grid_size", grid_fade_size); grid_mat[c]->set_shader_parameter("orthogonal", orthogonal); - // Cache these so we don't have to re-access memory. - Vector<Vector3> &ref_grid = grid_points[c]; - Vector<Vector3> &ref_grid_normals = grid_normals[c]; - Vector<Color> &ref_grid_colors = grid_colors[c]; + LocalVector<Vector3> &ref_grid = grid_points[c]; + LocalVector<Vector3> &ref_grid_normals = grid_normals[c]; + LocalVector<Color> &ref_grid_colors = grid_colors[c]; // Count our elements same as code below it. int expected_size = 0; @@ -7415,12 +7432,12 @@ void Node3DEditor::_init_grid() { line_end[a] = position_a; line_bgn[b] = bgn_b; line_end[b] = end_b; - ref_grid.set(idx, line_bgn); - ref_grid.set(idx + 1, line_end); - ref_grid_colors.set(idx, line_color); - ref_grid_colors.set(idx + 1, line_color); - ref_grid_normals.set(idx, normal); - ref_grid_normals.set(idx + 1, normal); + ref_grid[idx] = line_bgn; + ref_grid[idx + 1] = line_end; + ref_grid_colors[idx] = line_color; + ref_grid_colors[idx + 1] = line_color; + ref_grid_normals[idx] = normal; + ref_grid_normals[idx + 1] = normal; idx += 2; } @@ -7431,12 +7448,12 @@ void Node3DEditor::_init_grid() { line_end[b] = position_b; line_bgn[a] = bgn_a; line_end[a] = end_a; - ref_grid.set(idx, line_bgn); - ref_grid.set(idx + 1, line_end); - ref_grid_colors.set(idx, line_color); - ref_grid_colors.set(idx + 1, line_color); - ref_grid_normals.set(idx, normal); - ref_grid_normals.set(idx + 1, normal); + ref_grid[idx] = line_bgn; + ref_grid[idx + 1] = line_end; + ref_grid_colors[idx] = line_color; + ref_grid_colors[idx + 1] = line_color; + ref_grid_normals[idx] = normal; + ref_grid_normals[idx + 1] = normal; idx += 2; } } @@ -7445,9 +7462,9 @@ void Node3DEditor::_init_grid() { grid[c] = RenderingServer::get_singleton()->mesh_create(); Array d; d.resize(RS::ARRAY_MAX); - d[RenderingServer::ARRAY_VERTEX] = grid_points[c]; - d[RenderingServer::ARRAY_COLOR] = grid_colors[c]; - d[RenderingServer::ARRAY_NORMAL] = grid_normals[c]; + d[RenderingServer::ARRAY_VERTEX] = (Vector<Vector3>)grid_points[c]; + d[RenderingServer::ARRAY_COLOR] = (Vector<Color>)grid_colors[c]; + d[RenderingServer::ARRAY_NORMAL] = (Vector<Vector3>)grid_normals[c]; RenderingServer::get_singleton()->mesh_add_surface_from_arrays(grid[c], RenderingServer::PRIMITIVE_LINES, d); RenderingServer::get_singleton()->mesh_surface_set_material(grid[c], 0, grid_mat[c]->get_rid()); grid_instance[c] = RenderingServer::get_singleton()->instance_create2(grid[c], get_tree()->get_root()->get_world_3d()->get_scenario()); diff --git a/editor/plugins/packed_scene_translation_parser_plugin.cpp b/editor/plugins/packed_scene_translation_parser_plugin.cpp index e9ddaeb3fe..b38965753e 100644 --- a/editor/plugins/packed_scene_translation_parser_plugin.cpp +++ b/editor/plugins/packed_scene_translation_parser_plugin.cpp @@ -83,9 +83,8 @@ Error PackedSceneEditorTranslationParserPlugin::parse_file(const String &p_path, int idx_last = atr_owners.size() - 1; if (idx_last > 0 && !parent_path.begins_with(atr_owners[idx_last].first)) { - // Switch to the previous auto translation owner this was nested in, if that was the case. + // Exit from the current owner nesting into the previous one. atr_owners.remove_at(idx_last); - idx_last -= 1; } if (property == "auto_translate_mode") { @@ -106,7 +105,7 @@ Error PackedSceneEditorTranslationParserPlugin::parse_file(const String &p_path, // If `auto_translate_mode` wasn't found, that means it is set to its default value (`AUTO_TRANSLATE_MODE_INHERIT`). if (!auto_translate_mode_found) { int idx_last = atr_owners.size() - 1; - if (idx_last > 0 && atr_owners[idx_last].first == parent_path) { + if (idx_last > 0 && parent_path.begins_with(atr_owners[idx_last].first)) { auto_translating = atr_owners[idx_last].second; } else { atr_owners.push_back(Pair(state->get_node_path(i), true)); diff --git a/editor/plugins/tiles/tile_atlas_view.cpp b/editor/plugins/tiles/tile_atlas_view.cpp index 3942baed8a..b806d1e042 100644 --- a/editor/plugins/tiles/tile_atlas_view.cpp +++ b/editor/plugins/tiles/tile_atlas_view.cpp @@ -372,7 +372,7 @@ void TileAtlasView::_draw_base_tiles_shape_grid() { for (int i = 0; i < tile_set_atlas_source->get_tiles_count(); i++) { Vector2i tile_id = tile_set_atlas_source->get_tile_id(i); Vector2 in_tile_base_offset = tile_set_atlas_source->get_tile_data(tile_id, 0)->get_texture_origin(); - if (tile_set_atlas_source->is_position_in_tile_texture_region(tile_id, 0, -tile_shape_size / 2) && tile_set_atlas_source->is_position_in_tile_texture_region(tile_id, 0, tile_shape_size / 2 - Vector2(1, 1))) { + if (tile_set_atlas_source->is_rect_in_tile_texture_region(tile_id, 0, Rect2(Vector2(-tile_shape_size) / 2, tile_shape_size))) { for (int frame = 0; frame < tile_set_atlas_source->get_tile_animation_frames_count(tile_id); frame++) { Color color = grid_color; if (frame > 0) { diff --git a/editor/plugins/tiles/tile_data_editors.cpp b/editor/plugins/tiles/tile_data_editors.cpp index f985bbc629..af52243c41 100644 --- a/editor/plugins/tiles/tile_data_editors.cpp +++ b/editor/plugins/tiles/tile_data_editors.cpp @@ -165,10 +165,14 @@ void GenericTilePolygonEditor::_base_control_draw() { base_control->draw_set_transform_matrix(xform); // Draw fill rect under texture region. - Rect2 texture_rect(-background_region.size / 2, background_region.size); + Rect2 texture_rect(Vector2(), background_region.size); if (tile_data) { texture_rect.position -= tile_data->get_texture_origin(); + if (tile_data->get_transpose()) { + texture_rect.size = Size2(texture_rect.size.y, texture_rect.size.x); + } } + texture_rect.position -= texture_rect.size / 2; // Half-size offset must be applied after transposing. base_control->draw_rect(texture_rect, Color(1, 1, 1, 0.3)); // Draw the background. @@ -180,18 +184,14 @@ void GenericTilePolygonEditor::_base_control_draw() { if (tile_data->get_flip_v()) { region_size.y = -region_size.y; } - base_control->draw_texture_rect_region(background_atlas_source->get_texture(), Rect2(-background_region.size / 2 - tile_data->get_texture_origin(), region_size), background_region, tile_data->get_modulate(), tile_data->get_transpose()); + // Destination rect position must account for transposing, size must not. + base_control->draw_texture_rect_region(background_atlas_source->get_texture(), Rect2(texture_rect.position, region_size), background_region, tile_data->get_modulate(), tile_data->get_transpose()); } // Compute and draw the grid area. Rect2 grid_area = Rect2(-base_tile_size / 2, base_tile_size); - if (tile_data) { - grid_area.expand_to(-background_region.get_size() / 2 - tile_data->get_texture_origin()); - grid_area.expand_to(background_region.get_size() / 2 - tile_data->get_texture_origin()); - } else { - grid_area.expand_to(-background_region.get_size() / 2); - grid_area.expand_to(background_region.get_size() / 2); - } + grid_area.expand_to(texture_rect.position); + grid_area.expand_to(texture_rect.get_end()); base_control->draw_rect(grid_area, Color(1, 1, 1, 0.3), false); // Draw grid. @@ -523,6 +523,21 @@ void GenericTilePolygonEditor::_base_control_gui_input(Ref<InputEvent> p_event) xform.set_origin(base_control->get_size() / 2 + panning); xform.set_scale(Vector2(editor_zoom_widget->get_zoom(), editor_zoom_widget->get_zoom())); + Ref<InputEventPanGesture> pan_gesture = p_event; + if (pan_gesture.is_valid()) { + panning += pan_gesture->get_delta() * 8; + drag_last_pos = Vector2(); + button_center_view->set_disabled(panning.is_zero_approx()); + accept_event(); + } + + Ref<InputEventMagnifyGesture> magnify_gesture = p_event; + if (magnify_gesture.is_valid()) { + editor_zoom_widget->set_zoom(editor_zoom_widget->get_zoom() * magnify_gesture->get_factor()); + _zoom_changed(); + accept_event(); + } + Ref<InputEventMouseMotion> mm = p_event; if (mm.is_valid()) { if (drag_type == DRAG_TYPE_DRAG_POINT) { @@ -1385,10 +1400,8 @@ void TileDataTextureOriginEditor::draw_over_tile(CanvasItem *p_canvas_item, Tran TileSetSource *source = *(tile_set->get_source(p_cell.source_id)); TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source); - if (atlas_source->is_position_in_tile_texture_region(p_cell.get_atlas_coords(), p_cell.alternative_tile, -tile_set_tile_size / 2) && atlas_source->is_position_in_tile_texture_region(p_cell.get_atlas_coords(), p_cell.alternative_tile, tile_set_tile_size / 2 - Vector2(1, 1))) { - Transform2D tile_xform; - tile_xform.set_scale(tile_set_tile_size); - tile_set->draw_tile_shape(p_canvas_item, p_transform * tile_xform, color); + if (atlas_source->is_rect_in_tile_texture_region(p_cell.get_atlas_coords(), p_cell.alternative_tile, Rect2(Vector2(-tile_set_tile_size) / 2, tile_set_tile_size))) { + tile_set->draw_tile_shape(p_canvas_item, p_transform.scaled_local(tile_set_tile_size), color); } if (atlas_source->is_position_in_tile_texture_region(p_cell.get_atlas_coords(), p_cell.alternative_tile, Vector2())) { diff --git a/editor/plugins/tiles/tile_map_layer_editor.cpp b/editor/plugins/tiles/tile_map_layer_editor.cpp index b76e673414..63a54372b5 100644 --- a/editor/plugins/tiles/tile_map_layer_editor.cpp +++ b/editor/plugins/tiles/tile_map_layer_editor.cpp @@ -2368,7 +2368,7 @@ TileMapLayerEditorTilesPlugin::TileMapLayerEditorTilesPlugin() { tiles_bottom_panel->set_name(TTR("Tiles")); missing_source_label = memnew(Label); - missing_source_label->set_text(TTR("This TileMap's TileSet has no source configured. Go to the TileSet bottom panel to add one.")); + missing_source_label->set_text(TTR("This TileMap's TileSet has no Tile Source configured. Go to the TileSet bottom panel to add one.")); missing_source_label->set_h_size_flags(Control::SIZE_EXPAND_FILL); missing_source_label->set_v_size_flags(Control::SIZE_EXPAND_FILL); missing_source_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER); diff --git a/editor/plugins/tiles/tile_set_editor.cpp b/editor/plugins/tiles/tile_set_editor.cpp index 263e9cfa3b..7e5336ce06 100644 --- a/editor/plugins/tiles/tile_set_editor.cpp +++ b/editor/plugins/tiles/tile_set_editor.cpp @@ -818,7 +818,7 @@ TileSetEditor::TileSetEditor() { tabs_bar = memnew(TabBar); tabs_bar->set_tab_alignment(TabBar::ALIGNMENT_CENTER); tabs_bar->set_clip_tabs(false); - tabs_bar->add_tab(TTR("Tiles")); + tabs_bar->add_tab(TTR("Tile Sources")); tabs_bar->add_tab(TTR("Patterns")); tabs_bar->connect("tab_changed", callable_mp(this, &TileSetEditor::_tab_changed)); diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index 2da9d66d9a..f4ce35f8f2 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -154,7 +154,6 @@ VSRerouteNode::VSRerouteNode() { title_lbl->hide(); const Size2 size = Size2(32, 32) * EDSCALE; - print_line("VSRerouteNode size: " + size); Control *slot_area = memnew(Control); slot_area->set_custom_minimum_size(size); diff --git a/editor/themes/editor_fonts.cpp b/editor/themes/editor_fonts.cpp index fc994a17d1..c50d1237e0 100644 --- a/editor/themes/editor_fonts.cpp +++ b/editor/themes/editor_fonts.cpp @@ -117,6 +117,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) { int font_hinting_setting = (int)EDITOR_GET("interface/editor/font_hinting"); TextServer::SubpixelPositioning font_subpixel_positioning = (TextServer::SubpixelPositioning)(int)EDITOR_GET("interface/editor/font_subpixel_positioning"); bool font_disable_embedded_bitmaps = (bool)EDITOR_GET("interface/editor/font_disable_embedded_bitmaps"); + bool font_allow_msdf = (bool)EDITOR_GET("interface/editor/font_allow_msdf"); TextServer::Hinting font_hinting; TextServer::Hinting font_mono_hinting; @@ -153,7 +154,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) { const float embolden_strength = 0.6; Ref<Font> default_font = load_internal_font(_font_NotoSans_Regular, _font_NotoSans_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, false); - Ref<Font> default_font_msdf = load_internal_font(_font_NotoSans_Regular, _font_NotoSans_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, true); + Ref<Font> default_font_msdf = load_internal_font(_font_NotoSans_Regular, _font_NotoSans_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, font_allow_msdf); TypedArray<Font> fallbacks; Ref<FontFile> arabic_font = load_internal_font(_font_NotoNaskhArabicUI_Regular, _font_NotoNaskhArabicUI_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, false, &fallbacks); @@ -173,7 +174,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) { default_font_msdf->set_fallbacks(fallbacks); Ref<FontFile> default_font_bold = load_internal_font(_font_NotoSans_Bold, _font_NotoSans_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, false); - Ref<FontFile> default_font_bold_msdf = load_internal_font(_font_NotoSans_Bold, _font_NotoSans_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, true); + Ref<FontFile> default_font_bold_msdf = load_internal_font(_font_NotoSans_Bold, _font_NotoSans_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, font_allow_msdf); TypedArray<Font> fallbacks_bold; Ref<FontFile> arabic_font_bold = load_internal_font(_font_NotoNaskhArabicUI_Bold, _font_NotoNaskhArabicUI_Bold_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, false, &fallbacks_bold); @@ -234,7 +235,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) { Ref<FontVariation> default_fc_msdf; default_fc_msdf.instantiate(); if (custom_font_path.length() > 0 && dir->file_exists(custom_font_path)) { - Ref<FontFile> custom_font = load_external_font(custom_font_path, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps); + Ref<FontFile> custom_font = load_external_font(custom_font_path, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, font_allow_msdf); { TypedArray<Font> fallback_custom; fallback_custom.push_back(default_font_msdf); @@ -277,7 +278,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) { Ref<FontVariation> bold_fc_msdf; bold_fc_msdf.instantiate(); if (custom_font_path_bold.length() > 0 && dir->file_exists(custom_font_path_bold)) { - Ref<FontFile> custom_font = load_external_font(custom_font_path_bold, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps); + Ref<FontFile> custom_font = load_external_font(custom_font_path_bold, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, font_allow_msdf); { TypedArray<Font> fallback_custom; fallback_custom.push_back(default_font_bold_msdf); @@ -285,7 +286,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) { } bold_fc_msdf->set_base_font(custom_font); } else if (custom_font_path.length() > 0 && dir->file_exists(custom_font_path)) { - Ref<FontFile> custom_font = load_external_font(custom_font_path, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps); + Ref<FontFile> custom_font = load_external_font(custom_font_path, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, font_allow_msdf); { TypedArray<Font> fallback_custom; fallback_custom.push_back(default_font_bold_msdf); diff --git a/editor/translations/editor/ar.po b/editor/translations/editor/ar.po index 6bc3c0e9a4..2b4726398a 100644 --- a/editor/translations/editor/ar.po +++ b/editor/translations/editor/ar.po @@ -92,13 +92,14 @@ # Ahmed Nehad <nmkao333@gmail.com>, 2024. # Rashid Al Haqbany <haqbany@gmail.com>, 2024. # cat lover <mongo@users.noreply.hosted.weblate.org>, 2024. +# Mohammed Almosawy <nairex1212m1@gmail.com>, 2024. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor interface\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2024-07-15 21:54+0000\n" -"Last-Translator: Ahmed Nehad <nmkao333@gmail.com>\n" +"PO-Revision-Date: 2024-08-13 23:09+0000\n" +"Last-Translator: Mohammed Almosawy <nairex1212m1@gmail.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/godot/" "ar/>\n" "Language: ar\n" @@ -699,6 +700,9 @@ msgstr "مسار الموقع ثلاثي الأبعاد..." msgid "3D Rotation Track..." msgstr "مسار الدوران ثلاثي الأبعاد..." +msgid "Animation Playback Track..." +msgstr "مسار تشغيل الرسوم المتحركة..." + msgid "Animation length (frames)" msgstr "مدة الرسم المتحرك (بالإطارات)" @@ -1078,12 +1082,18 @@ msgstr "ثواني" msgid "FPS" msgstr "ط/ث" +msgid "Fit to panel" +msgstr "المناسبة للإطار" + msgid "Edit" msgstr "تعديل" msgid "Animation properties." msgstr "خاصيات الحركة." +msgid "Scale Selection..." +msgstr "تكبير/تصغير المحدد..." + msgid "Scale From Cursor..." msgstr "تكبير/تصغير من المؤشر..." diff --git a/editor/translations/editor/fr.po b/editor/translations/editor/fr.po index adc1f3ce82..5a36322d24 100644 --- a/editor/translations/editor/fr.po +++ b/editor/translations/editor/fr.po @@ -129,7 +129,7 @@ # Rémi Verschelde <remi@godotengine.org>, 2023, 2024. # Nifou <nifou@mailfence.com>, 2023. # Antonia Carrier <carrier.antonia@gmail.com>, 2023. -# #Guigui <guillaume.grosjean@outlook.fr>, 2023. +# #Guigui <guillaume.grosjean@outlook.fr>, 2023, 2024. # Dorifor <doryantilmant25@gmail.com>, 2023. # elouan_sys6 <elouan660.deschamps@protonmail.com>, 2023. # John Donne <akheron@zaclys.net>, 2023. @@ -179,8 +179,8 @@ msgstr "" "Project-Id-Version: Godot Engine editor interface\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2024-08-03 22:03+0000\n" -"Last-Translator: didierGuieu <didier.guieu@hotmail.fr>\n" +"PO-Revision-Date: 2024-08-13 23:09+0000\n" +"Last-Translator: #Guigui <guillaume.grosjean@outlook.fr>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/godot/" "fr/>\n" "Language: fr\n" @@ -17729,6 +17729,20 @@ msgstr "" "Skeleton2D et définissez-en une." msgid "" +"The TileMap node is deprecated as it is superseded by the use of multiple " +"TileMapLayer nodes.\n" +"To convert a TileMap to a set of TileMapLayer nodes, open the TileMap bottom " +"panel with this node selected, click the toolbox icon in the top-right corner " +"and choose \"Extract TileMap layers as individual TileMapLayer nodes\"." +msgstr "" +"Le nœud TileMap est déprécié car il est dépassé par l'utilisation de " +"plusieurs nœuds TileMapLayer.\n" +"Pour convertir un TileMap en un groupe de nœuds TileMapLayer, ouvrez le " +"panneau du bas TileMap avec ce nœud sélectionné, cliquez sur l'icône de " +"toolbox dans le coin en haut à droite et choisissez \"Extraire les calques de " +"TileMap comme nœuds TileMapLayer individuels\"." + +msgid "" "A Y-sorted layer has the same Z-index value as a not Y-sorted layer.\n" "This may lead to unwanted behaviors, as a layer that is not Y-sorted will be " "Y-sorted as a whole with tiles from Y-sorted layers." diff --git a/editor/translations/editor/ga.po b/editor/translations/editor/ga.po new file mode 100644 index 0000000000..124947dd8a --- /dev/null +++ b/editor/translations/editor/ga.po @@ -0,0 +1,19068 @@ +# Irish translation of the Godot Engine editor interface. +# Copyright (c) 2014-present Godot Engine contributors. +# Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. +# This file is distributed under the same license as the Godot source code. +# Rónán Quill <ronan085@gmail.com>, 2019, 2020. +# Aindriú Mac Giolla Eoin <aindriu80@gmail.com>, 2024. +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor interface\n" +"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" +"PO-Revision-Date: 2024-08-14 12:59+0000\n" +"Last-Translator: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>\n" +"Language-Team: Irish <https://hosted.weblate.org/projects/godot-engine/godot/" +"ga/>\n" +"Language: ga\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :(n>6 " +"&& n<11) ? 3 : 4;\n" +"X-Generator: Weblate 5.7-dev\n" + +msgid "Main Thread" +msgstr "Príomhshnáithe" + +msgid "Unset" +msgstr "Díshocraigh" + +msgid "Physical" +msgstr "Fisiciúil" + +msgid "Left Mouse Button" +msgstr "Cnaipe Luiche Ar Chlé" + +msgid "Right Mouse Button" +msgstr "Cnaipe Luiche Ar Dheis" + +msgid "Middle Mouse Button" +msgstr "Cnaipe na Luiche Láir" + +msgid "Mouse Wheel Up" +msgstr "Roth Luiche Suas" + +msgid "Mouse Wheel Down" +msgstr "Roth Luiche Síos" + +msgid "Mouse Wheel Left" +msgstr "Roth na Luiche Ar Chlé" + +msgid "Mouse Wheel Right" +msgstr "Roth na Luiche Ar Dheis" + +msgid "Mouse Thumb Button 1" +msgstr "Cnaipe Ordóg Luiche 1" + +msgid "Mouse Thumb Button 2" +msgstr "Cnaipe Ordóg Luiche 2" + +msgid "Button" +msgstr "Cnaipe" + +msgid "Double Click" +msgstr "Cliceáil Dúbailte" + +msgid "Mouse motion at position (%s) with velocity (%s)" +msgstr "Gluaisne luiche ag suíomh (%s) le treoluas (%s)" + +msgid "Left Stick X-Axis, Joystick 0 X-Axis" +msgstr "Bata Clé X-Ais, Luamhán stiúrtha 0 X-Ais" + +msgid "Left Stick Y-Axis, Joystick 0 Y-Axis" +msgstr "Bata Clé Y-Ais, Luamhán Stiúrtha 0 Y- Ais" + +msgid "Right Stick X-Axis, Joystick 1 X-Axis" +msgstr "Bata Ar Dheis X-Ais, Luamhán stiúrtha 1 X-Ais" + +msgid "Right Stick Y-Axis, Joystick 1 Y-Axis" +msgstr "Bata Ceart Y-Ais, Luamhán stiúrtha 1 Y-Ais" + +msgid "Joystick 2 X-Axis, Left Trigger, Sony L2, Xbox LT" +msgstr "Luamhán stiúrtha 2 X-Ais, Truicear Clé, Sony L2, Xbox LT" + +msgid "Joystick 2 Y-Axis, Right Trigger, Sony R2, Xbox RT" +msgstr "Luamhán stiúrtha 2 Y-Ais, Truicear Ceart, Sony R2, Xbox RT" + +msgid "Joystick 3 X-Axis" +msgstr "Luamhán stiúrtha 3 X-Ais" + +msgid "Joystick 3 Y-Axis" +msgstr "Luamhán stiúrtha 3 Y- Ais" + +msgid "Joystick 4 X-Axis" +msgstr "Luamhán stiúrtha 4 X-Ais" + +msgid "Joystick 4 Y-Axis" +msgstr "Luamhán stiúrtha 4 Y- Ais" + +msgid "Unknown Joypad Axis" +msgstr "Ais Joypad Anaithnid" + +msgid "Joypad Motion on Axis %d (%s) with Value %.2f" +msgstr "Gluaisne Joypad ar Ais %d (%s) le Luach %.2f" + +msgid "Bottom Action, Sony Cross, Xbox A, Nintendo B" +msgstr "Gníomh Bun, Sony Cross, Xbox A, Nintendo B" + +msgid "Right Action, Sony Circle, Xbox B, Nintendo A" +msgstr "Gníomh Ceart, Sony Circle, Xbox B, Nintendo A" + +msgid "Left Action, Sony Square, Xbox X, Nintendo Y" +msgstr "Gníomh Ar Chlé, Sony Square, Xbox X, Nintendo Y" + +msgid "Top Action, Sony Triangle, Xbox Y, Nintendo X" +msgstr "Gníomh Barr, Sony Triantán, Xbox Y, Nintendo X" + +msgid "Back, Sony Select, Xbox Back, Nintendo -" +msgstr "Ar ais, Sony Roghnaigh, Xbox Back, Nintendo -" + +msgid "Guide, Sony PS, Xbox Home" +msgstr "Treoir, Sony PS, Xbox Home" + +msgid "Start, Xbox Menu, Nintendo +" +msgstr "Tosaigh, Xbox Menu, Nintendo +" + +msgid "Left Stick, Sony L3, Xbox L/LS" +msgstr "Bata Clé, Sony L3, Xbox L / LS" + +msgid "Right Stick, Sony R3, Xbox R/RS" +msgstr "Bata Ceart, Sony R3, Xbox R / RS" + +msgid "Left Shoulder, Sony L1, Xbox LB" +msgstr "Gualainn Ar Chlé, Sony L1, Xbox LB" + +msgid "Right Shoulder, Sony R1, Xbox RB" +msgstr "Ceart ghualainn, Sony R1, Xbox RB" + +msgid "D-pad Up" +msgstr "D-eochaircheap Suas" + +msgid "D-pad Down" +msgstr "D-eochaircheap An Dúin" + +msgid "D-pad Left" +msgstr "D-eochaircheap Ar Chlé" + +msgid "D-pad Right" +msgstr "D-eochaircheap Ceart" + +msgid "Xbox Share, PS5 Microphone, Nintendo Capture" +msgstr "Xbox Share, Micreafón PS5, Nintendo Capture" + +msgid "Xbox Paddle 1" +msgstr "Paddle Xbox 1" + +msgid "Xbox Paddle 2" +msgstr "Paddle Xbox 2" + +msgid "Xbox Paddle 3" +msgstr "Paddle Xbox 3" + +msgid "Xbox Paddle 4" +msgstr "Paddle Xbox 4" + +msgid "PS4/5 Touchpad" +msgstr "PS4 / 5 Touchpad" + +msgid "Joypad Button %d" +msgstr "Cnaipe Joypad %d" + +msgid "Pressure:" +msgstr "Brú:" + +msgid "canceled" +msgstr "curtha ar ceal" + +msgid "touched" +msgstr "i dteagmháil léi" + +msgid "released" +msgstr "scaoileadh" + +msgid "Screen %s at (%s) with %s touch points" +msgstr "Scáileán %s ag (%s) le %s pointí tadhaill" + +msgid "" +"Screen dragged with %s touch points at position (%s) with velocity of (%s)" +msgstr "" +"Scáileán tarraingthe le %s pointí tadhaill ag suíomh (%s) le treoluas (%s)" + +msgid "Magnify Gesture at (%s) with factor %s" +msgstr "Formhéadaigh gotha ag (%s) le fachtóir %s" + +msgid "Pan Gesture at (%s) with delta (%s)" +msgstr "Gotha Pan ag (%s) le deilt (%s)" + +msgid "MIDI Input on Channel=%s Message=%s" +msgstr "Ionchur MIDI ar chainéal=%s message=%s" + +msgid "Input Event with Shortcut=%s" +msgstr "Teagmhas Ionchurtha le aicearra=%s" + +msgid "Accept" +msgstr "Glac leis" + +msgid "Select" +msgstr "Roghnaigh" + +msgid "Cancel" +msgstr "Cuir ar ceal" + +msgid "Focus Next" +msgstr "Fócas Ar Aghaidh" + +msgid "Focus Prev" +msgstr "Fócas Prev" + +msgid "Left" +msgstr "Ar chlé" + +msgid "Right" +msgstr "Ceart" + +msgid "Up" +msgstr "Suas" + +msgid "Down" +msgstr "An Dún" + +msgid "Page Up" +msgstr "Leathanach Suas" + +msgid "Page Down" +msgstr "Leathanach Síos" + +msgid "Home" +msgstr "Baile" + +msgid "End" +msgstr "Deireadh" + +msgid "Cut" +msgstr "Gearr" + +msgid "Copy" +msgstr "Cóipeáil" + +msgid "Paste" +msgstr "Greamaigh" + +msgid "Undo" +msgstr "Cealaigh" + +msgid "Redo" +msgstr "Athdhéan" + +msgid "Completion Query" +msgstr "Iarratas Críochnaithe" + +msgid "New Line" +msgstr "Líne Nua" + +msgid "New Blank Line" +msgstr "Líne Bhán Nua" + +msgid "New Line Above" +msgstr "Líne Nua Thuas" + +msgid "Indent" +msgstr "Eangú" + +msgid "Dedent" +msgstr "Díghníomhachtú" + +msgid "Backspace" +msgstr "Cúlspás" + +msgid "Backspace Word" +msgstr "Focal Backspace" + +msgid "Backspace all to Left" +msgstr "Backspace go léir ar chlé" + +msgid "Delete" +msgstr "Scrios" + +msgid "Delete Word" +msgstr "Scrios Focal" + +msgid "Delete all to Right" +msgstr "Scrios gach rud ar dheis" + +msgid "Caret Left" +msgstr "Caret Ar Chlé" + +msgid "Caret Word Left" +msgstr "Focal Caret Ar Chlé" + +msgid "Caret Right" +msgstr "Caret Ceart" + +msgid "Caret Word Right" +msgstr "Caret Word Ceart" + +msgid "Caret Up" +msgstr "Carait Suas" + +msgid "Caret Down" +msgstr "Caret An Dúin" + +msgid "Caret Line Start" +msgstr "Tús Líne Caret" + +msgid "Caret Line End" +msgstr "Deireadh Líne Caret" + +msgid "Caret Page Up" +msgstr "Leathanach Caret Suas" + +msgid "Caret Page Down" +msgstr "Leathanach Caret Síos" + +msgid "Caret Document Start" +msgstr "Tús na Cáipéise Caret" + +msgid "Caret Document End" +msgstr "Deireadh na Cáipéise Caret" + +msgid "Caret Add Below" +msgstr "Caret Cuir Thíos" + +msgid "Caret Add Above" +msgstr "Caret Add Thuas" + +msgid "Scroll Up" +msgstr "Scrollaigh Suas" + +msgid "Scroll Down" +msgstr "Scrollaigh Síos" + +msgid "Select All" +msgstr "Roghnaigh Gach Rud" + +msgid "Select Word Under Caret" +msgstr "Roghnaigh Focal Faoi Caret" + +msgid "Add Selection for Next Occurrence" +msgstr "Cuir Roghnúchán leis don Chéad Tarlú Eile" + +msgid "Skip Selection for Next Occurrence" +msgstr "Ná bac leis an roghnúchán don chéad tarlú eile" + +msgid "Clear Carets and Selection" +msgstr "Glan Cúramaí agus Roghnúchán" + +msgid "Toggle Insert Mode" +msgstr "Scoránaigh an Mód Ionsáigh" + +msgid "Submit Text" +msgstr "Cuir Téacs Isteach" + +msgid "Duplicate Nodes" +msgstr "Nóid Dhúblacha" + +msgid "Delete Nodes" +msgstr "Scrios Nóid" + +msgid "Go Up One Level" +msgstr "Téigh Suas Leibhéal Amháin" + +msgid "Refresh" +msgstr "Athnuaigh" + +msgid "Show Hidden" +msgstr "Taispeáin Folaithe" + +msgid "Swap Input Direction" +msgstr "Babhtáil Treo Ionchurtha" + +msgid "Invalid input %d (not passed) in expression" +msgstr "Ionchur neamhbhailí %d (gan rith) sa slonn" + +msgid "self can't be used because instance is null (not passed)" +msgstr "ní féidir é féin a úsáid toisc go bhfuil an cás null (gan rith)" + +msgid "Invalid operands to operator %s, %s and %s." +msgstr "Oibreanna neamhbhailí d'oibreoir %s, %s agus %s." + +msgid "Invalid index of type %s for base type %s" +msgstr "Innéacs neamhbhailí de chineál %s don bhunchineál %s" + +msgid "Invalid named index '%s' for base type %s" +msgstr "Innéacs neamhbhailí ainmnithe '%s' don bhunchineál %s" + +msgid "Invalid arguments to construct '%s'" +msgstr "Argóintí neamhbhailí chun '%s' a thógáil" + +msgid "On call to '%s':" +msgstr "Ar ghlao chuig '%s':" + +msgid "Built-in script" +msgstr "Tógtha-i script" + +msgid "Built-in" +msgstr "Tógtha i" + +msgid "B" +msgstr "B" + +msgid "KiB" +msgstr "KiBName" + +msgid "MiB" +msgstr "MiBName" + +msgid "GiB" +msgstr "Tabhair" + +msgid "TiB" +msgstr "TibName" + +msgid "PiB" +msgstr "PiBName" + +msgid "EiB" +msgstr "EiBName" + +msgid "" +"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " +"'\"'" +msgstr "" +"Ainm neamhbhailí an ghnímh. Ní féidir leis a bheith folamh ná '/', ':', '=', " +"'\\' nó '\"' a bheith ann" + +msgid "An action with the name '%s' already exists." +msgstr "Tá gníomh leis an ainm '%s' ann cheana." + +msgid "Cannot Revert - Action is same as initial" +msgstr "Ní féidir Filleadh - Is ionann gníomh agus gníomh tosaigh" + +msgid "Revert Action" +msgstr "Fill Gníomh" + +msgid "Add Event" +msgstr "Cuir Imeacht Leis" + +msgid "Remove Action" +msgstr "Bain Gníomh" + +msgid "Cannot Remove Action" +msgstr "Ní féidir gníomh a bhaint" + +msgid "Edit Event" +msgstr "Cuir Imeacht in Eagar" + +msgid "Remove Event" +msgstr "Bain Imeacht" + +msgid "Filter by Name" +msgstr "Scag de réir Ainm" + +msgid "Clear All" +msgstr "Glan gach rud" + +msgid "Clear all search filters." +msgstr "Glan gach scagaire cuardaigh." + +msgid "Add New Action" +msgstr "Cuir Gníomh Nua Leis" + +msgid "Add" +msgstr "Cuir Leis" + +msgid "Show Built-in Actions" +msgstr "Taispeáin Gníomhartha Ionsuite" + +msgid "Action" +msgstr "Gníomh" + +msgid "Deadzone" +msgstr "Limistéar marbh" + +msgid "Time:" +msgstr "Am:" + +msgid "Value:" +msgstr "Luach:" + +msgid "Update Selected Key Handles" +msgstr "Nuashonraigh Hanlaí Roghnaithe na n- Eochracha Roghnaithe" + +msgid "Insert Key Here" +msgstr "Ionsáigh Eochair Anseo" + +msgid "Duplicate Selected Key(s)" +msgstr "Dúblach na hEochracha/na heochracha roghnaithe" + +msgid "Cut Selected Key(s)" +msgstr "Gearr Eochair(eanna) Roghnaithe" + +msgid "Copy Selected Key(s)" +msgstr "Cóipeáil eochair(eanna) roghnaithe" + +msgid "Paste Key(s)" +msgstr "Greamaigh Eochair(eanna)" + +msgid "Delete Selected Key(s)" +msgstr "Scrios Eochair(eanna) Roghnaithe" + +msgid "Make Handles Free" +msgstr "Déan Láimhseálann Saor in Aisce" + +msgid "Make Handles Linear" +msgstr "Déan Láimhseálann Líneach" + +msgid "Make Handles Balanced" +msgstr "Déan Láimhseálann Cothrom" + +msgid "Make Handles Mirrored" +msgstr "Déan Láimhseálacha Scáthánaithe" + +msgid "Make Handles Balanced (Auto Tangent)" +msgstr "Déan Láimhseálann Cothrom (Auto Tangent)" + +msgid "Make Handles Mirrored (Auto Tangent)" +msgstr "Déan Láimhseálacha Scáthánaithe (Auto Tangent)" + +msgid "Add Bezier Point" +msgstr "Cuir Pointe Bezier Leis" + +msgid "Move Bezier Points" +msgstr "Bog Pointí Bezier" + +msgid "Animation Duplicate Keys" +msgstr "Eochracha Dúblacha Beochana" + +msgid "Animation Cut Keys" +msgstr "Eochracha Gearrtha Beochana" + +msgid "Animation Paste Keys" +msgstr "Eochracha Greamaigh Beochana" + +msgid "Animation Delete Keys" +msgstr "Scrios Eochracha Beochana" + +msgid "Focus" +msgstr "Fócas" + +msgid "Select All Keys" +msgstr "Roghnaigh Gach Eochair" + +msgid "Deselect All Keys" +msgstr "Díroghnaigh Gach Eochair" + +msgid "Animation Change Transition" +msgstr "Athrú Beochana Aistriú" + +msgid "Animation Change Position3D" +msgstr "Suíomh athraithe beochana3D" + +msgid "Animation Change Rotation3D" +msgstr "Rothlú athraithe beochana3D" + +msgid "Animation Change Scale3D" +msgstr "Athrú Beochana Scale3D" + +msgid "Animation Change Keyframe Value" +msgstr "Athrú Beochana Luach Eochairfhráma" + +msgid "Animation Change Call" +msgstr "Glao ar Athrú Beochana" + +msgid "Animation Multi Change Transition" +msgstr "Beochan Ilathrú Aistriú" + +msgid "Animation Multi Change Position3D" +msgstr "Suíomh Ilathraithe Beochana3D" + +msgid "Animation Multi Change Rotation3D" +msgstr "Rothlú Ilathraithe Beochana3D" + +msgid "Animation Multi Change Scale3D" +msgstr "Beochan Il-Athrú Scale3D" + +msgid "Animation Multi Change Keyframe Value" +msgstr "Beochan Il-Athrú Luach Keyframe" + +msgid "Animation Multi Change Call" +msgstr "Glao Ilathraithe Beochana" + +msgid "Change Animation Length" +msgstr "Athraigh Fad na beochana" + +msgid "Change Animation Loop" +msgstr "Athraigh Lúb Beochana" + +msgid "Can't change loop mode on animation instanced from imported scene." +msgstr "" +"Ní féidir mód lúibe a athrú ar bheochan mar shampla ó radharc iompórtáilte." + +msgid "Can't change loop mode on animation embedded in another scene." +msgstr "Ní féidir mód lúibe a athrú ar bheochan atá leabaithe i radharc eile." + +msgid "Property Track..." +msgstr "Rian Maoine..." + +msgid "3D Position Track..." +msgstr "Rian Suímh 3D..." + +msgid "3D Rotation Track..." +msgstr "Rian rothlaithe 3D..." + +msgid "3D Scale Track..." +msgstr "Rian Scála 3D..." + +msgid "Blend Shape Track..." +msgstr "Cumaisc Rian Cruth..." + +msgid "Call Method Track..." +msgstr "Rian Modh Glaonna..." + +msgid "Bezier Curve Track..." +msgstr "Rian Cuar Bezier..." + +msgid "Audio Playback Track..." +msgstr "Rian Athsheinm Fuaime..." + +msgid "Animation Playback Track..." +msgstr "Amhrán Athsheinm Beochana..." + +msgid "Animation length (frames)" +msgstr "Fad beochana (frámaí)" + +msgid "Animation length (seconds)" +msgstr "Fad beochana (soicindí)" + +msgid "Add Track" +msgstr "Cuir Amhrán Leis" + +msgid "Animation Looping" +msgstr "Lúbadh Beochana" + +msgid "Functions:" +msgstr "Feidhmeanna:" + +msgid "Audio Clips:" +msgstr "Gearrthóga Fuaime:" + +msgid "Animation Clips:" +msgstr "Gearrthóga Beochana:" + +msgid "Change Track Path" +msgstr "Athraigh Conair an Amhráin" + +msgid "Toggle this track on/off." +msgstr "Scoránaigh an rian seo ar/as." + +msgid "Use Blend" +msgstr "Úsáid Cumasc" + +msgid "Update Mode (How this property is set)" +msgstr "Mód Nuashonraithe (Conas a shocraítear an mhaoin seo)" + +msgid "Interpolation Mode" +msgstr "Mód Idirshuí" + +msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" +msgstr "Mód Timfhilleadh Lúb (Deireadh idirshuí le tosú ar lúb)" + +msgid "Remove this track." +msgstr "Bain an rian seo." + +msgid "Time (s):" +msgstr "Am (í):" + +msgid "Position:" +msgstr "Post:" + +msgid "Rotation:" +msgstr "Rothlú:" + +msgid "Scale:" +msgstr "Scála:" + +msgid "Blend Shape:" +msgstr "Cruth Cumaisc:" + +msgid "Type:" +msgstr "Cineál:" + +msgid "(Invalid, expected type: %s)" +msgstr "(Neamhbhailí, cineál a bhfuiltear ag súil leis: %s)" + +msgid "Easing:" +msgstr "Maolú:" + +msgid "In-Handle:" +msgstr "In-láimhseáil:" + +msgid "Out-Handle:" +msgstr "Seach-láimh:" + +msgid "Handle mode: Free\n" +msgstr "Mód láimhseáil: Saor in aisce\n" + +msgid "Handle mode: Linear\n" +msgstr "Mód láimhseála: Líneach\n" + +msgid "Handle mode: Balanced\n" +msgstr "Mód láimhseáil: Cothrom\n" + +msgid "Handle mode: Mirrored\n" +msgstr "Mód láimhseála: Scáthánaithe\n" + +msgid "Stream:" +msgstr "Sruth:" + +msgid "Start (s):" +msgstr "Tosaigh (í):" + +msgid "End (s):" +msgstr "Deireadh (í):" + +msgid "Animation Clip:" +msgstr "Gearrthóg Beochana:" + +msgid "Toggle Track Enabled" +msgstr "Scoránaigh an tAmhrán Cumasaithe" + +msgid "Don't Use Blend" +msgstr "Ná húsáid Cumasc" + +msgid "Continuous" +msgstr "Leanúnach" + +msgid "Discrete" +msgstr "Scoite" + +msgid "Capture" +msgstr "Gabháil" + +msgid "Nearest" +msgstr "Is gaire" + +msgid "Linear" +msgstr "Líneach" + +msgid "Cubic" +msgstr "Ciúbach" + +msgid "Linear Angle" +msgstr "Uillinn Líneach" + +msgid "Cubic Angle" +msgstr "Uillinn Chiúbach" + +msgid "Clamp Loop Interp" +msgstr "Clamp Lúb Interp" + +msgid "Wrap Loop Interp" +msgstr "Timfhilleadh Lúb Interp" + +msgid "Insert Key..." +msgstr "Ionsáigh Eochair..." + +msgid "Duplicate Key(s)" +msgstr "Dúblach Eochair(eanna)" + +msgid "Cut Key(s)" +msgstr "Gearr Eochair(eanna)" + +msgid "Copy Key(s)" +msgstr "Cóipeáil Eochair(eanna)" + +msgid "Add RESET Value(s)" +msgstr "Cuir Luach(anna) ATHSHOCRAITHE Leis" + +msgid "Delete Key(s)" +msgstr "Scrios Eochracha(eanna)" + +msgid "Change Animation Update Mode" +msgstr "Athraigh an Mód Nuashonraithe Beochana" + +msgid "Change Animation Interpolation Mode" +msgstr "Athraigh Mód Idirshuí Beochana" + +msgid "Change Animation Loop Mode" +msgstr "Athraigh Mód Lúb Beochana" + +msgid "Change Animation Use Blend" +msgstr "Athraigh Cumasc Úsáide Beochana" + +msgid "" +"Compressed tracks can't be edited or removed. Re-import the animation with " +"compression disabled in order to edit." +msgstr "" +"Ní féidir rianta comhbhrúite a chur in eagar ná a bhaint. Ath-allmhairiú an " +"beochan le comhbhrú díchumasaithe d'fhonn a chur in eagar." + +msgid "Remove Anim Track" +msgstr "Bain Anim Track" + +msgid "Create new track for %s and insert key?" +msgstr "Cruthaigh rian nua do %s agus ionsáigh eochair?" + +msgid "Create %d new tracks and insert keys?" +msgstr "Cruthaigh %d rianta nua agus ionsáigh eochracha?" + +msgid "Hold Shift when clicking the key icon to skip this dialog." +msgstr "" +"Coinnigh Shift nuair a chliceáiltear ar dheilbhín na heochrach chun an dialóg " +"seo a scipeáil." + +msgid "Create" +msgstr "Cruthaigh" + +msgid "Animation Insert Key" +msgstr "Ionsáigh Eochair Bheochana" + +msgid "node '%s'" +msgstr "nód '%s'" + +msgid "animation" +msgstr "Beochan" + +msgid "AnimationPlayer can't animate itself, only other players." +msgstr "" +"Ní féidir le AnimationPlayer beochan a dhéanamh air féin, ach imreoirí eile." + +msgid "property '%s'" +msgstr "Maoin '%s'" + +msgid "Change Animation Step" +msgstr "Athraigh Céim Beochana" + +msgid "Rearrange Tracks" +msgstr "Rianta Athchóirithe" + +msgid "Blend Shape tracks only apply to MeshInstance3D nodes." +msgstr "Ní bhaineann rianta Cruth Cumaisc ach le nóid MeshInstance3D." + +msgid "Position/Rotation/Scale 3D tracks only apply to 3D-based nodes." +msgstr "" +"Ní bhaineann rianta Suímh / Rothlaithe / Scála 3D ach le nóid 3D-bhunaithe." + +msgid "" +"Audio tracks can only point to nodes of type:\n" +"-AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" +msgstr "" +"Ní féidir le rianta fuaime ach nóid de chineál a chur in iúl:\n" +"-AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" + +msgid "Animation tracks can only point to AnimationPlayer nodes." +msgstr "Ní féidir le rianta beochana ach nóid AnimationPlayer a chur in iúl." + +msgid "Not possible to add a new track without a root" +msgstr "Ní féidir rian nua a chur leis gan fréamh" + +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "Rian neamhbhailí do Bezier (gan aon fho-airíonna oiriúnacha)" + +msgid "Add Bezier Track" +msgstr "Cuir Rian Bezier Leis" + +msgid "Track path is invalid, so can't add a key." +msgstr "Tá cosán an amhráin neamhbhailí, mar sin ní féidir eochair a chur leis." + +msgid "Track is not of type Node3D, can't insert key" +msgstr "Níl an rian de chineál Node3D, ní féidir eochair a chur isteach" + +msgid "Track is not of type MeshInstance3D, can't insert key" +msgstr "Níl an rian de chineál MeshInstance3D, ní féidir eochair a chur isteach" + +msgid "Track path is invalid, so can't add a method key." +msgstr "" +"Tá cosán an amhráin neamhbhailí, mar sin ní féidir eochair mhodha a chur leis." + +msgid "Add Method Track Key" +msgstr "Cuir Eochair Rian Mód Leis" + +msgid "Method not found in object:" +msgstr "Modh nach bhfuil le fáil i réad:" + +msgid "Animation Move Keys" +msgstr "Eochracha Bogtha Beochana" + +msgid "Position" +msgstr "Ionad" + +msgid "Rotation" +msgstr "Rothlú" + +msgid "Scale" +msgstr "Scála" + +msgid "BlendShape" +msgstr "CumascShape" + +msgid "Methods" +msgstr "Modhanna" + +msgid "Bezier" +msgstr "BezierName" + +msgid "Audio" +msgstr "Fuaim" + +msgid "Clipboard is empty!" +msgstr "Tá an ghearrthaisce folamh!" + +msgid "Paste Tracks" +msgstr "Greamaigh Rianta" + +msgid "Animation Scale Keys" +msgstr "Eochracha Scála Beochana" + +msgid "Animation Set Start Offset" +msgstr "Fritháireamh Tosaigh Socraithe Beochana" + +msgid "Animation Set End Offset" +msgstr "Fritháireamh Deiridh Socraithe Beochana" + +msgid "Make Easing Keys" +msgstr "Déan Eochracha Maolaithe" + +msgid "Animation Add RESET Keys" +msgstr "Beochan Cuir Eochracha ATHSHOCRAITHE Leis" + +msgid "Bake Animation as Linear Keys" +msgstr "Bácáil Beochan mar Eochracha Líneacha" + +msgid "" +"This animation belongs to an imported scene, so changes to imported tracks " +"will not be saved.\n" +"\n" +"To modify this animation, navigate to the scene's Advanced Import settings " +"and select the animation.\n" +"Some options, including looping, are available here. To add custom tracks, " +"enable \"Save To File\" and\n" +"\"Keep Custom Tracks\"." +msgstr "" +"Baineann an beochan seo le radharc allmhairithe, mar sin ní shábhálfar " +"athruithe ar rianta allmhairithe.\n" +"\n" +"Chun an beochan seo a mhodhnú, nascleanúint a dhéanamh chuig ardsocruithe " +"Iompórtála an radhairc agus roghnaigh an beochan.\n" +"Tá roinnt roghanna, lúbadh san áireamh, ar fáil anseo. Chun rianta " +"saincheaptha a chur leis, cumasaigh \"Sábháil go Comhad\" agus\n" +"\"Coinnigh Rianta Saincheaptha\"." + +msgid "" +"Some AnimationPlayerEditor's options are disabled since this is the dummy " +"AnimationPlayer for preview.\n" +"\n" +"The dummy player is forced active, non-deterministic and doesn't have the " +"root motion track. Furthermore, the original node is inactive temporary." +msgstr "" +"Tá roinnt roghanna AnimationPlayerEditor díchumasaithe ós rud é gurb é seo an " +"AnimationPlayer caoch le haghaidh réamhamhairc.\n" +"\n" +"Is é an t-imreoir caoch éigean gníomhach, neamh-deterministic agus nach " +"bhfuil an rian tairiscint fréimhe. Ina theannta sin, tá an nód bunaidh " +"neamhghníomhach sealadach." + +msgid "AnimationPlayer is inactive. The playback will not be processed." +msgstr "Tá AnimationPlayer neamhghníomhach. Ní phróiseálfar an athsheinm." + +msgid "Select an AnimationPlayer node to create and edit animations." +msgstr "" +"Roghnaigh nód AnimationPlayer chun beochan a chruthú agus a chur in eagar." + +msgid "Imported Scene" +msgstr "Radharc Iompórtáilte" + +msgid "Warning: Editing imported animation" +msgstr "Rabhadh: Eagarthóireacht a dhéanamh ar bheochan iompórtáilte" + +msgid "Dummy Player" +msgstr "Imreoir Caoch" + +msgid "Warning: Editing dummy AnimationPlayer" +msgstr "Rabhadh: AnimationPlayer caoch eagarthóireachta" + +msgid "Inactive Player" +msgstr "Seinnteoir Neamhghníomhach" + +msgid "Warning: AnimationPlayer is inactive" +msgstr "Rabhadh: Tá AnimationPlayer neamhghníomhach" + +msgid "Toggle between the bezier curve editor and track editor." +msgstr "Scoránaigh idir an t-eagarthóir cuar bezier agus eagarthóir rian." + +msgid "Only show tracks from nodes selected in tree." +msgstr "Ná taispeáin ach rianta ó nóid a roghnaíodh i gcrann." + +msgid "Group tracks by node or display them as plain list." +msgstr "Grúpáil rianta de réir nód nó taispeáin iad mar liosta simplí." + +msgid "Snap:" +msgstr "Léim:" + +msgid "Animation step value." +msgstr "Luach céim beochana." + +msgid "Seconds" +msgstr "Soicind" + +msgid "FPS" +msgstr "CCT" + +msgid "Fit to panel" +msgstr "Oiriúnaigh don phainéal" + +msgid "Edit" +msgstr "Cuir in eagar" + +msgid "Animation properties." +msgstr "Airíonna beochana." + +msgid "Copy Tracks..." +msgstr "Cóipeáil Rianta..." + +msgid "Scale Selection..." +msgstr "Scálaigh Roghnúchán..." + +msgid "Scale From Cursor..." +msgstr "Scálaigh Ón Chúrsóir..." + +msgid "Set Start Offset (Audio)" +msgstr "Socraigh Fritháireamh Tosaigh (Fuaime)" + +msgid "Set End Offset (Audio)" +msgstr "Socraigh Fritháireamh Deiridh (Fuaime)" + +msgid "Make Easing Selection..." +msgstr "Déan Roghnú Maolaithe..." + +msgid "Duplicate Selected Keys" +msgstr "Dúblach Eochracha Roghnaithe" + +msgid "Cut Selected Keys" +msgstr "Gearr Eochracha Roghnaithe" + +msgid "Copy Selected Keys" +msgstr "Cóipeáil Eochracha Roghnaithe" + +msgid "Paste Keys" +msgstr "Greamaigh Eochracha" + +msgid "Move First Selected Key to Cursor" +msgstr "Bog an chéad eochair roghnaithe go cúrsóir" + +msgid "Move Last Selected Key to Cursor" +msgstr "Bog an eochair roghnaithe is déanaí go cúrsóir" + +msgid "Delete Selection" +msgstr "Scrios Roghnúchán" + +msgid "Go to Next Step" +msgstr "Téigh go dtí an Chéad Chéim Eile" + +msgid "Go to Previous Step" +msgstr "Téigh go dtí an Chéim Roimhe Seo" + +msgid "Apply Reset" +msgstr "Cuir Athshocraigh i bhFeidhm" + +msgid "Bake Animation..." +msgstr "Bácáil Beochan..." + +msgid "Optimize Animation (no undo)..." +msgstr "Optamaigh Beochan (gan cealaigh)..." + +msgid "Clean-Up Animation (no undo)..." +msgstr "Beochan Ghlantacháin (gan aon chealú)..." + +msgid "Pick a node to animate:" +msgstr "Roghnaigh nód le beochan:" + +msgid "Use Bezier Curves" +msgstr "Úsáid Cuaráin Bezier" + +msgid "Create RESET Track(s)" +msgstr "Cruthaigh Rian(anna) RESET" + +msgid "Animation Optimizer" +msgstr "Optamóir Beochana" + +msgid "Max Velocity Error:" +msgstr "Earráid Treoluais Uasta:" + +msgid "Max Angular Error:" +msgstr "Earráid uilleach uasta:" + +msgid "Max Precision Error:" +msgstr "Earráid Bheachtais Uasta:" + +msgid "Optimize" +msgstr "Optamaigh" + +msgid "Trim keys placed in negative time" +msgstr "Eochracha Bhaile Átha Troim a chuirtear in am diúltach" + +msgid "Trim keys placed exceed the animation length" +msgstr "Eochracha Bhaile Átha Troim a chuirtear níos mó ná fad na beochana" + +msgid "Remove invalid keys" +msgstr "Bain eochracha neamhbhailí" + +msgid "Remove unresolved and empty tracks" +msgstr "Bain rianta gan réiteach agus folamh" + +msgid "Clean-up all animations" +msgstr "Glan suas gach beochan" + +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "Beochan(í) Glantacháin (NÍL UNDO!)" + +msgid "Clean-Up" +msgstr "Glantachán" + +msgid "Scale Ratio:" +msgstr "Cóimheas Scála:" + +msgid "Select Transition and Easing" +msgstr "Roghnaigh Aistriú agus Maolú" + +msgctxt "Transition Type" +msgid "Linear" +msgstr "Líneach" + +msgctxt "Transition Type" +msgid "Sine" +msgstr "Sín" + +msgctxt "Transition Type" +msgid "Quint" +msgstr "QuintName" + +msgctxt "Transition Type" +msgid "Quart" +msgstr "Ceathrú" + +msgctxt "Transition Type" +msgid "Quad" +msgstr "Cuadrothair" + +msgctxt "Transition Type" +msgid "Expo" +msgstr "Taispeántas" + +msgctxt "Transition Type" +msgid "Elastic" +msgstr "Leaisteacha" + +msgctxt "Transition Type" +msgid "Cubic" +msgstr "Ciúbach" + +msgctxt "Transition Type" +msgid "Circ" +msgstr "Sorcas" + +msgctxt "Transition Type" +msgid "Bounce" +msgstr "Preab" + +msgctxt "Transition Type" +msgid "Back" +msgstr "Ar ais" + +msgctxt "Transition Type" +msgid "Spring" +msgstr "An tEarrach" + +msgctxt "Ease Type" +msgid "In" +msgstr "Sa bhliain 200" + +msgctxt "Ease Type" +msgid "Out" +msgstr "Amach" + +msgctxt "Ease Type" +msgid "InOut" +msgstr "InOutName" + +msgctxt "Ease Type" +msgid "OutIn" +msgstr "Amach" + +msgid "Transition Type:" +msgstr "Cineál Aistrithe:" + +msgid "Ease Type:" +msgstr "Cineál Éasca:" + +msgid "FPS:" +msgstr "CCT:" + +msgid "Animation Baker" +msgstr "Bácús Beochana" + +msgid "3D Pos/Rot/Scl Track:" +msgstr "3D Pos / Lot / Scl Track:" + +msgid "Blendshape Track:" +msgstr "Amhrán Cumaisc:" + +msgid "Value Track:" +msgstr "Rian Luacha:" + +msgid "Select Tracks to Copy" +msgstr "Roghnaigh Rianta le Cóipeáil" + +msgid "Select All/None" +msgstr "Roghnaigh Gach Rud / Dada" + +msgid "Animation Change Keyframe Time" +msgstr "Athrú Beochana Eochairfhráma Ama" + +msgid "Add Audio Track Clip" +msgstr "Cuir Gearrthóg Rian Fuaime Leis" + +msgid "Change Audio Track Clip Start Offset" +msgstr "Athraigh Fritháireamh Tosaigh Gearrthóg Rian Fuaime" + +msgid "Change Audio Track Clip End Offset" +msgstr "Athraigh Fritháireamh Deiridh Gearrthóg Rian Fuaime" + +msgid "Go to Line" +msgstr "Téigh go Líne" + +msgid "Line Number:" +msgstr "Uimhir Líne:" + +msgid "%d replaced." +msgstr "%d curtha in ionad." + +msgid "No match" +msgstr "Gan mheaitseáil" + +msgid "%d match" +msgid_plural "%d matches" +msgstr[0] "%d mheaitseáil" +msgstr[1] "Meaitseálann %d" +msgstr[2] "Meaitseálann %d" +msgstr[3] "Meaitseálann %d" +msgstr[4] "Meaitseálann %d" + +msgid "%d of %d match" +msgid_plural "%d of %d matches" +msgstr[0] "%d as %d mheaitseáil" +msgstr[1] "Meaitseálann %d as %d" +msgstr[2] "Meaitseálann %d as %d" +msgstr[3] "Meaitseálann %d as %d" +msgstr[4] "Meaitseálann %d as %d" + +msgid "Find" +msgstr "Aimsigh" + +msgid "Previous Match" +msgstr "An Comhoiriúnú Roimhe Seo" + +msgid "Next Match" +msgstr "An Chéad Chluiche Eile" + +msgid "Match Case" +msgstr "Meaitseáil Cás" + +msgid "Whole Words" +msgstr "Focail Iomlána" + +msgid "Replace" +msgstr "Ionadaigh" + +msgid "Replace All" +msgstr "Ionadaigh Gach Rud" + +msgid "Selection Only" +msgstr "Roghnúchán Amháin" + +msgid "Hide" +msgstr "Folaigh" + +msgctxt "Indentation" +msgid "Spaces" +msgstr "Spásanna" + +msgctxt "Indentation" +msgid "Tabs" +msgstr "Cluaisíní" + +msgid "Toggle Scripts Panel" +msgstr "Scoránaigh an Painéal Scripteanna" + +msgid "Zoom In" +msgstr "Zúmáil Isteach" + +msgid "Zoom Out" +msgstr "Zúmáil Amach" + +msgid "Reset Zoom" +msgstr "Athshocraigh Zúmáil" + +msgid "Errors" +msgstr "Earráidí" + +msgid "Warnings" +msgstr "Rabhaidh" + +msgid "Zoom factor" +msgstr "Fachtóir zúmála" + +msgid "Line and column numbers." +msgstr "Uimhreacha líne agus colúin." + +msgid "Indentation" +msgstr "Eangú" + +msgid "Method in target node must be specified." +msgstr "Ní mór modh i nód sprioc a shonrú." + +msgid "Method name must be a valid identifier." +msgstr "Ní mór ainm an mhodha a bheith ina aitheantóir bailí." + +msgid "" +"Target method not found. Specify a valid method or attach a script to the " +"target node." +msgstr "" +"Níor aimsíodh an modh sprice. Sonraigh modh bailí nó ceangail script leis an " +"sprioc-nód." + +msgid "Attached Script" +msgstr "Script Cheangailte" + +msgid "%s: Callback code won't be generated, please add it manually." +msgstr "%s: Ní ghinfear cód aisghlaoigh, cuir leis de láimh é." + +msgid "Connect to Node:" +msgstr "Ceangail le Nód:" + +msgid "Connect to Script:" +msgstr "Ceangail le Script:" + +msgid "From Signal:" +msgstr "Ó Chomhartha:" + +msgid "Filter Nodes" +msgstr "Nóid Scag" + +msgid "Go to Source" +msgstr "Téigh go Foinse" + +msgid "Scene does not contain any script." +msgstr "Níl script ar bith sa radharc." + +msgid "Select Method" +msgstr "Roghnaigh Modh" + +msgid "Filter Methods" +msgstr "Modhanna Scagaire" + +msgid "No method found matching given filters." +msgstr "Níor aimsíodh aon mhodh a mheaitseálann scagairí tugtha." + +msgid "Script Methods Only" +msgstr "Modhanna Scripte Amháin" + +msgid "Compatible Methods Only" +msgstr "Modhanna Comhoiriúnacha Amháin" + +msgid "Remove" +msgstr "Bain" + +msgid "Add Extra Call Argument:" +msgstr "Cuir Argóint Glaonna Breise Leis:" + +msgid "Extra Call Arguments:" +msgstr "Argóintí Glaonna Breise:" + +msgid "Allows to drop arguments sent by signal emitter." +msgstr "Ceadaíonn sé argóintí a sheolann astaír comhartha a scaoileadh." + +msgid "Unbind Signal Arguments:" +msgstr "Argóintí Comhartha Unbind:" + +msgid "Receiver Method:" +msgstr "Modh glacadóra:" + +msgid "Advanced" +msgstr "Ardrang" + +msgid "Deferred" +msgstr "Iarchurtha" + +msgid "" +"Defers the signal, storing it in a queue and only firing it at idle time." +msgstr "" +"Cuireann sé an comhartha siar, á stóráil i scuaine agus gan é a scaoileadh " +"ach ag am díomhaoin." + +msgid "One Shot" +msgstr "Urchar Amháin" + +msgid "Disconnects the signal after its first emission." +msgstr "Dícheangail an comhartha tar éis a chéad astaíochta." + +msgid "Cannot connect signal" +msgstr "Ní féidir comhartha a cheangal" + +msgid "Close" +msgstr "Dún" + +msgid "Connect" +msgstr "Ceangail" + +msgid "Connect '%s' to '%s'" +msgstr "Ceangail '%s' le '%s'" + +msgid "Disconnect '%s' from '%s'" +msgstr "Dícheangail '%s' ó '%s'" + +msgid "Disconnect all from signal: '%s'" +msgstr "Dícheangail gach rud ón gcomhartha: '%s'" + +msgid "Connect..." +msgstr "Ceangail..." + +msgid "Disconnect" +msgstr "Dícheangail" + +msgid "Connect a Signal to a Method" +msgstr "Ceangail comhartha le modh" + +msgid "Edit Connection: '%s'" +msgstr "Cuir Ceangal in Eagar: '%s'" + +msgid "Are you sure you want to remove all connections from the \"%s\" signal?" +msgstr "" +"An bhfuil tú cinnte go bhfuil fonn ort gach nasc a bhaint den chomhartha " +"\"%s\"?" + +msgid "Signals" +msgstr "Comharthaí" + +msgid "Filter Signals" +msgstr "Comharthaí Scagaire" + +msgid "Are you sure you want to remove all connections from this signal?" +msgstr "" +"An bhfuil tú cinnte go bhfuil fonn ort gach nasc a bhaint den chomhartha seo?" + +msgid "Open Documentation" +msgstr "Oscail Cáipéisíocht" + +msgid "Disconnect All" +msgstr "Dícheangail Gach Rud" + +msgid "Copy Name" +msgstr "Cóipeáil Ainm" + +msgid "Edit..." +msgstr "Cuir in Eagar..." + +msgid "Go to Method" +msgstr "Téigh go Modh" + +msgid "Change Type of \"%s\"" +msgstr "Athraigh an cineál \"%s\"" + +msgid "Change" +msgstr "Athrú" + +msgid "Create New %s" +msgstr "Cruthaigh %s Nua" + +msgid "No results for \"%s\"." +msgstr "Níl aon toradh ar \"%s\"." + +msgid "This class is marked as deprecated." +msgstr "Tá an rang seo marcáilte mar dhímheas." + +msgid "This class is marked as experimental." +msgstr "Tá an rang seo marcáilte mar thurgnamhach." + +msgid "The selected class can't be instantiated." +msgstr "Ní féidir an rang roghnaithe a mheandarú." + +msgid "Favorites:" +msgstr "Ceanáin:" + +msgid "Recent:" +msgstr "Le déanaí:" + +msgid "(Un)favorite selected item." +msgstr "(Un)an mhír roghnaithe is fearr leat." + +msgid "Search:" +msgstr "Cuardach:" + +msgid "Matches:" +msgstr "Lasáin:" + +msgid "Description:" +msgstr "Cuntas:" + +msgid "Remote %s:" +msgstr "%s cianda:" + +msgid "Debugger" +msgstr "Dífhabhtóir" + +msgid "Debug" +msgstr "Dífhabhtú" + +msgid "Save Branch as Scene" +msgstr "Sábháil an Brainse mar Radharc" + +msgid "Copy Node Path" +msgstr "Cóipeáil Conair nód" + +msgid "Instance:" +msgstr "Sampla:" + +msgid "" +"This node has been instantiated from a PackedScene file:\n" +"%s\n" +"Click to open the original file in the Editor." +msgstr "" +"Tá an nód seo toirtithe ó chomhad PackedScene:\n" +"%s\n" +"Cliceáil chun an comhad bunaidh a oscailt san Eagarthóir." + +msgid "Toggle Visibility" +msgstr "Scoránaigh Infheictheacht" + +msgid "Updating assets on target device:" +msgstr "Sócmhainní a nuashonrú ar an spriocghléas:" + +msgid "Syncing headers" +msgstr "Ceanntásca á sioncronú" + +msgid "Getting remote file system" +msgstr "Córas comhad cianda a fháil" + +msgid "Decompressing remote file system" +msgstr "Córas comhad cianda á dhí-chomhbhrú" + +msgid "Scanning for local changes" +msgstr "Scanadh le haghaidh athruithe áitiúla" + +msgid "Sending list of changed files:" +msgstr "Liosta de chomhaid athraithe á sheoladh:" + +msgid "Sending file:" +msgstr "Comhad á sheoladh:" + +msgid "ms" +msgstr "Ms" + +msgid "Monitors" +msgstr "Monatóirí" + +msgid "Monitor" +msgstr "Monatóir" + +msgid "Value" +msgstr "Luach" + +msgid "Pick one or more items from the list to display the graph." +msgstr "Roghnaigh mír amháin nó níos mó ón liosta chun an graf a thaispeáint." + +msgid "Stop" +msgstr "Stop" + +msgid "Start" +msgstr "Tosaigh" + +msgid "Clear" +msgstr "Glan" + +msgid "Measure:" +msgstr "Beart:" + +msgid "Frame Time (ms)" +msgstr "Am Fráma (ms)" + +msgid "Average Time (ms)" +msgstr "Meán-Am (ms)" + +msgid "Frame %" +msgstr "Fráma %" + +msgid "Physics Frame %" +msgstr "Fráma Fisice%" + +msgid "Inclusive" +msgstr "Lena n-áirítear" + +msgid "Self" +msgstr "Féin" + +msgid "" +"Inclusive: Includes time from other functions called by this function.\n" +"Use this to spot bottlenecks.\n" +"\n" +"Self: Only count the time spent in the function itself, not in other " +"functions called by that function.\n" +"Use this to find individual functions to optimize." +msgstr "" +"Cuimsitheach: Áirítear am ó fheidhmeanna eile ar a dtugtar an fheidhm seo.\n" +"Bain úsáid as seo chun scrogaill a fheiceáil.\n" +"\n" +"Féin: Ná déan ach an t-am a chaitear san fheidhm féin a chomhaireamh, ní i " +"bhfeidhmeanna eile ar a dtugtar an fheidhm sin.\n" +"Bain úsáid as seo chun feidhmeanna aonair a aimsiú chun an leas is fearr a " +"bhaint as." + +msgid "Display internal functions" +msgstr "Taispeáin feidhmeanna inmheánacha" + +msgid "Frame #:" +msgstr "Fráma #:" + +msgid "Name" +msgstr "Ainm" + +msgid "Time" +msgstr "Am" + +msgid "Calls" +msgstr "Glaonna" + +msgid "Fit to Frame" +msgstr "Oiriúnaigh don Fhráma" + +msgid "Linked" +msgstr "Nasctha" + +msgid "CPU" +msgstr "LAP" + +msgid "GPU" +msgstr "GPUName" + +msgid "Execution resumed." +msgstr "Cuireadh tús arís leis an bhforghníomhú." + +msgid "Bytes:" +msgstr "Bearta:" + +msgid "Warning:" +msgstr "Rabhadh:" + +msgid "Error:" +msgstr "Earráid:" + +msgid "%s Error" +msgstr "Earráid %s" + +msgid "%s Error:" +msgstr "Earráid %s:" + +msgid "%s Source" +msgstr "Foinse %s" + +msgid "%s Source:" +msgstr "%s Foinse:" + +msgid "Stack Trace" +msgstr "Rian na gCruach" + +msgid "Stack Trace:" +msgstr "Rian na gCruach:" + +msgid "Debug session started." +msgstr "Cuireadh tús leis an seisiún dífhabhtaithe." + +msgid "Debug session closed." +msgstr "Dúnadh an seisiún dífhabhtaithe." + +msgid "Line %d" +msgstr "Líne %d" + +msgid "Delete Breakpoint" +msgstr "Scrios Brisphointe" + +msgid "Delete All Breakpoints in:" +msgstr "Scrios Gach Brisphointe i:" + +msgid "Delete All Breakpoints" +msgstr "Scrios Gach Brisphointe" + +msgid "Copy Error" +msgstr "Earráid Chóipeála" + +msgid "Open C++ Source on GitHub" +msgstr "Oscail Foinse C++ ar GitHub" + +msgid "C++ Source" +msgstr "Foinse C++" + +msgid "Video RAM" +msgstr "RAM Físe" + +msgid "Skip Breakpoints" +msgstr "Ná Bac le Brisphointí" + +msgid "Step Into" +msgstr "Céim Isteach" + +msgid "Step Over" +msgstr "Céim Os Cionn" + +msgid "Break" +msgstr "Briseadh" + +msgid "Continue" +msgstr "Lean ar aghaidh" + +msgid "Thread:" +msgstr "Snáithe:" + +msgid "Stack Frames" +msgstr "Frámaí Cruach" + +msgid "Filter Stack Variables" +msgstr "Scag Athróga Cruach" + +msgid "Breakpoints" +msgstr "Brisphointí" + +msgid "Expand All" +msgstr "Leathnaigh Gach Rud" + +msgid "Collapse All" +msgstr "Laghdaigh Gach Rud" + +msgid "Profiler" +msgstr "Próifíleoir" + +msgid "Visual Profiler" +msgstr "Próifíleoir Amhairc" + +msgid "List of Video Memory Usage by Resource:" +msgstr "Liosta d'úsáid cuimhne físe de réir acmhainne:" + +msgid "Total:" +msgstr "Iomlán:" + +msgid "Export list to a CSV file" +msgstr "Easpórtáil liosta go comhad CSV" + +msgid "Resource Path" +msgstr "Conair Acmhainní" + +msgid "Type" +msgstr "Cineál" + +msgid "Format" +msgstr "Formáid" + +msgid "Usage" +msgstr "Úsáid" + +msgid "Misc" +msgstr "MiscName" + +msgid "Clicked Control:" +msgstr "Rialú Cliceáilte:" + +msgid "Clicked Control Type:" +msgstr "Cineál Rialaithe Cliceáil:" + +msgid "Live Edit Root:" +msgstr "Fréamh Eagarthóireachta Beo:" + +msgid "Set From Tree" +msgstr "Socraigh Ó Chrann" + +msgid "Export measures as CSV" +msgstr "Bearta easpórtála mar CSV" + +msgid "Search Replacement For:" +msgstr "Athsholáthar Cuardaigh le haghaidh:" + +msgid "Dependencies For:" +msgstr "Spleáchríocha le haghaidh:" + +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will only take effect when reloaded." +msgstr "" +"Tá radharc '%s' á chur in eagar faoi láthair.\n" +"Ní thiocfaidh athruithe i bhfeidhm ach amháin nuair a athluchtaítear iad." + +msgid "" +"Resource '%s' is in use.\n" +"Changes will only take effect when reloaded." +msgstr "" +"Tá acmhainn '%s' in úsáid.\n" +"Ní thiocfaidh athruithe i bhfeidhm ach amháin nuair a athluchtaítear iad." + +msgid "Dependencies" +msgstr "Spleáchríocha" + +msgid "Resource" +msgstr "Acmhainn" + +msgid "Path" +msgstr "Cosán" + +msgid "Dependencies:" +msgstr "Spleáchríocha:" + +msgid "Fix Broken" +msgstr "Deisigh Briste" + +msgid "Dependency Editor" +msgstr "Eagarthóir Spleáchais" + +msgid "Search Replacement Resource:" +msgstr "Acmhainn Athsholáthair Cuardaigh:" + +msgid "Open Scene" +msgid_plural "Open Scenes" +msgstr[0] "Radharc Oscailte" +msgstr[1] "Radhairc Oscailte" +msgstr[2] "Radhairc Oscailte" +msgstr[3] "Radhairc Oscailte" +msgstr[4] "Radhairc Oscailte" + +msgid "Open" +msgstr "Oscailte" + +msgid "Owners of: %s (Total: %d)" +msgstr "Úinéirí: %s (Iomlán: %d)" + +msgid "Localization remap" +msgstr "Athmhapa logánaithe" + +msgid "Localization remap for path '%s' and locale '%s'." +msgstr "Athmhapáil logánaithe le haghaidh cosán '%s' agus logchaighdeán '%s'." + +msgid "" +"Remove the selected files from the project? (Cannot be undone.)\n" +"Depending on your filesystem configuration, the files will either be moved to " +"the system trash or deleted permanently." +msgstr "" +"Bain na comhaid roghnaithe ón tionscadal? (Ní féidir é a chealú.)\n" +"Ag brath ar chumraíocht do chórais comhad, bogfar na comhaid go bruscar an " +"chórais nó scriosfar iad go buan." + +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (Cannot be undone.)\n" +"Depending on your filesystem configuration, the files will either be moved to " +"the system trash or deleted permanently." +msgstr "" +"Tá na comhaid atá á mbaint de dhíth ar acmhainní eile chun go n-oibreoidh " +"siad.\n" +"Bain iad ar aon nós? (Ní féidir é a chealú.)\n" +"Ag brath ar chumraíocht do chórais comhad, bogfar na comhaid go bruscar an " +"chórais nó scriosfar iad go buan." + +msgid "Cannot remove:" +msgstr "Ní féidir an méid seo a leanas a bhaint:" + +msgid "Error loading:" +msgstr "Earráid á luchtú:" + +msgid "Load failed due to missing dependencies:" +msgstr "Theip ar an ualach mar gheall ar spleáchais ar iarraidh:" + +msgid "Open Anyway" +msgstr "Oscail Ar Aon Nós" + +msgid "Which action should be taken?" +msgstr "Cén gníomh ba cheart a dhéanamh?" + +msgid "Fix Dependencies" +msgstr "Deisigh Spleáchríocha" + +msgid "Errors loading!" +msgstr "Earráidí á luchtú!" + +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "Scrios %d mír (í) go buan? (Ná cealaigh!)" + +msgid "Show Dependencies" +msgstr "Taispeáin Spleáchríocha" + +msgid "Orphan Resource Explorer" +msgstr "Taiscéalaí Acmhainní Dílleachta" + +msgid "Owns" +msgstr "Úinéireacht" + +msgid "Resources Without Explicit Ownership:" +msgstr "Acmhainní Gan Úinéireacht Fhollasach:" + +msgid "Folder name cannot be empty." +msgstr "Ní féidir ainm an fhillteáin a bheith folamh." + +msgid "Folder name contains invalid characters." +msgstr "Tá carachtair neamhbhailí in ainm an fhillteáin." + +msgid "Folder name cannot begin or end with a space." +msgstr "Ní féidir tús ná deireadh a chur le hainm an fhillteáin le spás." + +msgid "Folder name cannot begin with a dot." +msgstr "Ní féidir tús a chur le hainm an fhillteáin le ponc." + +msgid "File with that name already exists." +msgstr "Tá an comhad leis an ainm sin ann cheana." + +msgid "Folder with that name already exists." +msgstr "Tá fillteán leis an ainm sin ann cheana." + +msgid "Using slashes in folder names will create subfolders recursively." +msgstr "" +"Trí úsáid a bhaint as slaiseanna in ainmneacha fillteáin, cruthófar " +"fofhillteáin go hathchúrsach." + +msgid "Could not create folder." +msgstr "Níorbh fhéidir fillteán a chruthú." + +msgid "Create new folder in %s:" +msgstr "Cruthaigh fillteán nua i %s:" + +msgid "Create Folder" +msgstr "Cruthaigh Fillteán" + +msgid "Folder name is valid." +msgstr "Tá ainm an fhillteáin bailí." + +msgid "Double-click to open in browser." +msgstr "Cliceáil faoi dhó le hoscailt sa bhrabhsálaí." + +msgid "Thanks from the Godot community!" +msgstr "Go raibh maith agat ó phobal Godot!" + +msgid "(unknown)" +msgstr "(anaithnid)" + +msgid "" +"Git commit date: %s\n" +"Click to copy the version number." +msgstr "" +"Dáta tiomantais Git: %s\n" +"Cliceáil chun uimhir an leagain a chóipeáil." + +msgid "Godot Engine contributors" +msgstr "Ranníocóirí Inneall Godot" + +msgid "Project Founders" +msgstr "Bunaitheoirí an Tionscadail" + +msgid "Lead Developer" +msgstr "Príomhfhorbróir" + +msgctxt "Job Title" +msgid "Project Manager" +msgstr "Bainisteoir Tionscadail" + +msgid "Developers" +msgstr "Forbróirí" + +msgid "Authors" +msgstr "Údair" + +msgid "Patrons" +msgstr "Pátrúin" + +msgid "Platinum Sponsors" +msgstr "Urraitheoirí Platanam" + +msgid "Gold Sponsors" +msgstr "Urraitheoirí Óir" + +msgid "Silver Sponsors" +msgstr "Urraitheoirí Airgid" + +msgid "Diamond Members" +msgstr "Baill Diamaint" + +msgid "Titanium Members" +msgstr "Baill Tíotáiniam" + +msgid "Platinum Members" +msgstr "Baill Platanam" + +msgid "Gold Members" +msgstr "Baill Óir" + +msgid "Donors" +msgstr "Deontóirí" + +msgid "License" +msgstr "Ceadúnas" + +msgid "Third-party Licenses" +msgstr "Ceadúnais Tríú Páirtí" + +msgid "" +"Godot Engine relies on a number of third-party free and open source " +"libraries, all compatible with the terms of its MIT license. The following is " +"an exhaustive list of all such third-party components with their respective " +"copyright statements and license terms." +msgstr "" +"Braitheann Godot Engine ar roinnt leabharlanna foinse oscailte agus saor in " +"aisce tríú páirtí, iad go léir comhoiriúnach le téarmaí a cheadúnais MIT. Seo " +"a leanas liosta uileghabhálach de na comhpháirteanna tríú páirtí sin go léir " +"lena ráitis chóipchirt agus lena dtéarmaí ceadúnais faoi seach." + +msgid "All Components" +msgstr "Gach Comhpháirteanna" + +msgid "Components" +msgstr "Comhpháirteanna" + +msgid "Licenses" +msgstr "Ceadúnais" + +msgid "Error opening asset file for \"%s\" (not in ZIP format)." +msgstr "" +"Earráid agus comhad sócmhainne á oscailt le haghaidh \"%s\" (ní i bhformáid " +"ZIP)." + +msgid "%s (already exists)" +msgstr "%s (tá sé ann cheana)" + +msgid "%d file conflicts with your project and won't be installed" +msgid_plural "%d files conflict with your project and won't be installed" +msgstr[0] "Tagann %d comhad salach ar do thionscadal agus ní shuiteálfar é" +msgstr[1] "Tagann %d comhaid salach ar do thionscadal agus ní shuiteálfar iad" +msgstr[2] "Tagann %d comhaid salach ar do thionscadal agus ní shuiteálfar iad" +msgstr[3] "Tagann %d comhaid salach ar do thionscadal agus ní shuiteálfar iad" +msgstr[4] "Tagann %d comhaid salach ar do thionscadal agus ní shuiteálfar iad" + +msgid "This asset doesn't have a root directory, so it can't be ignored." +msgstr "" +"Níl fréamhchomhadlann ag an tsócmhainn seo, mar sin ní féidir neamhaird a " +"dhéanamh air." + +msgid "Ignore the root directory when extracting files." +msgstr "Déan neamhaird den fhréamhchomhadlann agus comhaid á n-úsáid." + +msgid "Select Install Folder" +msgstr "Roghnaigh Suiteáil Fillteán" + +msgid "Uncompressing Assets" +msgstr "Sócmhainní Dí-chomhbhrúite" + +msgid "The following files failed extraction from asset \"%s\":" +msgstr "Theip ar na comhaid seo a leanas eastóscadh ó shócmhainn \"%s\":" + +msgid "(and %s more files)" +msgstr "(agus %s níos mó comhad)" + +msgid "Asset \"%s\" installed successfully!" +msgstr "Sócmhainn \"%s\" suiteáilte go rathúil!" + +msgid "Success!" +msgstr "Rath!" + +msgid "Asset:" +msgstr "Sócmhainn:" + +msgid "Open the list of the asset contents and select which files to install." +msgstr "" +"Oscail liosta na n-ábhar sócmhainne agus roghnaigh na comhaid atá le suiteáil." + +msgid "Change Install Folder" +msgstr "Athraigh Suiteáil Fillteán" + +msgid "" +"Change the folder where the contents of the asset are going to be installed." +msgstr "Athraigh an fillteán ina bhfuil inneachar na sócmhainne le suiteáil." + +msgid "Ignore asset root" +msgstr "Déan neamhaird de fhréamh na sócmhainne" + +msgid "No files conflict with your project" +msgstr "Níl aon chomhaid ag teacht salach ar do thionscadal" + +msgid "Show contents of the asset and conflicting files." +msgstr "" +"Taispeáin inneachar na sócmhainne agus na gcomhad atá ag teacht salach ar a " +"chéile." + +msgid "Contents of the asset:" +msgstr "Inneachar na sócmhainne:" + +msgid "Installation preview:" +msgstr "Réamhamharc suiteála:" + +msgid "Configure Asset Before Installing" +msgstr "Cumraigh sócmhainn roimh shuiteáil" + +msgid "Install" +msgstr "Suiteáil" + +msgid "Speakers" +msgstr "Cainteoirí" + +msgid "Add Effect" +msgstr "Cuir Maisíocht Leis" + +msgid "Rename Audio Bus" +msgstr "Athainmnigh Bus Fuaime" + +msgid "Change Audio Bus Volume" +msgstr "Athraigh Imleabhar Bus Fuaime" + +msgid "Toggle Audio Bus Solo" +msgstr "Scoránaigh Aonair Bus Fuaime" + +msgid "Toggle Audio Bus Mute" +msgstr "Scoránaigh Mute Bus Fuaime" + +msgid "Toggle Audio Bus Bypass Effects" +msgstr "Scoránaigh Éifeachtaí Seachbhóthar Bus Fuaime" + +msgid "Select Audio Bus Send" +msgstr "Roghnaigh Bus Fuaime Seol" + +msgid "Add Audio Bus Effect" +msgstr "Cuir Maisíocht Bus Fuaime Leis" + +msgid "Move Bus Effect" +msgstr "Bog Maisíocht Bus" + +msgid "Delete Bus Effect" +msgstr "Scrios Maisíocht Bus" + +msgid "Drag & drop to rearrange." +msgstr "Tarraing & scaoil chun athshocrú a dhéanamh." + +msgid "Solo" +msgstr "Níl ann ach" + +msgid "Mute" +msgstr "MuteName" + +msgid "Bypass" +msgstr "Seachbhóthar" + +msgid "Bus Options" +msgstr "Roghanna Bus" + +msgid "Duplicate Bus" +msgstr "Dúblach Bus" + +msgid "Delete Bus" +msgstr "Scrios Bus" + +msgid "Reset Volume" +msgstr "Athshocraigh Imleabhar" + +msgid "Delete Effect" +msgstr "Scrios Maisíocht" + +msgid "Toggle Audio Bottom Panel" +msgstr "Scoránaigh an Painéal Bun Fuaime" + +msgid "Add Audio Bus" +msgstr "Cuir Bus Fuaime Leis" + +msgid "Master bus can't be deleted!" +msgstr "Ní féidir máistirbhus a scriosadh!" + +msgid "Delete Audio Bus" +msgstr "Scrios Bus Fuaime" + +msgid "Duplicate Audio Bus" +msgstr "Dúblach Bus Fuaime" + +msgid "Reset Bus Volume" +msgstr "Athshocraigh Imleabhar na mBusanna" + +msgid "Move Audio Bus" +msgstr "Bog Bus Fuaime" + +msgid "Save Audio Bus Layout As..." +msgstr "Sábháil Leagan Amach Bus Fuaime Mar..." + +msgid "Location for New Layout..." +msgstr "Suíomh don Leagan Amach Nua..." + +msgid "Open Audio Bus Layout" +msgstr "Oscail Leagan Amach Bus Fuaime" + +msgid "There is no '%s' file." +msgstr "Níl aon chomhad '%s' ann." + +msgid "Layout:" +msgstr "Leagan Amach:" + +msgid "Invalid file, not an audio bus layout." +msgstr "Comhad neamhbhailí, ní leagan amach bus fuaime." + +msgid "Error saving file: %s" +msgstr "Earráid agus comhad á shábháil: %s" + +msgid "Add Bus" +msgstr "Cuir Bus Leis" + +msgid "Add a new Audio Bus to this layout." +msgstr "Cuir Bus Fuaime nua leis an leagan amach seo." + +msgid "Load" +msgstr "Luchtaigh" + +msgid "Load an existing Bus Layout." +msgstr "Luchtaigh Leagan Amach Bus atá ann cheana féin." + +msgid "Save As" +msgstr "Sábháil Mar" + +msgid "Save this Bus Layout to a file." +msgstr "Sábháil an Leagan Amach Bus seo i gcomhad." + +msgid "Load Default" +msgstr "Réamhshocrú Luchtaigh" + +msgid "Load the default Bus Layout." +msgstr "Luchtaigh leagan amach réamhshocraithe an Bhus." + +msgid "Create a new Bus Layout." +msgstr "Cruthaigh Leagan Amach Bus nua." + +msgid "Audio Bus Layout" +msgstr "Leagan Amach Bus Fuaime" + +msgid "Invalid name." +msgstr "Ainm neamhbhailí." + +msgid "Cannot begin with a digit." +msgstr "Ní féidir tús a chur le digit." + +msgid "Valid characters:" +msgstr "Carachtair bhailí:" + +msgid "Must not collide with an existing engine class name." +msgstr "Ní mór gan collide le hainm aicme innill atá ann cheana féin." + +msgid "Must not collide with an existing global script class name." +msgstr "Ní mór gan collide le hainm aicme script domhanda atá ann cheana féin." + +msgid "Must not collide with an existing built-in type name." +msgstr "Ní mór gan collide le cineál-ainm tógtha atá ann cheana féin." + +msgid "Must not collide with an existing global constant name." +msgstr "Ní mór gan collide le hainm tairiseach domhanda atá ann cheana féin." + +msgid "Keyword cannot be used as an Autoload name." +msgstr "Ní féidir eochairfhocal a úsáid mar ainm Autoload." + +msgid "Autoload '%s' already exists!" +msgstr "Tá uathluchtú '%s' ann cheana!" + +msgid "Rename Autoload" +msgstr "Athainmnigh Autoload" + +msgid "Toggle Autoload Globals" +msgstr "Scoránaigh Globals Autoload" + +msgid "Move Autoload" +msgstr "Bog Uathluchtaigh" + +msgid "Remove Autoload" +msgstr "Bain Uathlódáil" + +msgid "Enable" +msgstr "Cumasaigh" + +msgid "Rearrange Autoloads" +msgstr "Athchóirigh Autoloads" + +msgid "Can't add Autoload:" +msgstr "Ní féidir uathlódáil a chur leis:" + +msgid "%s is an invalid path. File does not exist." +msgstr "Is cosán neamhbhailí é %s. Níl an comhad ann." + +msgid "%s is an invalid path. Not in resource path (res://)." +msgstr "Is cosán neamhbhailí é %s. Níl sé i gcosán acmhainne (res://)." + +msgid "Add Autoload" +msgstr "Cuir Uathluchtaigh Leis" + +msgid "Path:" +msgstr "Conair:" + +msgid "Set path or press \"%s\" to create a script." +msgstr "Socraigh conair nó brúigh \"%s\" chun script a chruthú." + +msgid "Node Name:" +msgstr "Ainm nód:" + +msgid "Global Variable" +msgstr "Athróg Dhomhanda" + +msgid "3D Engine" +msgstr "Inneall 3D" + +msgid "2D Physics" +msgstr "Fisic 2D" + +msgid "3D Physics" +msgstr "Fisic 3D" + +msgid "Navigation" +msgstr "Nascleanúint" + +msgid "XR" +msgstr "XRName" + +msgid "RenderingDevice" +msgstr "RindreáilDevice" + +msgid "OpenGL" +msgstr "OpenGLName" + +msgid "Vulkan" +msgstr "Bolcán" + +msgid "Text Server: Fallback" +msgstr "Freastalaí Téacs: Fallback" + +msgid "Text Server: Advanced" +msgstr "Freastalaí Téacs: Casta" + +msgid "TTF, OTF, Type 1, WOFF1 Fonts" +msgstr "TTF, OTF, Cineál 1, Clónna WOFF1" + +msgid "WOFF2 Fonts" +msgstr "Clónna WOFF2" + +msgid "SIL Graphite Fonts" +msgstr "Clónna Graifíte SIL" + +msgid "Multi-channel Signed Distance Field Font Rendering" +msgstr "Rindreáil Cló Réimse Fad Sínithe Il-chainéil" + +msgid "3D Nodes as well as RenderingServer access to 3D features." +msgstr "Nóid 3D chomh maith le rochtain RenderingServer ar ghnéithe 3D." + +msgid "2D Physics nodes and PhysicsServer2D." +msgstr "Nóid Fisice 2D agus PhysicsServer2D." + +msgid "3D Physics nodes and PhysicsServer3D." +msgstr "Nóid Fisice 3D agus PhysicsServer3D." + +msgid "Navigation, both 2D and 3D." +msgstr "Loingseoireacht, 2D agus 3D araon." + +msgid "XR (AR and VR)." +msgstr "XR (AR agus VR)." + +msgid "" +"RenderingDevice based rendering (if disabled, the OpenGL back-end is " +"required)." +msgstr "" +"RindreáilDevice rindreáil bunaithe (má tá sé díchumasaithe, tá cúl-deireadh " +"OpenGL ag teastáil)." + +msgid "OpenGL back-end (if disabled, the RenderingDevice back-end is required)." +msgstr "" +"OpenGL back-end (má tá sé díchumasaithe, tá cúl-deireadh RenderingDevice ag " +"teastáil)." + +msgid "Vulkan back-end of RenderingDevice." +msgstr "Vulkan cúl-deireadh rindreáilDevice." + +msgid "" +"Fallback implementation of Text Server\n" +"Supports basic text layouts." +msgstr "" +"Cur i bhfeidhm Cúltaca an Fhreastalaí Téacs\n" +"Tacaíonn sé le leagan amach bunúsach téacs." + +msgid "" +"Text Server implementation powered by ICU and HarfBuzz libraries.\n" +"Supports complex text layouts, BiDi, and contextual OpenType font features." +msgstr "" +"Cur i bhfeidhm Freastalaí Téacs faoi thiomáint ag leabharlanna ICU agus " +"HarfBuzz.\n" +"Tacaíonn sé le leagan amach casta téacs, BiDi, agus gnéithe cló comhthéacsúla " +"OpenType." + +msgid "" +"TrueType, OpenType, Type 1, and WOFF1 font format support using FreeType " +"library (if disabled, WOFF2 support is also disabled)." +msgstr "" +"Tacaíocht formáid cló TrueType, OpenType, Cineál 1, agus WOFF1 ag baint " +"úsáide as leabharlann FreeType (má tá sé díchumasaithe, tá tacaíocht WOFF2 " +"díchumasaithe freisin)." + +msgid "WOFF2 font format support using FreeType and Brotli libraries." +msgstr "" +"Tacaíocht formáid cló WOFF2 ag baint úsáide as leabharlanna FreeType agus " +"Brotli." + +msgid "" +"SIL Graphite smart font technology support (supported by Advanced Text Server " +"only)." +msgstr "" +"Tacaíocht teicneolaíochta cló cliste SIL Graphite (le tacaíocht ó Advanced " +"Text Server amháin)." + +msgid "" +"Multi-channel signed distance field font rendering support using msdfgen " +"library (pre-rendered MSDF fonts can be used even if this option disabled)." +msgstr "" +"Tacaíocht rindreáil cló réimse achar sínithe il-chainéil ag baint úsáide as " +"leabharlann MSDFGEN (is féidir clónna MSDF réamhdhéanta a úsáid fiú má tá an " +"rogha seo díchumasaithe)." + +msgid "General Features:" +msgstr "Gnéithe Ginearálta:" + +msgid "Text Rendering and Font Options:" +msgstr "Rindreáil Téacs agus Roghanna Cló:" + +msgid "Reset the edited profile?" +msgstr "Athshocraigh an phróifíl atheagraithe?" + +msgid "File saving failed." +msgstr "Theip ar shábháil an chomhaid." + +msgid "Create a new profile?" +msgstr "Cruthaigh próifíl nua?" + +msgid "This will scan all files in the current project to detect used classes." +msgstr "" +"Déanfaidh sé seo scanadh ar gach comhad sa tionscadal reatha chun ranganna " +"úsáidte a bhrath." + +msgid "Nodes and Classes:" +msgstr "Nóid agus Ranganna:" + +msgid "File '%s' format is invalid, import aborted." +msgstr "Tá formáid an chomhaid '%s' neamhbhailí, á thobscor." + +msgid "Error saving profile to path: '%s'." +msgstr "Earráid agus próifíl á sábháil go cosán: '%s'." + +msgid "New" +msgstr "Nua" + +msgid "Save" +msgstr "Sábháil" + +msgid "Profile:" +msgstr "Próifíl:" + +msgid "Reset to Defaults" +msgstr "Athshocraigh go Réamhshocruithe" + +msgid "Detect from Project" +msgstr "Braith ón Tionscadal" + +msgid "Actions:" +msgstr "Gníomhartha:" + +msgid "Configure Engine Compilation Profile:" +msgstr "Cumraigh Próifíl Tiomsúcháin Innill:" + +msgid "Please Confirm:" +msgstr "Deimhnigh le do thoil:" + +msgid "Engine Compilation Profile" +msgstr "Próifíl Tiomsúcháin Innill" + +msgid "Load Profile" +msgstr "Luchtaigh Próifíl" + +msgid "Export Profile" +msgstr "Easpórtáil Próifíl" + +msgid "Forced Classes on Detect:" +msgstr "Ranganna éigeantacha ar bhrath:" + +msgid "Edit Compilation Configuration Profile" +msgstr "Cuir Próifíl Chumraíochta Tiomsúcháin in Eagar" + +msgid "" +"Failed to execute command \"%s\":\n" +"%s." +msgstr "" +"Theip ar ordú \"%s\" a rith:\n" +"%s." + +msgid "Filter Commands" +msgstr "Scag Orduithe" + +msgid "Paste Params" +msgstr "Greamaigh Params" + +msgid "Updating Scene" +msgstr "Radharc á Nuashonrú" + +msgid "Storing local changes..." +msgstr "Athruithe áitiúla á stóráil..." + +msgid "Updating scene..." +msgstr "Radharc á nuashonrú..." + +msgid "[empty]" +msgstr "[folamh]" + +msgid "[unsaved]" +msgstr "[gan sásamh]" + +msgid "%s - Godot Engine" +msgstr "%s - Inneall Godot" + +msgid "Move this dock right one tab." +msgstr "Bog an duga seo ar dheis cluaisín amháin." + +msgid "Move this dock left one tab." +msgstr "Bog an duga seo ar chlé cluaisín amháin." + +msgid "Dock Position" +msgstr "Ionad na nDuganna" + +msgid "Make Floating" +msgstr "Déan Snámh" + +msgid "Make this dock floating." +msgstr "Déan an duga seo ar snámh." + +msgid "Move to Bottom" +msgstr "Bog go Bun" + +msgid "Move this dock to the bottom panel." +msgstr "Bog an duga seo go dtí an painéal bun." + +msgid "Close this dock." +msgstr "Dún an duga seo." + +msgid "3D Editor" +msgstr "Eagarthóir 3D" + +msgid "Script Editor" +msgstr "Eagarthóir Scripte" + +msgid "Asset Library" +msgstr "Leabharlann Sócmhainní" + +msgid "Scene Tree Editing" +msgstr "Eagarthóireacht Crann Radharc" + +msgid "Node Dock" +msgstr "Duga nód" + +msgid "FileSystem Dock" +msgstr "Duga an Chórais Comhad" + +msgid "Import Dock" +msgstr "Duga Iompórtála" + +msgid "History Dock" +msgstr "Duga Staire" + +msgid "Allows to view and edit 3D scenes." +msgstr "Ceadaíonn sé radhairc 3D a fheiceáil agus a chur in eagar." + +msgid "Allows to edit scripts using the integrated script editor." +msgstr "" +"Ceadaíonn sé seo scripteanna a chur in eagar ag baint úsáide as an eagarthóir " +"scripte comhtháite." + +msgid "Provides built-in access to the Asset Library." +msgstr "Soláthraíonn sé rochtain ionsuite ar an Leabharlann Sócmhainní." + +msgid "Allows editing the node hierarchy in the Scene dock." +msgstr "" +"Ceadaíonn sé eagarthóireacht a dhéanamh ar ordlathas na nód sa duga Radharc." + +msgid "" +"Allows to work with signals and groups of the node selected in the Scene dock." +msgstr "" +"Ceadaíonn sé oibriú le comharthaí agus grúpaí den nód a roghnaíodh sa duga " +"Radharc." + +msgid "Allows to browse the local file system via a dedicated dock." +msgstr "" +"Ceadaíonn sé seo an córas comhad áitiúil a bhrabhsáil trí dhuga tiomnaithe." + +msgid "" +"Allows to configure import settings for individual assets. Requires the " +"FileSystem dock to function." +msgstr "" +"Ceadaíonn sé socruithe iompórtála a chumrú le haghaidh sócmhainní aonair. " +"Éilíonn an duga FileSystem feidhmiú." + +msgid "Provides an overview of the editor's and each scene's undo history." +msgstr "" +"Tugtar forbhreathnú ar stair chealúcháin an eagarthóra agus gach radhairc." + +msgid "(current)" +msgstr "(reatha)" + +msgid "(none)" +msgstr "(aon cheann)" + +msgid "Remove currently selected profile, '%s'? Cannot be undone." +msgstr "Bain an phróifíl roghnaithe faoi láthair, '%s'? Ní féidir é a chealú." + +msgid "Profile must be a valid filename and must not contain '.'" +msgstr "" +"Caithfidh an phróifíl a bheith ina comhadainm bailí agus gan '.' a bheith inti" + +msgid "Profile with this name already exists." +msgstr "Tá próifíl leis an ainm seo ann cheana féin." + +msgid "(Editor Disabled, Properties Disabled)" +msgstr "(Eagarthóir Díchumasaithe, Airíonna Díchumasaithe)" + +msgid "(Properties Disabled)" +msgstr "(Airíonna Díchumasaithe)" + +msgid "(Editor Disabled)" +msgstr "(Díchumasaíodh an tEagarthóir)" + +msgid "Class Options:" +msgstr "Roghanna Ranga:" + +msgid "Enable Contextual Editor" +msgstr "Cumasaigh Eagarthóir Comhthéacsúil" + +msgid "Class Properties:" +msgstr "Airíonna Ranga:" + +msgid "Main Features:" +msgstr "Príomhghnéithe:" + +msgid "" +"Profile '%s' already exists. Remove it first before importing, import aborted." +msgstr "" +"Tá próifíl '%s' ann cheana. Bain é ar dtús roimh allmhairiú, allmhairiú " +"aborted." + +msgid "Reset to Default" +msgstr "Athshocraigh go Réamhshocrú" + +msgid "Current Profile:" +msgstr "Próifíl Reatha:" + +msgid "Create Profile" +msgstr "Cruthaigh Próifíl" + +msgid "Remove Profile" +msgstr "Bain Próifíl" + +msgid "Available Profiles:" +msgstr "Próifílí atá ar fáil:" + +msgid "Make Current" +msgstr "Déan Reatha" + +msgid "Import" +msgstr "Iompórtáil" + +msgid "Export" +msgstr "Easpórtáil" + +msgid "Configure Selected Profile:" +msgstr "Cumraigh an Phróifíl Roghnaithe:" + +msgid "Extra Options:" +msgstr "Roghanna Breise:" + +msgid "Create or import a profile to edit available classes and properties." +msgstr "" +"Cruthaigh nó iompórtáil próifíl chun ranganna agus airíonna atá ar fáil a " +"chur in eagar." + +msgid "New profile name:" +msgstr "Ainm próifíle nua:" + +msgid "Godot Feature Profile" +msgstr "Próifíl Gné Godot" + +msgid "Import Profile(s)" +msgstr "Iompórtáil Próifíl(í)" + +msgid "Manage Editor Feature Profiles" +msgstr "Bainistigh Próifílí Gné an Eagarthóra" + +msgid "Some extensions need the editor to restart to take effect." +msgstr "Ní mór don eagarthóir atosú chun éifeacht a thabhairt do roinnt síntí." + +msgid "Restart" +msgstr "Atosaigh" + +msgid "Save & Restart" +msgstr "Sábháil & Atosaigh" + +msgid "ScanSources" +msgstr "ScanFoinsí" + +msgid "Update Scene Groups" +msgstr "Nuashonraigh Grúpaí Radhairc" + +msgid "Updating Scene Groups..." +msgstr "Grúpaí Radhairc á nuashonrú..." + +msgid "" +"There are multiple importers for different types pointing to file %s, import " +"aborted" +msgstr "" +"Tá iliomad iompórtálaithe ann le haghaidh cineálacha éagsúla a dhíríonn ar " +"chomhad %s, iompórtáil tobscortha" + +msgid "(Re)Importing Assets" +msgstr "(Ath) Sócmhainní Iompórtála" + +msgid "Import resources of type: %s" +msgstr "Iompórtáil acmhainní de chineál: %s" + +msgid "No return value." +msgstr "Gan luach fillte." + +msgid "This value is an integer composed as a bitmask of the following flags." +msgstr "" +"Is slánuimhir é an luach seo atá comhdhéanta mar mhasc giotán de na bratacha " +"seo a leanas." + +msgid "Deprecated" +msgstr "Dímheasta" + +msgid "Experimental" +msgstr "Turgnamhach" + +msgid "Deprecated:" +msgstr "Dímheasta:" + +msgid "Experimental:" +msgstr "Turgnamhach:" + +msgid "This method supports a variable number of arguments." +msgstr "Tacaíonn an modh seo le líon athraitheach argóintí." + +msgid "" +"This method is called by the engine.\n" +"It can be overridden to customize built-in behavior." +msgstr "" +"Is é an t-inneall a thugann an modh seo.\n" +"Is féidir é a shárú chun iompar tógtha a shaincheapadh." + +msgid "" +"This method has no side effects.\n" +"It does not modify the object in any way." +msgstr "" +"Níl aon fo-iarsmaí ag an modh seo.\n" +"Ní athraíonn sé an réad ar bhealach ar bith." + +msgid "" +"This method does not need an instance to be called.\n" +"It can be called directly using the class name." +msgstr "" +"Ní gá cás a ghlaoch ar an modh seo.\n" +"Is féidir glaoch air go díreach ag baint úsáide as ainm an ranga." + +msgid "Constructors" +msgstr "Cruthaitheoirí" + +msgid "Operators" +msgstr "Oibreoirí" + +msgid "Method Descriptions" +msgstr "Cur Síos ar an Modh" + +msgid "Constructor Descriptions" +msgstr "Cur Síos ar an Tógálaí" + +msgid "Operator Descriptions" +msgstr "Cur Síos ar an Oibreoir" + +msgid "This method may be changed or removed in future versions." +msgstr "Is féidir an modh seo a athrú nó a bhaint i leaganacha amach anseo." + +msgid "This constructor may be changed or removed in future versions." +msgstr "" +"Is féidir an cruthaitheoir seo a athrú nó a bhaint i leaganacha amach anseo." + +msgid "This operator may be changed or removed in future versions." +msgstr "" +"Is féidir an t-oibreoir seo a athrú nó a bhaint i leaganacha amach anseo." + +msgid "Error codes returned:" +msgstr "Cóid earráide ar ais:" + +msgid "There is currently no description for this method." +msgstr "Níl aon chur síos ar an modh seo faoi láthair." + +msgid "There is currently no description for this constructor." +msgstr "Níl aon tuairisc ar an tógálaí seo faoi láthair." + +msgid "There is currently no description for this operator." +msgstr "Níl aon tuairisc ar an oibreoir seo faoi láthair." + +msgid "" +"There is currently no description for this method. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" +"Níl aon chur síos ar an modh seo faoi láthair. Cabhraigh linn le do thoil ag " +"[dath = $color] [url = $url] ag cur ceann [/ url] [/ dath]!" + +msgid "" +"There is currently no description for this constructor. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" +"Níl aon tuairisc ar an tógálaí seo faoi láthair. Cabhraigh linn le do thoil " +"ag [dath = $color] [url = $url] ag cur ceann [/ url] [/ dath]!" + +msgid "" +"There is currently no description for this operator. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" +"Níl aon tuairisc ar an oibreoir seo faoi láthair. Cabhraigh linn le do thoil " +"ag [dath = $color] [url = $url] ag cur ceann [/ url] [/ dath]!" + +msgid "Top" +msgstr "Barr" + +msgid "Class:" +msgstr "Rang:" + +msgid "This class may be changed or removed in future versions." +msgstr "Is féidir an rang seo a athrú nó a bhaint i leaganacha amach anseo." + +msgid "Inherits:" +msgstr "Oidhreacht:" + +msgid "Inherited by:" +msgstr "Le hoidhreacht ag:" + +msgid "Description" +msgstr "Cur síos" + +msgid "There is currently no description for this class." +msgstr "Níl aon chur síos ar an rang seo faoi láthair." + +msgid "" +"There is currently no description for this class. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" +"Níl aon chur síos ar an rang seo faoi láthair. Cabhraigh linn le do thoil ag " +"[dath = $color] [url = $url] ag cur ceann [/ url] [/ dath]!" + +msgid "Note:" +msgstr "Nóta:" + +msgid "" +"There are notable differences when using this API with C#. See [url=%s]C# API " +"differences to GDScript[/url] for more information." +msgstr "" +"Tá difríochtaí suntasacha ann agus an API seo á úsáid le C#. Féach [url=%s]C# " +"difríochtaí API le GDScript[/url] le haghaidh tuilleadh eolais." + +msgid "Online Tutorials" +msgstr "Ranganna Teagaisc Ar Líne" + +msgid "Properties" +msgstr "Airíonna" + +msgid "overrides %s:" +msgstr "Sáraíonn sé %s:" + +msgid "default:" +msgstr "réamhshocrú:" + +msgid "property:" +msgstr "maoin:" + +msgid "Theme Properties" +msgstr "Airíonna an Téama" + +msgid "Colors" +msgstr "Dathanna" + +msgid "Constants" +msgstr "Tairisigh" + +msgid "Fonts" +msgstr "Foinsí" + +msgid "Font Sizes" +msgstr "Clómhéideanna" + +msgid "Icons" +msgstr "Deilbhíní" + +msgid "Styles" +msgstr "Stíleanna" + +msgid "There is currently no description for this theme property." +msgstr "Níl aon chur síos ar an maoin téama seo faoi láthair." + +msgid "" +"There is currently no description for this theme property. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" +"Níl aon chur síos ar an maoin téama seo faoi láthair. Cabhraigh linn le do " +"thoil ag [dath = $color] [url = $url] ag cur ceann [/ url] [/ dath]!" + +msgid "This signal may be changed or removed in future versions." +msgstr "" +"Is féidir an comhartha seo a athrú nó a bhaint i leaganacha amach anseo." + +msgid "There is currently no description for this signal." +msgstr "Níl aon chur síos ar an gcomhartha seo faoi láthair." + +msgid "" +"There is currently no description for this signal. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" +"Níl aon chur síos ar an gcomhartha seo faoi láthair. Cabhraigh linn le do " +"thoil ag [dath = $color] [url = $url] ag cur ceann [/ url] [/ dath]!" + +msgid "Enumerations" +msgstr "Áirimh" + +msgid "This enumeration may be changed or removed in future versions." +msgstr "" +"Is féidir an t-áireamh seo a athrú nó a bhaint i leaganacha amach anseo." + +msgid "This constant may be changed or removed in future versions." +msgstr "" +"Is féidir an tairiseach seo a athrú nó a bhaint i leaganacha amach anseo." + +msgid "Annotations" +msgstr "Anótálacha" + +msgid "There is currently no description for this annotation." +msgstr "Níl aon chur síos ar an anótáil seo faoi láthair." + +msgid "" +"There is currently no description for this annotation. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" +"Níl aon chur síos ar an anótáil seo faoi láthair. Cabhraigh linn le do thoil " +"ag [dath = $color] [url = $url] ag cur ceann [/ url] [/ dath]!" + +msgid "Property Descriptions" +msgstr "Tuairiscí Maoine" + +msgid "(value)" +msgstr "(luach)" + +msgid "This property may be changed or removed in future versions." +msgstr "Is féidir an mhaoin seo a athrú nó a bhaint i leaganacha amach anseo." + +msgid "" +"[b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will " +"not update the original property value. See [%s] for more details." +msgstr "" +"[b] Tabhair faoi deara:[/b] Is é an eagar ar ais [i]chóipeáil[/i] agus ní " +"dhéanfaidh aon athruithe air an luach maoine bunaidh a nuashonrú. Féach [%s] " +"le haghaidh tuilleadh sonraí." + +msgid "There is currently no description for this property." +msgstr "Níl aon tuairisc ar an maoin seo faoi láthair." + +msgid "" +"There is currently no description for this property. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" +"Níl aon tuairisc ar an maoin seo faoi láthair. Cabhraigh linn le do thoil ag " +"[dath = $color] [url = $url] ag cur ceann [/ url] [/ dath]!" + +msgid "Editor" +msgstr "Eagarthóir" + +msgid "Click to copy." +msgstr "Cliceáil chun cóipeáil." + +msgid "No description available." +msgstr "Níl cur síos ar fáil." + +msgid "Metadata:" +msgstr "Meiteashonraí:" + +msgid "Setting:" +msgstr "Socrú:" + +msgid "Property:" +msgstr "Maoin:" + +msgid "Internal Property:" +msgstr "Maoin Inmheánach:" + +msgid "This property can only be set in the Inspector." +msgstr "Ní féidir an mhaoin seo a shocrú ach amháin sa Chigire." + +msgid "Method:" +msgstr "Modh:" + +msgid "Signal:" +msgstr "Comhartha:" + +msgid "Theme Property:" +msgstr "Maoin Téama:" + +msgid "%d match." +msgstr "%d comhoiriúnach." + +msgid "%d matches." +msgstr "%d comhoiriúnach." + +msgid "Constructor" +msgstr "Cruthaitheoir" + +msgid "Method" +msgstr "Modh" + +msgid "Operator" +msgstr "Oibreoir" + +msgid "Signal" +msgstr "Comhartha" + +msgid "Constant" +msgstr "Tairiseach" + +msgid "Property" +msgstr "Maoin" + +msgid "Theme Property" +msgstr "Airíonna Téama" + +msgid "Annotation" +msgstr "Anótáil" + +msgid "Search Help" +msgstr "Cabhair Chuardaigh" + +msgid "Case Sensitive" +msgstr "Cásíogair" + +msgid "Show Hierarchy" +msgstr "Taispeáin Ordlathas" + +msgid "Display All" +msgstr "Taispeáin Gach Rud" + +msgid "Classes Only" +msgstr "Ranganna Amháin" + +msgid "Constructors Only" +msgstr "Cruthaitheoirí Amháin" + +msgid "Methods Only" +msgstr "Modhanna Amháin" + +msgid "Operators Only" +msgstr "Oibreoirí Amháin" + +msgid "Signals Only" +msgstr "Comharthaí Amháin" + +msgid "Annotations Only" +msgstr "Anótálacha Amháin" + +msgid "Constants Only" +msgstr "Tairisigh Amháin" + +msgid "Properties Only" +msgstr "Airíonna Amháin" + +msgid "Theme Properties Only" +msgstr "Airíonna téama amháin" + +msgid "Member Type" +msgstr "Cineál Ball" + +msgid "(constructors)" +msgstr "(cruthaitheoirí)" + +msgid "Keywords" +msgstr "Eochairfhocail" + +msgid "Class" +msgstr "Aicme" + +msgid "This member is marked as deprecated." +msgstr "Tá an ball seo marcáilte mar dhímheas." + +msgid "This member is marked as experimental." +msgstr "Tá an ball seo marcáilte mar thurgnamhach." + +msgid "Pin Value" +msgstr "Luach bioráin" + +msgid "Pin Value [Disabled because '%s' is editor-only]" +msgstr "Luach PIN [Díchumasaithe toisc go bhfuil '%s' ina eagarthóir amháin]" + +msgid "Pinning a value forces it to be saved even if it's equal to the default." +msgstr "" +"Pinning fórsaí luach é a shábháil fiú má tá sé comhionann leis an " +"mainneachtain." + +msgid "(%d change)" +msgid_plural "(%d changes)" +msgstr[0] "(%d athrú)" +msgstr[1] "(%d athruithe)" +msgstr[2] "(%d athruithe)" +msgstr[3] "(%d athruithe)" +msgstr[4] "(%d athruithe)" + +msgid "Add element to property array with prefix %s." +msgstr "Cuir eilimint le eagar maoine leis an réimír %s." + +msgid "Remove element %d from property array with prefix %s." +msgstr "Bain eilimint %d ó eagar maoine leis an réimír %s." + +msgid "Move element %d to position %d in property array with prefix %s." +msgstr "Bog eilimint %d chun %d a shuíomh in eagar maoine leis an réimír %s." + +msgid "Clear Property Array with Prefix %s" +msgstr "Glan eagar na Maoine leis an réimír %s" + +msgid "Resize Property Array with Prefix %s" +msgstr "Athraigh Eagar Na Maoine le Réimír %s" + +msgid "Element %d: %s%d*" +msgstr "Eilimint %d: %s%d*" + +msgid "Move Up" +msgstr "Bog Suas" + +msgid "Move Down" +msgstr "Bog Síos" + +msgid "Insert New Before" +msgstr "Ionsáigh Nua Roimh" + +msgid "Insert New After" +msgstr "Ionsáigh Nua Tar éis" + +msgid "Clear Array" +msgstr "Eagar Glan" + +msgid "Resize Array..." +msgstr "Athraigh Méid an Eagair..." + +msgid "Add Element" +msgstr "Cuir Eilimint Leis" + +msgid "Resize Array" +msgstr "Athraigh Méid an Eagair" + +msgid "New Size:" +msgstr "Méid Nua:" + +msgid "Element %s" +msgstr "Eilimint %s" + +msgid "Add Metadata" +msgstr "Cuir Meiteashonraí Leis" + +msgid "Set %s" +msgstr "Socraigh %s" + +msgid "Set Multiple: %s" +msgstr "Socraigh Il: %s" + +msgid "Remove metadata %s" +msgstr "Bain meiteashonraí %s" + +msgid "Pinned %s" +msgstr "Pionnáilte %s" + +msgid "Unpinned %s" +msgstr "Gan phionnáil %s" + +msgid "Add metadata %s" +msgstr "Cuir meiteashonraí %s leis" + +msgid "Metadata name can't be empty." +msgstr "Ní féidir ainm meiteashonraí a bheith folamh." + +msgid "Metadata name must be a valid identifier." +msgstr "Ní mór ainm meiteashonraí a bheith ina aitheantóir bailí." + +msgid "Metadata with name \"%s\" already exists." +msgstr "Tá meiteashonraí leis an ainm \"%s\" ann cheana." + +msgid "Names starting with _ are reserved for editor-only metadata." +msgstr "" +"Ainmneacha ag tosú le _ in áirithe le haghaidh meiteashonraí eagarthóir " +"amháin." + +msgid "Name:" +msgstr "Ainm:" + +msgid "Metadata name is valid." +msgstr "Tá ainm meiteashonraí bailí." + +msgid "Add Metadata Property for \"%s\"" +msgstr "Cuir Airíonna Meiteashonraí le haghaidh \"%s\"" + +msgid "Copy Value" +msgstr "Cóipeáil Luach" + +msgid "Paste Value" +msgstr "Greamaigh Luach" + +msgid "Copy Property Path" +msgstr "Cóipeáil Conair na Maoine" + +msgid "Creating Mesh Previews" +msgstr "Réamhamhairc Mogalra a Chruthú" + +msgid "Thumbnail..." +msgstr "Mionsamhail..." + +msgid "Select existing layout:" +msgstr "Roghnaigh an leagan amach atá ann cheana:" + +msgid "Or enter new layout name" +msgstr "Nó cuir isteach ainm nua an leagain amach" + +msgid "Changed Locale Language Filter" +msgstr "Athraigh scagaire teanga logánaitheName" + +msgid "Changed Locale Script Filter" +msgstr "Athraigh Scagaire Scripte Logánaithe" + +msgid "Changed Locale Country Filter" +msgstr "Athraigh Scagaire Tíre LogánaitheName" + +msgid "Changed Locale Filter Mode" +msgstr "Athraíodh mód scagaire logchaighdeán" + +msgid "[Default]" +msgstr "[Réamhshocrú]" + +msgid "Select a Locale" +msgstr "Roghnaigh" + +msgid "Show All Locales" +msgstr "Taispeáin Gach Logán" + +msgid "Show Selected Locales Only" +msgstr "Taispeáin Logchaighdeáin roghnaithe amháin" + +msgid "Edit Filters" +msgstr "Cuir Scagairí in Eagar" + +msgid "Language:" +msgstr "Teanga:" + +msgctxt "Locale" +msgid "Script:" +msgstr "Script:" + +msgid "Country:" +msgstr "Tír:" + +msgid "Language" +msgstr "Teanga" + +msgctxt "Locale" +msgid "Script" +msgstr "Script" + +msgid "Country" +msgstr "Tír" + +msgid "Variant" +msgstr "Malairt" + +msgid "Filter Messages" +msgstr "Scag Teachtaireachtaí" + +msgid "Clear Output" +msgstr "Glan Aschur" + +msgid "Copy Selection" +msgstr "Cóipeáil an Roghnúchán" + +msgid "" +"Collapse duplicate messages into one log entry. Shows number of occurrences." +msgstr "" +"Laghdaigh teachtaireachtaí dúblacha in iontráil logála amháin. Taispeánann " +"seo líon na dtarluithe." + +msgid "Focus Search/Filter Bar" +msgstr "Barra Cuardaigh/Scagaire Fócais" + +msgid "Toggle visibility of standard output messages." +msgstr "Scoránaigh infheictheacht teachtaireachtaí caighdeánacha aschuir." + +msgid "Toggle visibility of errors." +msgstr "Scoránaigh infheictheacht earráidí." + +msgid "Toggle visibility of warnings." +msgstr "Scoránaigh infheictheacht rabhaidh." + +msgid "Toggle visibility of editor messages." +msgstr "Scoránaigh infheictheacht teachtaireachtaí eagarthóra." + +msgid "Native Shader Source Inspector" +msgstr "Cigire Foinse Shader Dúchasach" + +msgid "Unnamed Project" +msgstr "Tionscadal Gan Ainm" + +msgid "" +"Spins when the editor window redraws.\n" +"Update Continuously is enabled, which can increase power usage. Click to " +"disable it." +msgstr "" +"Spins nuair a redraws an fhuinneog eagarthóir.\n" +"Nuashonrú Cumasaithe go leanúnach, ar féidir leis úsáid cumhachta a mhéadú. " +"Cliceáil chun é a dhíchumasú." + +msgid "Spins when the editor window redraws." +msgstr "Spins nuair a redraws an fhuinneog eagarthóir." + +msgid "Imported resources can't be saved." +msgstr "Ní féidir acmhainní iompórtáilte a shábháil." + +msgid "OK" +msgstr "Ceart go leor" + +msgid "Error saving resource!" +msgstr "Earráid agus acmhainn á sábháil!" + +msgid "" +"This resource can't be saved because it does not belong to the edited scene. " +"Make it unique first." +msgstr "" +"Ní féidir an acmhainn seo a shábháil toisc nach mbaineann sé leis an radharc " +"atheagraithe. Déan uathúil é ar dtús." + +msgid "" +"This resource can't be saved because it was imported from another file. Make " +"it unique first." +msgstr "" +"Ní féidir an acmhainn seo a shábháil toisc gur iompórtáladh í ó chomhad eile. " +"Déan uathúil é ar dtús." + +msgid "Save Resource As..." +msgstr "Sábháil Acmhainn Mar..." + +msgid "Can't open file for writing:" +msgstr "Ní féidir comhad a oscailt le scríobh:" + +msgid "Requested file format unknown:" +msgstr "Ní fios formáid comhaid iarrtha:" + +msgid "Error while saving." +msgstr "Earráid agus sábháil á sábháil." + +msgid "Can't open file '%s'. The file could have been moved or deleted." +msgstr "" +"Ní féidir comhad '%s' a oscailt. D'fhéadfaí an comhad a bhogadh nó a " +"scriosadh." + +msgid "Error while parsing file '%s'." +msgstr "Earráid agus comhad '%s' á pharsáil." + +msgid "Scene file '%s' appears to be invalid/corrupt." +msgstr "" +"Dealraíonn sé go bhfuil an comhad radhairc '%s' neamhbhailí/truaillithe." + +msgid "Missing file '%s' or one of its dependencies." +msgstr "Comhad '%s' ar iarraidh nó ceann dá spleáchais." + +msgid "" +"File '%s' is saved in a format that is newer than the formats supported by " +"this version of Godot, so it can't be opened." +msgstr "" +"Sábháiltear an comhad '%s' i bhformáid atá níos nuaí ná na formáidí a " +"dtacaíonn an leagan seo de Godot leo, ionas nach féidir é a oscailt." + +msgid "Error while loading file '%s'." +msgstr "Earráid agus comhad '%s' á luchtú." + +msgid "Saving Scene" +msgstr "Radharc á Shábháil" + +msgid "Analyzing" +msgstr "Anailís" + +msgid "Creating Thumbnail" +msgstr "Mionsamhail á Cruthú" + +msgid "This operation can't be done without a tree root." +msgstr "Ní féidir an oibríocht seo a dhéanamh gan fréamh crainn." + +msgid "" +"This scene can't be saved because there is a cyclic instance inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" +"Ní féidir an radharc seo a shábháil toisc go bhfuil cuimsiú cásanna " +"timthriallach ann.\n" +"Réitigh é le do thoil agus ansin déan iarracht é a shábháil arís." + +msgid "" +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." +msgstr "" +"Níorbh fhéidir radharc a shábháil. Níorbh fhéidir spleáchais dhóchúla " +"(cásanna nó oidhreacht) a shásamh." + +msgid "Save scene before running..." +msgstr "Sábháil radharc roimh rith..." + +msgid "Could not save one or more scenes!" +msgstr "Níorbh fhéidir radharc amháin nó níos mó a shábháil!" + +msgid "Save All Scenes" +msgstr "Sábháil Gach Radharc" + +msgid "Can't overwrite scene that is still open!" +msgstr "Ní féidir an radharc atá fós ar oscailt a fhorscríobh!" + +msgid "Merge With Existing" +msgstr "Cumaisc le Reatha" + +msgid "Apply MeshInstance Transforms" +msgstr "Cuir Claochluithe MogalraInstance i bhfeidhm" + +msgid "Can't load MeshLibrary for merging!" +msgstr "Ní féidir MeshLibrary a luchtú le haghaidh cumaisc!" + +msgid "Error saving MeshLibrary!" +msgstr "Earráid agus Mogalra á shábháil!" + +msgid "" +"An error occurred while trying to save the editor layout.\n" +"Make sure the editor's user data path is writable." +msgstr "" +"Tharla earráid agus iarracht á déanamh leagan amach an eagarthóra a " +"shábháil.\n" +"Cinntigh go bhfuil cosán sonraí úsáideora an eagarthóra inscríofa." + +msgid "" +"Default editor layout overridden.\n" +"To restore the Default layout to its base settings, use the Delete Layout " +"option and delete the Default layout." +msgstr "" +"Sáraíodh leagan amach réamhshocraithe an eagarthóra.\n" +"Chun an leagan amach Réamhshocraithe a chur ar ais chuig a bhunshocruithe, " +"bain úsáid as an leagan amach Scrios agus scrios an leagan amach " +"Réamhshocraithe." + +msgid "Layout name not found!" +msgstr "Níor aimsíodh ainm an leagain amach!" + +msgid "Restored the Default layout to its base settings." +msgstr "Aischuireadh an leagan amach réamhshocraithe ar a bhunshocruithe." + +msgid "This object is marked as read-only, so it's not editable." +msgstr "Tá an réad seo marcáilte mar inléite amháin, mar sin níl sé in eagar." + +msgid "" +"This resource belongs to a scene that was imported, so it's not editable.\n" +"Please read the documentation relevant to importing scenes to better " +"understand this workflow." +msgstr "" +"Baineann an acmhainn seo le radharc a allmhairíodh, mar sin níl sé in eagar.\n" +"Léigh na doiciméid a bhaineann le radhairc a iompórtáil chun tuiscint níos " +"fearr a fháil ar an sreabhadh oibre seo." + +msgid "" +"This resource belongs to a scene that was instantiated or inherited.\n" +"Changes to it must be made inside the original scene." +msgstr "" +"Baineann an acmhainn seo le radharc a bhí toirtithe nó oidhreacht.\n" +"Ní mór athruithe a dhéanamh air taobh istigh den radharc bunaidh." + +msgid "" +"This resource was imported, so it's not editable. Change its settings in the " +"import panel and then re-import." +msgstr "" +"Iompórtáladh an acmhainn seo, mar sin níl sé in eagar. Athraigh a shocruithe " +"sa phainéal iompórtála agus ansin athiompórtáil." + +msgid "" +"This scene was imported, so changes to it won't be kept.\n" +"Instantiating or inheriting it will allow you to make changes to it.\n" +"Please read the documentation relevant to importing scenes to better " +"understand this workflow." +msgstr "" +"Iompórtáladh an radharc seo, mar sin ní choinneofar athruithe air.\n" +"Má dhéantar é a mheandarú nó a fháil le hoidhreacht, ligfidh sé duit " +"athruithe a dhéanamh air.\n" +"Léigh na doiciméid a bhaineann le radhairc a iompórtáil chun tuiscint níos " +"fearr a fháil ar an sreabhadh oibre seo." + +msgid "Changes may be lost!" +msgstr "D'fhéadfadh athruithe a bheith caillte!" + +msgid "This object is read-only." +msgstr "Tá an réad seo inléite amháin." + +msgid "Open Base Scene" +msgstr "Oscail Bunradharc" + +msgid "Quick Open..." +msgstr "Oscailte Tapa..." + +msgid "Quick Open Scene..." +msgstr "Radharc Oscailte Tapa..." + +msgid "Quick Open Script..." +msgstr "Script Oscailte Thapa..." + +msgid "%s no longer exists! Please specify a new save location." +msgstr "Níl %s ann a thuilleadh! Sonraigh suíomh sábhála nua le do thoil." + +msgid "" +"The current scene has no root node, but %d modified external resource(s) and/" +"or plugin data were saved anyway." +msgstr "" +"Níl aon nód fréimhe ag an radharc reatha, ach sábháladh %d acmhainní " +"seachtracha modhnaithe agus / nó sonraí breiseáin ar aon nós." + +msgid "" +"A root node is required to save the scene. You can add a root node using the " +"Scene tree dock." +msgstr "" +"Tá nód fréimhe ag teastáil chun an radharc a shábháil. Is féidir leat nód " +"fréimhe a chur leis ag baint úsáide as an duga crann Radharc." + +msgid "Save Scene As..." +msgstr "Sábháil radharc mar..." + +msgid "Current scene not saved. Open anyway?" +msgstr "Níor sábháladh an radharc reatha. Oscailte ar aon nós?" + +msgid "Can't undo while mouse buttons are pressed." +msgstr "Ní féidir é a chealú agus cnaipí luiche brúite." + +msgid "Nothing to undo." +msgstr "Ní dhéanfaidh aon ní a chealú." + +msgid "Global Undo: %s" +msgstr "Cealaigh Go Domhanda: %s" + +msgid "Remote Undo: %s" +msgstr "Cealaigh cianda: %s" + +msgid "Scene Undo: %s" +msgstr "Cealaigh an Radharc: %s" + +msgid "Can't redo while mouse buttons are pressed." +msgstr "Ní féidir athdhéanadh agus cnaipí luiche brúite." + +msgid "Nothing to redo." +msgstr "Ní dhéanfaidh aon ní a redo." + +msgid "Global Redo: %s" +msgstr "Athdhéan Domhanda: %s" + +msgid "Remote Redo: %s" +msgstr "Athdhéan cianda: %s" + +msgid "Scene Redo: %s" +msgstr "Athdhéan Radhairc: %s" + +msgid "Can't reload a scene that was never saved." +msgstr "Ní féidir radharc nár sábháladh riamh a athluchtú." + +msgid "Reload Saved Scene" +msgstr "Athluchtaigh an Radharc Sábháilte" + +msgid "" +"The current scene has unsaved changes.\n" +"Reload the saved scene anyway? This action cannot be undone." +msgstr "" +"Tá athruithe gan sábháil ar an radharc reatha.\n" +"Athluchtaigh an radharc sábháilte ar aon nós? Ní féidir an gníomh seo a " +"chealú." + +msgid "Save & Reload" +msgstr "Sábháil & Athlódáil" + +msgid "Save modified resources before reloading?" +msgstr "Sábháil acmhainní modhnaithe roimh athlódáil?" + +msgid "Save & Quit" +msgstr "Sábháil & Scoir" + +msgid "Save modified resources before closing?" +msgstr "Sábháil acmhainní modhnaithe roimh dhúnadh?" + +msgid "Save changes to the following scene(s) before reloading?" +msgstr "" +"Sábháil athruithe ar an radharc/na radhairc seo a leanas sula n-" +"athluchtaítear iad?" + +msgid "Save changes to the following scene(s) before quitting?" +msgstr "Sábháil athruithe ar an radharc/na radhairc seo a leanas roimh scor?" + +msgid "Save changes to the following scene(s) before opening Project Manager?" +msgstr "" +"Sábháil athruithe ar an radharc/na radhairc seo a leanas sula n-osclaíonn tú " +"an Bainisteoir Tionscadail?" + +msgid "" +"This option is deprecated. Situations where refresh must be forced are now " +"considered a bug. Please report." +msgstr "" +"Déantar an rogha seo a dhímheas. Meastar anois gur fabht é cásanna ina " +"gcaithfear athnuachan a dhéanamh. Tuairiscigh, le do thoil." + +msgid "Pick a Main Scene" +msgstr "Roghnaigh Príomh-Radharc" + +msgid "This operation can't be done without a scene." +msgstr "Ní féidir an oibríocht seo a dhéanamh gan radharc." + +msgid "Export Mesh Library" +msgstr "Easpórtáil Leabharlann Mogalra" + +msgid "Unable to enable addon plugin at: '%s' parsing of config failed." +msgstr "" +"Ní féidir breiseán addon a chumasú ag: Theip ar pharsáil cumraíochta '%s'." + +msgid "Unable to find script field for addon plugin at: '%s'." +msgstr "" +"Ní féidir réimse scripte a aimsiú le haghaidh breiseán breiseáin ag: '%s'." + +msgid "Unable to load addon script from path: '%s'." +msgstr "Ní féidir script an bhreiseáin a luchtú ón gcosán: '%s'." + +msgid "" +"Unable to load addon script from path: '%s'. This might be due to a code " +"error in that script.\n" +"Disabling the addon at '%s' to prevent further errors." +msgstr "" +"Ní féidir script an bhreiseáin a luchtú ón gcosán: '%s'. D'fhéadfadh sé seo a " +"bheith mar gheall ar earráid cód sa script sin.\n" +"An breiseán ag '%s' a dhíchumasú chun tuilleadh earráidí a chosc." + +msgid "" +"Unable to load addon script from path: '%s'. Base type is not 'EditorPlugin'." +msgstr "" +"Ní féidir script an bhreiseáin a luchtú ón gcosán: '%s'. Ní 'EditorPlugin' an " +"bunchineál." + +msgid "Unable to load addon script from path: '%s'. Script is not in tool mode." +msgstr "" +"Ní féidir script an bhreiseáin a luchtú ón gcosán: '%s'. Níl an script i mód " +"uirlisí." + +msgid "" +"Scene '%s' was automatically imported, so it can't be modified.\n" +"To make changes to it, a new inherited scene can be created." +msgstr "" +"Iompórtáladh radharc '%s' go huathoibríoch, ionas nach féidir é a athrú.\n" +"Chun athruithe a dhéanamh air, is féidir radharc nua oidhreachta a chruthú." + +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to open " +"the scene, then save it inside the project path." +msgstr "" +"Earráid agus radharc á luchtú, caithfidh sé a bheith taobh istigh de chonair " +"an tionscadail. Bain úsáid as 'Iompórtáil' chun an radharc a oscailt, ansin é " +"a shábháil taobh istigh de chonair an tionscadail." + +msgid "Scene '%s' has broken dependencies:" +msgstr "Tá spleáchais briste ag radharc '%s':" + +msgid "" +"Multi-window support is not available because the `--single-window` command " +"line argument was used to start the editor." +msgstr "" +"Níl tacaíocht ilfhuinneoige ar fáil toisc gur úsáideadh argóint líne na n-" +"orduithe '--single-window' chun an t-eagarthóir a thosú." + +msgid "" +"Multi-window support is not available because the current platform doesn't " +"support multiple windows." +msgstr "" +"Níl tacaíocht ilfhuinneog ar fáil toisc nach dtacaíonn an t-ardán reatha le " +"fuinneoga éagsúla." + +msgid "" +"Multi-window support is not available because Interface > Editor > Single " +"Window Mode is enabled in the editor settings." +msgstr "" +"Níl tacaíocht ilfhuinneog ar fáil toisc go bhfuil Comhéadan > Eagarthóir > " +"Mód Fuinneog Aonair cumasaithe i socruithe an eagarthóra." + +msgid "" +"Multi-window support is not available because Interface > Multi Window > " +"Enable is disabled in the editor settings." +msgstr "" +"Níl tacaíocht ilfhuinneog ar fáil toisc go bhfuil Interface > Multi Window > " +"Enable díchumasaithe i socruithe an eagarthóra." + +msgid "Clear Recent Scenes" +msgstr "Glan Radhairc Le Déanaí" + +msgid "There is no defined scene to run." +msgstr "Níl aon radharc sainithe le rith." + +msgid "" +"No main scene has ever been defined, select one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" +"Níor sainmhíníodh aon phríomh-radharc riamh, roghnaigh ceann amháin?\n" +"Is féidir leat é a athrú níos déanaí i \"Socruithe Tionscadail\" faoin " +"gcatagóir 'feidhmchlár'." + +msgid "" +"Selected scene '%s' does not exist, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" +"Níl radharc roghnaithe '%s' ann, roghnaigh ceann bailí?\n" +"Is féidir leat é a athrú níos déanaí i \"Socruithe Tionscadail\" faoin " +"gcatagóir 'feidhmchlár'." + +msgid "" +"Selected scene '%s' is not a scene file, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" +"Ní comhad radhairc é an radharc roghnaithe '%s', roghnaigh ceann bailí?\n" +"Is féidir leat é a athrú níos déanaí i \"Socruithe Tionscadail\" faoin " +"gcatagóir 'feidhmchlár'." + +msgid "Save Layout..." +msgstr "Sábháil Leagan Amach..." + +msgid "Delete Layout..." +msgstr "Scrios Leagan Amach..." + +msgid "Default" +msgstr "Réamhshocrú" + +msgid "Save Layout" +msgstr "Sábháil Leagan Amach" + +msgid "Delete Layout" +msgstr "Scrios Leagan Amach" + +msgid "This scene was never saved." +msgstr "Níor sábháladh an radharc seo riamh." + +msgid "%d second ago" +msgid_plural "%d seconds ago" +msgstr[0] "%d soicind ó shin" +msgstr[1] "%d soicindí ó shin" +msgstr[2] "%d soicindí ó shin" +msgstr[3] "%d soicindí ó shin" +msgstr[4] "%d soicindí ó shin" + +msgid "%d minute ago" +msgid_plural "%d minutes ago" +msgstr[0] "%d nóiméad ó shin" +msgstr[1] "%d nóiméad ó shin" +msgstr[2] "%d nóiméad ó shin" +msgstr[3] "%d nóiméad ó shin" +msgstr[4] "%d nóiméad ó shin" + +msgid "%d hour ago" +msgid_plural "%d hours ago" +msgstr[0] "%d uair ó shin" +msgstr[1] "%d uair ó shin" +msgstr[2] "%d uair ó shin" +msgstr[3] "%d uair ó shin" +msgstr[4] "%d uair ó shin" + +msgid "" +"Scene \"%s\" has unsaved changes.\n" +"Last saved: %s." +msgstr "" +"Tá athruithe gan sábháil ag radharc \"%s\".\n" +"Sábháladh go deireanach: %s." + +msgid "Save & Close" +msgstr "Sábháil & Dún" + +msgid "Save before closing?" +msgstr "Sábháil roimh dhúnadh?" + +msgid "%d more files or folders" +msgstr "%d níos mó comhad nó fillteán" + +msgid "%d more folders" +msgstr "%d tuilleadh fillteán" + +msgid "%d more files" +msgstr "%d comhad eile" + +msgid "" +"Unable to write to file '%s', file in use, locked or lacking permissions." +msgstr "" +"Ní féidir scríobh chuig comhad '%s', comhad in úsáid, faoi ghlas nó gan " +"ceadanna." + +msgid "Preparing scenes for reload" +msgstr "Radhairc a ullmhú le hathlódáil" + +msgid "Analyzing scene %s" +msgstr "Anailís á déanamh ar radharc %s" + +msgid "Preparation done." +msgstr "Ullmhúchán déanta." + +msgid "Scenes reloading" +msgstr "Radhairc á n-athluchtú" + +msgid "Reloading..." +msgstr "Athluchtú..." + +msgid "Reloading done." +msgstr "Athluchtú déanta." + +msgid "" +"Changing the renderer requires restarting the editor.\n" +"\n" +"Choosing Save & Restart will change the rendering method to:\n" +"- Desktop platforms: %s\n" +"- Mobile platforms: %s\n" +"- Web platform: gl_compatibility" +msgstr "" +"Chun an rindreálaí a athrú ní mór an t-eagarthóir a atosú.\n" +"\n" +"Má roghnaítear Sábháil & Atosaigh athrófar an modh rindreála go:\n" +"- Ardáin deisce: %s\n" +"- Ardáin mhóibíleacha: %s\n" +"- Ardán Gréasáin: gl_compatibility" + +msgid "Forward+" +msgstr "Ar Aghaidh+" + +msgid "Mobile" +msgstr "Fón póca" + +msgid "Compatibility" +msgstr "Comhoiriúnacht" + +msgid "(Overridden)" +msgstr "(Sáraithe)" + +msgid "Lock Selected Node(s)" +msgstr "Cuir nód(anna) roghnaithe faoi ghlas" + +msgid "Unlock Selected Node(s)" +msgstr "Díghlasáil Nód(anna) Roghnaithe" + +msgid "Group Selected Node(s)" +msgstr "Grúpa Nód(anna) Roghnaithe" + +msgid "Ungroup Selected Node(s)" +msgstr "Díghrúpáil Nód(anna) Roghnaithe" + +msgid "Restart Emission" +msgstr "Atosaigh Astaíocht" + +msgid "Pan View" +msgstr "Amharc Pan" + +msgid "Distraction Free Mode" +msgstr "Mód Saor in Aisce Distraction" + +msgid "Toggle Last Opened Bottom Panel" +msgstr "Scoránaigh an bunphainéal is déanaí a osclaíodh" + +msgid "Toggle distraction-free mode." +msgstr "Scoránaigh mód saor ó sheachrán." + +msgid "Scene" +msgstr "Radharc" + +msgid "Operations with scene files." +msgstr "Oibríochtaí le comhaid radhairc." + +msgid "Copy Text" +msgstr "Cóipeáil Téacs" + +msgid "Next Scene Tab" +msgstr "An Chéad Chluaisín Radhairc Eile" + +msgid "Previous Scene Tab" +msgstr "An Cluaisín Radhairc Roimhe Seo" + +msgid "Focus FileSystem Filter" +msgstr "Scagaire Córas Comhad FócaisComment" + +msgid "Command Palette" +msgstr "Pailéad Ordaithe" + +msgid "New Scene" +msgstr "Radharc Nua" + +msgid "New Inherited Scene..." +msgstr "Radharc Nua Oidhreachta..." + +msgid "Open Scene..." +msgstr "Oscail Radharc..." + +msgid "Reopen Closed Scene" +msgstr "Radharc Dúnta a Athoscailt" + +msgid "Open Recent" +msgstr "Oscail Le Déanaí" + +msgid "Save Scene" +msgstr "Sábháil Radharc" + +msgid "Export As..." +msgstr "Easpórtáil Mar..." + +msgid "MeshLibrary..." +msgstr "MogalraLibrary..." + +msgid "Close Scene" +msgstr "Dún an Radharc" + +msgid "Quit" +msgstr "Scoir" + +msgid "Editor Settings..." +msgstr "Socruithe an Eagarthóra..." + +msgid "Project" +msgstr "Tionscadal" + +msgid "Project Settings..." +msgstr "Socruithe an Tionscadail..." + +msgid "Project Settings" +msgstr "Socruithe an Tionscadail" + +msgid "Version Control" +msgstr "Rialú Leagain" + +msgid "Export..." +msgstr "Easpórtáil..." + +msgid "Install Android Build Template..." +msgstr "Suiteáil Teimpléad Tógála Android..." + +msgid "Open User Data Folder" +msgstr "Oscail Fillteán Sonraí Úsáideora" + +msgid "Tools" +msgstr "Uirlisí" + +msgid "Orphan Resource Explorer..." +msgstr "Taiscéalaí Acmhainní Dílleachta..." + +msgid "Engine Compilation Configuration Editor..." +msgstr "Eagarthóir Cumraíochta Tiomsúcháin Innill..." + +msgid "Upgrade Mesh Surfaces..." +msgstr "Uasghrádú Dromchlaí Mogalra ..." + +msgid "Reload Current Project" +msgstr "Athluchtaigh an Tionscadal Reatha" + +msgid "Quit to Project List" +msgstr "Scoir den Liosta Tionscadail" + +msgid "Command Palette..." +msgstr "Pailéad Ordaithe..." + +msgid "Editor Docks" +msgstr "Duganna an Eagarthóra" + +msgid "Editor Layout" +msgstr "Leagan Amach an Eagarthóra" + +msgid "Take Screenshot" +msgstr "Tóg Gabháil Scáileáin" + +msgid "Screenshots are stored in the user data folder (\"user://\")." +msgstr "Stóráiltear screenshots san fhillteán sonraí úsáideora (\"user://\")." + +msgid "Toggle Fullscreen" +msgstr "Scoránaigh an Lánscáileán" + +msgid "Open Editor Data/Settings Folder" +msgstr "Oscail Fillteán Sonraí/Socruithe an Eagarthóra" + +msgid "Open Editor Data Folder" +msgstr "Oscail Fillteán Sonraí an Eagarthóra" + +msgid "Open Editor Settings Folder" +msgstr "Oscail Fillteán Socruithe an Eagarthóra" + +msgid "Manage Editor Features..." +msgstr "Bainistigh Gnéithe Eagarthóra..." + +msgid "Manage Export Templates..." +msgstr "Bainistigh Teimpléid Easpórtála..." + +msgid "Configure FBX Importer..." +msgstr "Cumraigh Iompórtálaí FBX..." + +msgid "Help" +msgstr "Cabhair" + +msgid "Search Help..." +msgstr "Cuardaigh Cabhair..." + +msgid "Online Documentation" +msgstr "Doiciméadú Ar Líne" + +msgid "Forum" +msgstr "Fóram" + +msgid "Community" +msgstr "Pobal" + +msgid "Copy System Info" +msgstr "Cóipeáil Eolas faoin gCóras" + +msgid "Copies the system info as a single-line text into the clipboard." +msgstr "" +"Cóipeáil faisnéis an chórais mar théacs aon líne isteach sa ghearrthaisce." + +msgid "Report a Bug" +msgstr "Tuairiscigh Fabht" + +msgid "Suggest a Feature" +msgstr "Mol Gné" + +msgid "Send Docs Feedback" +msgstr "Seol Aiseolas Docs" + +msgid "About Godot..." +msgstr "Maidir le Godot..." + +msgid "Support Godot Development" +msgstr "Tacú le Forbairt Godot" + +msgid "" +"Choose a rendering method.\n" +"\n" +"Notes:\n" +"- On mobile platforms, the Mobile rendering method is used if Forward+ is " +"selected here.\n" +"- On the web platform, the Compatibility rendering method is always used." +msgstr "" +"Roghnaigh modh rindreála.\n" +"\n" +"Nótaí:\n" +"- Ar ardáin mhóibíleacha, úsáidtear an modh rindreáil soghluaiste má " +"roghnaítear Forward + anseo.\n" +"- Ar an ardán gréasáin, úsáidtear an modh rindreáil Comhoiriúnachta i gcónaí." + +msgid "Update Continuously" +msgstr "Nuashonraigh go leanúnach" + +msgid "Update When Changed" +msgstr "Nuashonraigh nuair a athraíodh é" + +msgid "Hide Update Spinner" +msgstr "Folaigh Spinner Nuashonraithe" + +msgid "FileSystem" +msgstr "Córas Comhad" + +msgid "Toggle FileSystem Bottom Panel" +msgstr "Scoránaigh Painéal Bun an Chórais Comhad" + +msgid "Inspector" +msgstr "Cigire" + +msgid "Node" +msgstr "Nód" + +msgid "History" +msgstr "Stair" + +msgid "Output" +msgstr "Aschur" + +msgid "Toggle Output Bottom Panel" +msgstr "Scoránaigh an Painéal Bun Aschurtha" + +msgid "Don't Save" +msgstr "Ná Sábháil" + +msgid "Android build template is missing, please install relevant templates." +msgstr "" +"Tá teimpléad tógála Android ar iarraidh, suiteáil teimpléid ábhartha le do " +"thoil." + +msgid "Manage Templates" +msgstr "Bainistigh Teimpléid" + +msgid "Install from file" +msgstr "Suiteáil ó chomhad" + +msgid "Select Android sources file" +msgstr "Roghnaigh comhad foinsí Android" + +msgid "Show in File Manager" +msgstr "Taispeáin i mBainisteoir Comhad" + +msgid "Import Templates From ZIP File" +msgstr "Iompórtáil teimpléid ó chomhad ZIP" + +msgid "Template Package" +msgstr "Pacáiste Teimpléid" + +msgid "Export Library" +msgstr "Easpórtáil Leabharlann" + +msgid "Open & Run a Script" +msgstr "Oscail agus Rith Script" + +msgid "Files have been modified on disk" +msgstr "Athraíodh comhaid ar an diosca" + +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?" +msgstr "" +"Tá na comhaid seo a leanas níos nuaí ar an diosca.\n" +"Cén gníomh ba chóir a dhéanamh?" + +msgid "Discard local changes and reload" +msgstr "Ná sábháil athruithe logánta agus athluchtaigh" + +msgid "Keep local changes and overwrite" +msgstr "Coinnigh athruithe áitiúla agus forscríobh" + +msgid "Create/Override Version Control Metadata..." +msgstr "Cruthaigh / Sáraigh Meiteashonraí Rialaithe Leagain..." + +msgid "Version Control Settings..." +msgstr "Socruithe Rialaithe Leagain..." + +msgid "New Inherited" +msgstr "Oidhreacht Nua" + +msgid "Load Errors" +msgstr "Luchtaigh Earráidí" + +msgid "Select Current" +msgstr "Roghnaigh An Sruth" + +msgid "Open 2D Editor" +msgstr "Oscail Eagarthóir 2D" + +msgid "Open 3D Editor" +msgstr "Oscail Eagarthóir 3D" + +msgid "Open Script Editor" +msgstr "Oscail Eagarthóir Scripte" + +msgid "Open Asset Library" +msgstr "Leabharlann Sócmhainní Oscailte" + +msgid "Open the next Editor" +msgstr "Oscail an chéad Eagarthóir eile" + +msgid "Open the previous Editor" +msgstr "Oscail an tEagarthóir roimhe seo" + +msgid "Ok" +msgstr "Ceart go leor" + +msgid "Warning!" +msgstr "Rabhadh!" + +msgid "Edit Text:" +msgstr "Cuir Téacs in Eagar:" + +msgid "On" +msgstr "Maidir le" + +msgid "Renaming layer %d:" +msgstr "Sraith %d á athainmniú:" + +msgid "No name provided." +msgstr "Níor cuireadh aon ainm ar fáil." + +msgid "Name contains invalid characters." +msgstr "Tá carachtair neamhbhailí san ainm." + +msgid "Bit %d, value %d" +msgstr "Giotán %d, luach %d" + +msgid "Rename" +msgstr "Athainmnigh" + +msgid "Rename layer" +msgstr "Athainmnigh sraith" + +msgid "Layer %d" +msgstr "Sraith %d" + +msgid "No Named Layers" +msgstr "Gan Sraitheanna Ainmnithe" + +msgid "Edit Layer Names" +msgstr "Cuir Ainmneacha na Sraithe in Eagar" + +msgid "<empty>" +msgstr "<folamh>" + +msgid "Temporary Euler may be changed implicitly!" +msgstr "Is féidir Euler Sealadach a athrú go hintuigthe!" + +msgid "" +"Temporary Euler will not be stored in the object with the original value. " +"Instead, it will be stored as Quaternion with irreversible conversion.\n" +"This is due to the fact that the result of Euler->Quaternion can be " +"determined uniquely, but the result of Quaternion->Euler can be multi-" +"existent." +msgstr "" +"Ní stórálfar Euler sealadach sa réad leis an luach bunaidh. Ina áit sin, " +"déanfar é a stóráil mar Quaternion le comhshó dochúlaithe.\n" +"Is é is cúis leis seo ná gur féidir toradh Euler->Quaternion a chinneadh go " +"haonarach, ach is féidir le toradh Quaternion->Euler a bheith ilghnéitheach." + +msgid "Temporary Euler" +msgstr "Euler Sealadach" + +msgid "Assign..." +msgstr "Sann..." + +msgid "Copy as Text" +msgstr "Cóipeáil mar Théacs" + +msgid "Show Node in Tree" +msgstr "Taispeáin Nód i gCrann" + +msgid "Invalid RID" +msgstr "RID neamhbhailí" + +msgid "Recursion detected, unable to assign resource to property." +msgstr "" +"Braitheadh athchúrsa, gan a bheith in ann acmhainn a shannadh do mhaoin." + +msgid "" +"Can't create a ViewportTexture in a Texture2D node because the texture will " +"not be bound to a scene.\n" +"Use a Texture2DParameter node instead and set the texture in the \"Shader " +"Parameters\" tab." +msgstr "" +"Ní féidir ViewportTexture a chruthú i nód Texture2D toisc nach mbeidh an " +"uigeacht faoi cheangal ag radharc.\n" +"Bain úsáid as nód Texture2DParameter ina ionad agus socraigh an uigeacht sa " +"chluaisín \"Shader Parameters\"." + +msgid "" +"Can't create a ViewportTexture on resources saved as a file.\n" +"Resource needs to belong to a scene." +msgstr "" +"Ní féidir ViewportTexture a chruthú ar acmhainní a shábháiltear mar chomhad.\n" +"Caithfidh an acmhainn a bheith mar chuid de radharc." + +msgid "" +"Can't create a ViewportTexture on this resource because it's not set as local " +"to scene.\n" +"Please switch on the 'local to scene' property on it (and all resources " +"containing it up to a node)." +msgstr "" +"Ní féidir ViewportTexture a chruthú ar an acmhainn seo toisc nach bhfuil sé " +"socraithe mar radharc áitiúil.\n" +"Athraigh an mhaoin 'áitiúil go radharc' air (agus na hacmhainní go léir ina " +"bhfuil sé suas go nód)." + +msgid "Pick a Viewport" +msgstr "Roghnaigh Amharcphort" + +msgid "Selected node is not a Viewport!" +msgstr "Ní Viewport é nód roghnaithe!" + +msgid "New Key:" +msgstr "Eochair Nua:" + +msgid "New Value:" +msgstr "Luach Nua:" + +msgid "(Nil) %s" +msgstr "(Neamhní) %s" + +msgid "%s (size %s)" +msgstr "%s (méid %s)" + +msgid "Size:" +msgstr "Méid:" + +msgid "Remove Item" +msgstr "Bain Mír" + +msgid "Dictionary (Nil)" +msgstr "Foclóir (Neamhní)" + +msgid "Dictionary (size %d)" +msgstr "Foclóir (méid %d)" + +msgid "Add Key/Value Pair" +msgstr "Cuir Péire Eochrach/Luacha Leis" + +msgid "Localizable String (Nil)" +msgstr "Teaghrán Logánaithe (Neamhní)" + +msgid "Localizable String (size %d)" +msgstr "Teaghrán Logánta (méid %d)" + +msgid "Add Translation" +msgstr "Cuir Aistriúchán Leis" + +msgid "Lock/Unlock Component Ratio" +msgstr "Cóimheas Comhpháirte Glasála / Díghlasála" + +msgid "" +"The selected resource (%s) does not match any type expected for this property " +"(%s)." +msgstr "" +"Ní mheaitseálann an acmhainn roghnaithe (%s) aon chineál a bhfuiltear ag súil " +"leis don mhaoin seo (%s)." + +msgid "Quick Load..." +msgstr "Luchtaigh Thapa..." + +msgid "Opens a quick menu to select from a list of allowed Resource files." +msgstr "" +"Osclaíonn seo roghchlár tapa le roghnú ó liosta de chomhaid Acmhainne " +"ceadaithe." + +msgid "Load..." +msgstr "Luchtaigh..." + +msgid "Inspect" +msgstr "Iniúchadh" + +msgid "Make Unique" +msgstr "Déan Uathúil" + +msgid "Make Unique (Recursive)" +msgstr "Déan Uathúil (Athchúrsach)" + +msgid "Save As..." +msgstr "Sábháil Mar..." + +msgid "Show in FileSystem" +msgstr "Taispeáin sa Chóras Comhad" + +msgid "Convert to %s" +msgstr "Tiontaigh go %s" + +msgid "Select resources to make unique:" +msgstr "Roghnaigh acmhainní chun uathúil a dhéanamh:" + +msgid "New %s" +msgstr "%s nua" + +msgid "New Script..." +msgstr "Script Nua..." + +msgid "Extend Script..." +msgstr "Leathnaigh Script..." + +msgid "New Shader..." +msgstr "Scáthóir Nua..." + +msgid "No Remote Debug export presets configured." +msgstr "Níl aon réamhshocruithe easpórtála dífhabhtaithe cianda cumraithe." + +msgid "Remote Debug" +msgstr "Dífhabhtú cianda" + +msgid "" +"No runnable export preset found for this platform.\n" +"Please add a runnable preset in the Export menu or define an existing preset " +"as runnable." +msgstr "" +"Níor aimsíodh aon réamhshocrú easpórtála inrite don ardán seo.\n" +"Cuir réamhshocrú runnable sa roghchlár Easpórtáil nó sainmhínigh " +"réamhshocraithe atá ann cheana féin mar runnable." + +msgid "" +"Warning: The CPU architecture '%s' is not active in your export preset.\n" +"\n" +msgstr "" +"Rabhadh: Níl ailtireacht an LAP '%s' gníomhach i do réamhshocrú easpórtála.\n" +"\n" + +msgid "Run 'Remote Debug' anyway?" +msgstr "Rith 'Remote Debug' ar aon nós?" + +msgid "Project Run" +msgstr "Rith an Tionscadail" + +msgid "Write your logic in the _run() method." +msgstr "Scríobh do loighic sa mhodh _run ()." + +msgid "The current scene already has a root node." +msgstr "Tá nód fréimhe ag an radharc reatha cheana féin." + +msgid "Edit Built-in Action: %s" +msgstr "Cuir Gníomh Ionsuite in Eagar: %s" + +msgid "Edit Shortcut: %s" +msgstr "Cuir Aicearra in Eagar: %s" + +msgid "Common" +msgstr "Coitianta" + +msgid "Editor Settings" +msgstr "Socruithe an Eagarthóra" + +msgid "General" +msgstr "Ginearálta" + +msgid "Filter Settings" +msgstr "Socruithe Scagaire" + +msgid "The editor must be restarted for changes to take effect." +msgstr "Ní mór an t-eagarthóir a atosú chun athruithe a chur i bhfeidhm." + +msgid "Shortcuts" +msgstr "Aicearraí" + +msgid "Binding" +msgstr "Ceangal" + +msgid "Failed to check for updates. Error: %d." +msgstr "Theip ar sheiceáil le haghaidh nuashonruithe. Earráid: %d." + +msgid "Failed to check for updates. Response code: %d." +msgstr "Theip ar sheiceáil le haghaidh nuashonruithe. Cód freagartha: %d." + +msgid "Failed to parse version JSON." +msgstr "Theip ar pharsáil leagan JSON." + +msgid "Received JSON data is not a valid version array." +msgstr "Ní eagar leagan bailí é sonraí JSON a fuarthas." + +msgid "Update available: %s." +msgstr "Nuashonrú ar fáil: %s." + +msgid "Offline mode, update checks disabled." +msgstr "Mód as líne, seiceálacha nuashonraithe díchumasaithe." + +msgid "Update checks disabled." +msgstr "Nuashonraigh seiceálacha díchumasaithe." + +msgid "An error has occurred. Click to try again." +msgstr "Tharla earráid. Cliceáil chun triail eile a bhaint as." + +msgid "Click to open download page." +msgstr "Cliceáil chun an leathanach íoslódála a oscailt." + +msgid "Left Stick Left, Joystick 0 Left" +msgstr "Bata Clé Ar Chlé, Luamhán stiúrtha 0 Ar Chlé" + +msgid "Left Stick Right, Joystick 0 Right" +msgstr "Bata Clé Ar Dheis, Luamhán stiúrtha 0 Ar Dheis" + +msgid "Left Stick Up, Joystick 0 Up" +msgstr "Bata Clé Suas, Luamhán stiúrtha 0 Suas" + +msgid "Left Stick Down, Joystick 0 Down" +msgstr "Bata Clé Síos, Luamhán stiúrtha 0 Síos" + +msgid "Right Stick Left, Joystick 1 Left" +msgstr "Bata deas ar chlé, luamhán stiúrtha 1 ar chlé" + +msgid "Right Stick Right, Joystick 1 Right" +msgstr "Bata Ceart Ceart, Joystick 1 Ceart" + +msgid "Right Stick Up, Joystick 1 Up" +msgstr "Bata Ceart Suas, Joystick 1 Suas" + +msgid "Right Stick Down, Joystick 1 Down" +msgstr "Bata Deas Síos, Joystick 1 Síos" + +msgid "Joystick 2 Left" +msgstr "Luamhán stiúrtha 2 Ar Chlé" + +msgid "Left Trigger, Sony L2, Xbox LT, Joystick 2 Right" +msgstr "Truicear Clé, Sony L2, Xbox LT, Joystick 2 Ar Dheis" + +msgid "Joystick 2 Up" +msgstr "Luamhán stiúrtha 2 Suas" + +msgid "Right Trigger, Sony R2, Xbox RT, Joystick 2 Down" +msgstr "Truicear Ceart, Sony R2, Xbox RT, Joystick 2 Down" + +msgid "Joystick 3 Left" +msgstr "Luamhán stiúrtha 3 ar chlé" + +msgid "Joystick 3 Right" +msgstr "Luamhán stiúrtha 3 Ar Dheis" + +msgid "Joystick 3 Up" +msgstr "Luamhán stiúrtha 3 Suas" + +msgid "Joystick 3 Down" +msgstr "Luamhán stiúrtha 3 An Dún" + +msgid "Joystick 4 Left" +msgstr "Luamhán stiúrtha 4 Ar Chlé" + +msgid "Joystick 4 Right" +msgstr "Luamhán stiúrtha 4 Ar Dheis" + +msgid "Joystick 4 Up" +msgstr "Luamhán stiúrtha 4 Suas" + +msgid "Joystick 4 Down" +msgstr "Luamhán stiúrtha 4 An Dún" + +msgid "or" +msgstr "nó" + +msgid "Unicode" +msgstr "UnicodeGenericName" + +msgid "Joypad Axis %d %s (%s)" +msgstr "Ais Joypad %d %s (%s)" + +msgid "All Devices" +msgstr "Gach Gléas" + +msgid "Device" +msgstr "Gléas" + +msgid "Listening for Input" +msgstr "Éisteacht le hIonchur" + +msgid "Filter by Event" +msgstr "Scag de réir Imeachta" + +msgid "Can't get filesystem access." +msgstr "Ní féidir rochtain ar an gcóras comhad a fháil." + +msgid "Failed to get Info.plist hash." +msgstr "Theip ar hash Info.plist a fháil." + +msgid "Invalid Info.plist, no exe name." +msgstr "Invalid Info.plist, gan ainm exe." + +msgid "Invalid Info.plist, no bundle id." +msgstr "Invalid Info.plist, gan aitheantas cuachta." + +msgid "Invalid Info.plist, can't load." +msgstr "Invalid Info.plist, ní féidir é a luchtú." + +msgid "Failed to create \"%s\" subfolder." +msgstr "Theip ar fhofhillteán \"%s\" a chruthú." + +msgid "Failed to extract thin binary." +msgstr "Theip ar dhénártha tanaí a bhaint." + +msgid "Invalid binary format." +msgstr "Formáid dhénártha neamhbhailí." + +msgid "Already signed!" +msgstr "Sínithe cheana féin!" + +msgid "Failed to process nested resources." +msgstr "Theip ar acmhainní neadaithe a phróiseáil." + +msgid "Failed to create _CodeSignature subfolder." +msgstr "Theip ar fhofhillteán _CodeSignature chruthú." + +msgid "Failed to get CodeResources hash." +msgstr "Theip ar hash CodeResources a fháil." + +msgid "Invalid entitlements file." +msgstr "Comhad teidlíochtaí neamhbhailí." + +msgid "Invalid executable file." +msgstr "Comhad neamhbhailí inrite." + +msgid "Can't resize signature load command." +msgstr "Ní féidir an t- ordú ualaigh sínithe a athrú." + +msgid "Failed to create fat binary." +msgstr "Theip ar dhénártha saille a chruthú." + +msgid "Unknown bundle type." +msgstr "Cineál cuachta anaithnid." + +msgid "Unknown object type." +msgstr "Cineál anaithnid réada." + +msgid "Project export for platform:" +msgstr "Easpórtáil tionscadail le haghaidh ardáin:" + +msgid "Completed with warnings." +msgstr "Críochnaithe le rabhaidh." + +msgid "Completed successfully." +msgstr "Cuireadh i gcrích go rathúil é." + +msgid "Failed." +msgstr "Theip ar." + +msgid "Unknown Error" +msgstr "Earráid Neamhaithnid" + +msgid "Export failed with error code %d." +msgstr "Theip ar easpórtáil le cód earráide %d." + +msgid "Storing File: %s" +msgstr "Comhad á stóráil: %s" + +msgid "Storing File:" +msgstr "Comhad á Stóráil:" + +msgid "No export template found at the expected path:" +msgstr "" +"Níor aimsíodh aon teimpléad easpórtála ag an gcosán a bhfuiltear ag súil leis:" + +msgid "ZIP Creation" +msgstr "Cruthú ZIP" + +msgid "Could not open file to read from path \"%s\"." +msgstr "Níorbh fhéidir comhad a oscailt le léamh ó chonair \"%s\"." + +msgid "Packing" +msgstr "Pacáil" + +msgid "Save PCK" +msgstr "Sábháil PCK" + +msgid "Cannot create file \"%s\"." +msgstr "Ní féidir comhad \"%s\" a chruthú." + +msgid "Failed to export project files." +msgstr "Theip ar easpórtáil comhad tionscadail." + +msgid "Can't open file for writing at path \"%s\"." +msgstr "Ní féidir comhad a oscailt le scríobh ag conair \"%s\"." + +msgid "Can't open file for reading-writing at path \"%s\"." +msgstr "" +"Ní féidir comhad a oscailt le haghaidh scríbhneoireacht léitheoireachta ag " +"conair \"%s\"." + +msgid "Can't create encrypted file." +msgstr "Ní féidir comhad criptithe a chruthú." + +msgid "Can't open encrypted file to write." +msgstr "Ní féidir comhad criptithe a oscailt le scríobh." + +msgid "Can't open file to read from path \"%s\"." +msgstr "Ní féidir comhad a oscailt le léamh ó chonair \"%s\"." + +msgid "Save ZIP" +msgstr "Sábháil ZIP" + +msgid "Custom debug template not found." +msgstr "Níor aimsíodh teimpléad saincheaptha dífhabhtaithe." + +msgid "Custom release template not found." +msgstr "Níor aimsíodh teimpléad scaoilte saincheaptha." + +msgid "" +"A texture format must be selected to export the project. Please select at " +"least one texture format." +msgstr "" +"Ní mór formáid uigeachta a roghnú chun an tionscadal a easpórtáil. Roghnaigh " +"formáid uigeachta amháin ar a laghad." + +msgid "Prepare Template" +msgstr "Ullmhaigh Teimpléad" + +msgid "The given export path doesn't exist." +msgstr "Níl an cosán easpórtála tugtha ann." + +msgid "Template file not found: \"%s\"." +msgstr "Níor aimsíodh comhad teimpléid: \"%s\"." + +msgid "Failed to copy export template." +msgstr "Theip ar chóipeáil an teimpléid easpórtála." + +msgid "PCK Embedding" +msgstr "Leabú PCK" + +msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." +msgstr "" +"Ar onnmhairí 32-giotán ní féidir leis an PCK leabaithe a bheith níos mó ná 4 " +"GiB." + +msgid "Plugin \"%s\" is not supported on \"%s\"" +msgstr "Ní thacaítear le breiseán \"%s\" ar \"%s\"" + +msgid "Open the folder containing these templates." +msgstr "Oscail an fillteán ina bhfuil na teimpléid seo." + +msgid "Uninstall these templates." +msgstr "Díshuiteáil na teimpléid seo." + +msgid "There are no mirrors available." +msgstr "Níl scátháin ar bith ar fáil." + +msgid "Retrieving the mirror list..." +msgstr "An liosta scátháin á aisghabháil..." + +msgid "Starting the download..." +msgstr "Ag tosú an íoslódáil..." + +msgid "Error requesting URL:" +msgstr "Earráid agus URL á iarraidh:" + +msgid "Connecting to the mirror..." +msgstr "Ag ceangal leis an scáthán..." + +msgid "Can't resolve the requested address." +msgstr "Ní féidir an seoladh iarrtha a réiteach." + +msgid "Can't connect to the mirror." +msgstr "Ní féidir ceangal leis an scáthán." + +msgid "No response from the mirror." +msgstr "Gan aon fhreagra ón scáthán." + +msgid "Request failed." +msgstr "Theip ar an iarratas." + +msgid "Request ended up in a redirect loop." +msgstr "Chríochnaigh an t-iarratas i lúb atreoraithe." + +msgid "Request failed:" +msgstr "Theip ar an iarratas:" + +msgid "Download complete; extracting templates..." +msgstr "Íoslódáil críochnaithe; teimpléid á mbaint amach..." + +msgid "Cannot remove temporary file:" +msgstr "Ní féidir comhad sealadach a bhaint:" + +msgid "" +"Templates installation failed.\n" +"The problematic templates archives can be found at '%s'." +msgstr "" +"Theip ar shuiteáil teimpléid.\n" +"Is féidir cartlann na dteimpléad fadhbanna a fháil ag '%s'." + +msgid "Error getting the list of mirrors." +msgstr "Earráid agus liosta na scáthán á fháil." + +msgid "Error parsing JSON with the list of mirrors. Please report this issue!" +msgstr "" +"Earráid agus JSON á pharsáil le liosta na scáthán. Tuairiscigh an cheist seo " +"le do thoil!" + +msgid "Best available mirror" +msgstr "An scáthán is fearr atá ar fáil" + +msgid "" +"No download links found for this version. Direct download is only available " +"for official releases." +msgstr "" +"Níor aimsíodh aon naisc íoslódála don leagan seo. Níl íoslódáil dhíreach ar " +"fáil ach amháin le haghaidh eisiúintí oifigiúla." + +msgid "Disconnected" +msgstr "Dícheangailte" + +msgid "Resolving" +msgstr "Réiteach" + +msgid "Can't Resolve" +msgstr "Ní féidir é a réiteach" + +msgid "Connecting..." +msgstr "Ag ceangal..." + +msgid "Can't Connect" +msgstr "Ní féidir ceangal" + +msgid "Connected" +msgstr "Ceangailte" + +msgid "Requesting..." +msgstr "Ag iarraidh..." + +msgid "Downloading" +msgstr "Á Íosluchtú" + +msgid "Connection Error" +msgstr "Earráid naisc" + +msgid "TLS Handshake Error" +msgstr "Earráid Handshake TLS" + +msgid "Can't open the export templates file." +msgstr "Ní féidir an comhad teimpléid easpórtála a oscailt." + +msgid "Invalid version.txt format inside the export templates file: %s." +msgstr "" +"Formáid neamhbhailí version.txt taobh istigh de chomhad na dteimpléad " +"easpórtála: %s." + +msgid "No version.txt found inside the export templates file." +msgstr "" +"Níor aimsíodh aon version.txt taobh istigh den chomhad teimpléid easpórtála." + +msgid "Error creating path for extracting templates:" +msgstr "Earráid agus conair á chruthú chun teimpléid a bhaint amach:" + +msgid "Extracting Export Templates" +msgstr "Teimpléid Easpórtála a Bhaint Amach" + +msgid "Importing:" +msgstr "Iompórtáil:" + +msgid "Remove templates for the version '%s'?" +msgstr "Bain teimpléid don leagan '%s'?" + +msgid "Uncompressing Android Build Sources" +msgstr "Dí-chomhbhrú Foinsí Tógála Android" + +msgid "Export Template Manager" +msgstr "Easpórtáil Bainisteoir Teimpléad" + +msgid "Current Version:" +msgstr "Leagan Reatha:" + +msgid "Export templates are missing. Download them or install from a file." +msgstr "" +"Tá teimpléid easpórtála ar iarraidh. Íoslódáil iad nó suiteáil ó chomhad." + +msgid "Export templates are missing. Install them from a file." +msgstr "Tá teimpléid easpórtála ar iarraidh. Suiteáil iad ó chomhad." + +msgid "Export templates are installed and ready to be used." +msgstr "Tá teimpléid easpórtála suiteáilte agus réidh le húsáid." + +msgid "Open Folder" +msgstr "Oscail Fillteán" + +msgid "Open the folder containing installed templates for the current version." +msgstr "Oscail an fillteán ina bhfuil teimpléid suiteáilte don leagan reatha." + +msgid "Uninstall" +msgstr "Díshuiteáil" + +msgid "Uninstall templates for the current version." +msgstr "Díshuiteáil teimpléid don leagan reatha." + +msgid "Download from:" +msgstr "Íoslódáil ó:" + +msgid "(no templates for development builds)" +msgstr "(níl aon teimpléid le haghaidh tógála forbartha)" + +msgid "Open in Web Browser" +msgstr "Oscail i mBrabhsálaí Gréasáin" + +msgid "Copy Mirror URL" +msgstr "Cóipeáil URL an Scátháin" + +msgid "Download and Install" +msgstr "Íoslódáil agus Suiteáil" + +msgid "" +"Download and install templates for the current version from the best possible " +"mirror." +msgstr "" +"Íoslódáil agus suiteáil teimpléid don leagan reatha ón scáthán is fearr is " +"féidir." + +msgid "Official export templates aren't available for development builds." +msgstr "" +"Níl teimpléid onnmhairithe oifigiúla ar fáil le haghaidh tógála forbartha." + +msgid "Install from File" +msgstr "Suiteáil ó Chomhad" + +msgid "Install templates from a local file." +msgstr "Suiteáil teimpléid ó chomhad logánta." + +msgid "Cancel the download of the templates." +msgstr "Cealaigh íoslódáil na dteimpléad." + +msgid "Other Installed Versions:" +msgstr "Leaganacha Suiteáilte Eile:" + +msgid "Uninstall Template" +msgstr "Díshuiteáil Teimpléad" + +msgid "Select Template File" +msgstr "Roghnaigh Comhad Teimpléid" + +msgid "Godot Export Templates" +msgstr "Teimpléid Easpórtála Godot" + +msgid "" +"The templates will continue to download.\n" +"You may experience a short editor freeze when they finish." +msgstr "" +"Leanfaidh na teimpléid ar aghaidh ag íoslódáil.\n" +"B'fhéidir go bhfaighidh tú reo gearr eagarthóra nuair a chríochnaíonn siad." + +msgid "" +"Target platform requires '%s' texture compression. Enable 'Import %s' to fix." +msgstr "" +"Tá comhbhrú uigeachta '%s' de dhíth ar an spriocardán. Cumasaigh 'Iompórtáil " +"%s' le socrú." + +msgid "Fix Import" +msgstr "Deisigh Iompórtáil" + +msgid "Runnable" +msgstr "Inrite" + +msgid "Export the project for all the presets defined." +msgstr "" +"Easpórtáil an tionscadal do na réamhshocruithe go léir a shainmhínítear." + +msgid "All presets must have an export path defined for Export All to work." +msgstr "" +"Ní mór do gach réamhshocrú cosán easpórtála a bheith sainithe le haghaidh " +"Easpórtáil Gach a bheith ag obair." + +msgid "Delete preset '%s'?" +msgstr "Scrios réamhshocrú '%s'?" + +msgid "Resources to exclude:" +msgstr "Acmhainní chun na nithe seo a leanas a eisiamh:" + +msgid "Resources to override export behavior:" +msgstr "Acmhainní chun iompar onnmhairithe a shárú:" + +msgid "Resources to export:" +msgstr "Acmhainní le heaspórtáil:" + +msgid "(Inherited)" +msgstr "(Le hoidhreacht)" + +msgid "Export With Debug" +msgstr "Easpórtáil le Dífhabhtú" + +msgid "%s Export" +msgstr "Easpórtáil %s" + +msgid "Release" +msgstr "Scaoileadh" + +msgid "Exporting All" +msgstr "Easpórtáil Gach Rud" + +msgid "Presets" +msgstr "Réamhshocruithe" + +msgid "Add..." +msgstr "Cuir Leis..." + +msgid "Duplicate" +msgstr "Dúblach" + +msgid "" +"If checked, the preset will be available for use in one-click deploy.\n" +"Only one preset per platform may be marked as runnable." +msgstr "" +"Má chuireann tú tic leis, beidh an réamhshocrú ar fáil le húsáid in úsáid " +"aonchliceála.\n" +"Ní féidir ach réamhshocrú amháin in aghaidh an ardáin a mharcáil mar runnable." + +msgid "Advanced Options" +msgstr "Ardroghanna" + +msgid "If checked, the advanced options will be shown." +msgstr "Má chuireann tú tic leis, taispeánfar na hardroghanna." + +msgid "Export Path" +msgstr "Easpórtáil Conair" + +msgid "Options" +msgstr "Roghanna" + +msgid "Resources" +msgstr "Acmhainní" + +msgid "Export all resources in the project" +msgstr "Easpórtáil na hacmhainní go léir sa tionscadal" + +msgid "Export selected scenes (and dependencies)" +msgstr "Easpórtáil radhairc roghnaithe (agus spleáchais)" + +msgid "Export selected resources (and dependencies)" +msgstr "Easpórtáil acmhainní roghnaithe (agus spleáchais)" + +msgid "Export all resources in the project except resources checked below" +msgstr "" +"Easpórtáil na hacmhainní go léir sa tionscadal ach amháin na hacmhainní a " +"sheiceáiltear thíos" + +msgid "Export as dedicated server" +msgstr "Easpórtáil mar fhreastalaí tiomnaithe" + +msgid "Export Mode:" +msgstr "Mód Easpórtála:" + +msgid "" +"\"Strip Visuals\" will replace the following resources with placeholders:" +msgstr "" +"Cuirfidh \"Strip Visuals\" sealbhóirí áite in ionad na n-acmhainní seo a " +"leanas:" + +msgid "Strip Visuals" +msgstr "Radharcanna Stiallacha" + +msgid "Keep" +msgstr "Coinnigh" + +msgid "" +"Filters to export non-resource files/folders\n" +"(comma-separated, e.g: *.json, *.txt, docs/*)" +msgstr "" +"Scagairí chun comhaid/fillteáin neamhacmhainne a easpórtáil\n" +"(camóg-scartha, m.sh: *.json, *.txt, docs/*)" + +msgid "" +"Filters to exclude files/folders from project\n" +"(comma-separated, e.g: *.json, *.txt, docs/*)" +msgstr "" +"Scagairí chun comhaid / fillteáin a eisiamh ón tionscadal\n" +"(camóg-scartha, m.sh: *.json, *.txt, docs/*)" + +msgid "Features" +msgstr "Gnéithe" + +msgid "Custom (comma-separated):" +msgstr "Saincheaptha (camóg-scartha):" + +msgid "Feature List:" +msgstr "Liosta Gné:" + +msgid "Encryption" +msgstr "Criptiú" + +msgid "Encrypt Exported PCK" +msgstr "Criptigh PCK Easpórtáilte" + +msgid "Encrypt Index (File Names and Info)" +msgstr "Criptigh an tInnéacs (Ainmneacha Comhaid agus Eolas)" + +msgid "" +"Filters to include files/folders\n" +"(comma-separated, e.g: *.tscn, *.tres, scenes/*)" +msgstr "" +"Scagairí chun comhaid / fillteáin a chur san áireamh\n" +"(camóg-scartha, m.sh: *.tscn, *.tres, scenes/*)" + +msgid "" +"Filters to exclude files/folders\n" +"(comma-separated, e.g: *.ctex, *.import, music/*)" +msgstr "" +"Scagairí chun comhaid / fillteáin a eisiamh\n" +"(camóg-scartha, m.sh: *.ctex, *.import, music/*)" + +msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)" +msgstr "" +"Eochair Chriptithe Neamhbhailí (ní mór 64 charachtar heicsidheachúlach a " +"bheith ann)" + +msgid "Encryption Key (256-bits as hexadecimal):" +msgstr "Eochair Chriptithe (256-giotán mar heicsidheachúlach):" + +msgid "" +"Note: Encryption key needs to be stored in the binary,\n" +"you need to build the export templates from source." +msgstr "" +"Nóta: Ní mór eochair criptithe a stóráil sa dénártha,\n" +"ní mór duit na teimpléid easpórtála a thógáil ón bhfoinse." + +msgid "More Info..." +msgstr "Tuilleadh Eolais..." + +msgid "Scripts" +msgstr "Scripteanna" + +msgid "GDScript Export Mode:" +msgstr "Mód Easpórtála GDScript:" + +msgid "Text (easier debugging)" +msgstr "Téacs (dífhabhtú níos éasca)" + +msgid "Binary tokens (faster loading)" +msgstr "Comharthaí dénártha (luchtú níos tapúla)" + +msgid "Compressed binary tokens (smaller files)" +msgstr "Comharthaí dénártha comhbhrúite (comhaid níos lú)" + +msgid "Export PCK/ZIP..." +msgstr "Easpórtáil PCK / ZIP..." + +msgid "" +"Export the project resources as a PCK or ZIP package. This is not a playable " +"build, only the project data without a Godot executable." +msgstr "" +"Easpórtáil acmhainní an tionscadail mar phacáiste PCK nó ZIP. Ní tógáil " +"spraíúil é seo, ach sonraí an tionscadail gan inrite Godot." + +msgid "Export Project..." +msgstr "Easpórtáil Tionscadal..." + +msgid "" +"Export the project as a playable build (Godot executable and project data) " +"for the selected preset." +msgstr "" +"Easpórtáil an tionscadal mar thógáil playable (sonraí inrite Godot agus " +"tionscadail) don réamhshocrú roghnaithe." + +msgid "Export All" +msgstr "Easpórtáil Gach Rud" + +msgid "Choose an export mode:" +msgstr "Roghnaigh modh easpórtála:" + +msgid "Export All..." +msgstr "Easpórtáil Gach Rud..." + +msgid "ZIP File" +msgstr "Comhad ZIP" + +msgid "Godot Project Pack" +msgstr "Pacáiste Tionscadail Godot" + +msgid "Export templates for this platform are missing:" +msgstr "Tá teimpléid easpórtála don ardán seo ar iarraidh:" + +msgid "Project Export" +msgstr "Easpórtáil Tionscadail" + +msgid "Manage Export Templates" +msgstr "Bainistigh Teimpléid Easpórtála" + +msgid "Disable FBX2glTF & Restart" +msgstr "Díchumasaigh FBX2glTF & Atosaigh" + +msgid "" +"Canceling this dialog will disable the FBX2glTF importer and use the ufbx " +"importer.\n" +"You can re-enable FBX2glTF in the Project Settings under Filesystem > Import " +"> FBX > Enabled.\n" +"\n" +"The editor will restart as importers are registered when the editor starts." +msgstr "" +"Má chuirtear an dialóg seo ar ceal díchumasófar an t-allmhaireoir FBX2glTF " +"agus úsáidfidh sé an t-allmhaireoir ufbx.\n" +"Is féidir leat FBX2glTF a athchumasú sna Socruithe Tionscadail faoi Chóras " +"Comhad > Iompórtáil > FBX > Cumasaithe.\n" +"\n" +"Atosóidh an t-eagarthóir de réir mar a chláraítear allmhaireoirí nuair a " +"thosaíonn an t-eagarthóir." + +msgid "Path to FBX2glTF executable is empty." +msgstr "Tá an cosán go dtí inrite FBX2glTF folamh." + +msgid "Path to FBX2glTF executable is invalid." +msgstr "Tá conair inrite FBX2glTF neamhbhailí." + +msgid "Error executing this file (wrong version or architecture)." +msgstr "Earráid agus an comhad seo á rith (leagan mícheart nó ailtireacht)." + +msgid "FBX2glTF executable is valid." +msgstr "Tá inrite FBX2glTF bailí." + +msgid "Configure FBX Importer" +msgstr "Cumraigh Iompórtálaí FBX" + +msgid "" +"FBX2glTF is required for importing FBX files if using FBX2glTF.\n" +"Alternatively, you can use ufbx by disabling FBX2glTF.\n" +"Please download the necessary tool and provide a valid path to the binary:" +msgstr "" +"Tá FBX2glTF ag teastáil chun comhaid FBX a iompórtáil má tá FBX2glTF á " +"úsáid.\n" +"Nó, is féidir leat ufbx a úsáid trí FBX2glTF a dhíchumasú.\n" +"Íoslódáil an uirlis is gá agus cuir cosán bailí ar fáil don dénártha:" + +msgid "Click this link to download FBX2glTF" +msgstr "Cliceáil ar an nasc seo chun FBX2glTF a íoslódáil" + +msgid "Browse" +msgstr "Brabhsáil" + +msgid "Confirm Path" +msgstr "Deimhnigh Conair" + +msgid "Favorites" +msgstr "Ceanáin" + +msgid "View items as a grid of thumbnails." +msgstr "Amharc ar mhíreanna mar ghreille mionsamhlacha." + +msgid "View items as a list." +msgstr "Féach ar mhíreanna mar liosta." + +msgid "Status: Import of file failed. Please fix file and reimport manually." +msgstr "" +"Stádas: Theip ar iompórtáil an chomhaid. Deisigh comhad agus athiompórtáil de " +"láimh." + +msgid "" +"Importing has been disabled for this file, so it can't be opened for editing." +msgstr "" +"Díchumasaíodh iompórtáil don chomhad seo, ionas nach féidir é a oscailt le " +"haghaidh eagarthóireachta." + +msgid "Cannot move/rename resources root." +msgstr "Ní féidir fréamh acmhainní a bhogadh/ a athainmniú." + +msgid "Cannot move a folder into itself." +msgstr "Ní féidir fillteán a bhogadh isteach ann féin." + +msgid "Error moving:" +msgstr "Earráid agus tú ag bogadh:" + +msgid "Error duplicating:" +msgstr "Earráid agus dúbláil á dhéanamh:" + +msgid "Failed to save resource at %s: %s" +msgstr "Theip ar shábháil na hacmhainne ag %s: %s" + +msgid "Failed to load resource at %s: %s" +msgstr "Theip ar luchtú na hacmhainne ag %s: %s" + +msgid "Unable to update dependencies for:" +msgstr "Ní féidir spleáchais a nuashonrú le haghaidh:" + +msgid "" +"This filename begins with a dot rendering the file invisible to the editor.\n" +"If you want to rename it anyway, use your operating system's file manager." +msgstr "" +"Tosaíonn an t-ainm comhaid seo le ponc a fhágann go bhfuil an comhad " +"dofheicthe don eagarthóir.\n" +"Más mian leat é a athainmniú ar aon nós, bain úsáid as bainisteoir comhad do " +"chórais oibriúcháin." + +msgid "" +"This file extension is not recognized by the editor.\n" +"If you want to rename it anyway, use your operating system's file manager.\n" +"After renaming to an unknown extension, the file won't be shown in the editor " +"anymore." +msgstr "" +"Ní aithníonn an t-eagarthóir an síneadh comhaid seo.\n" +"Más mian leat é a athainmniú ar aon nós, bain úsáid as bainisteoir comhad do " +"chórais oibriúcháin.\n" +"Tar éis athainmniú chuig síneadh anaithnid, ní thaispeánfar an comhad san " +"eagarthóir níos mó." + +msgid "A file or folder with this name already exists." +msgstr "Tá comhad nó fillteán leis an ainm seo ann cheana." + +msgid "Name begins with a dot." +msgstr "Tosaíonn an t-ainm le ponc." + +msgid "" +"The following files or folders conflict with items in the target location " +"'%s':" +msgstr "" +"Tagann na comhaid nó na fillteáin seo a leanas salach ar mhíreanna sa " +"spriocshuíomh '%s':" + +msgid "Do you wish to overwrite them or rename the copied files?" +msgstr "" +"An bhfuil fonn ort iad a fhorscríobh nó na comhaid chóipeáilte a athainmniú?" + +msgid "Do you wish to overwrite them or rename the moved files?" +msgstr "" +"An bhfuil fonn ort iad a fhorscríobh nó na comhaid bhogtha a athainmniú?" + +msgid "" +"Couldn't run external program to check for terminal emulator presence: " +"command -v %s" +msgstr "" +"Níorbh fhéidir ríomhchlár seachtrach a rith le seiceáil le haghaidh " +"láithreacht aithriseora teirminéil: command -v %s" + +msgid "" +"Couldn't run external terminal program (error code %d): %s %s\n" +"Check `filesystem/external_programs/terminal_emulator` and `filesystem/" +"external_programs/terminal_emulator_flags` in the Editor Settings." +msgstr "" +"Níorbh fhéidir ríomhchlár teirminéil sheachtrach a rith (cód earráide %d): %s " +"%s\n" +"Seiceáil 'filesystem/external_programs/terminal_emulator' agus 'filesystem/" +"external_programs/terminal_emulator_flags' i socruithe an eagarthóra." + +msgid "Duplicating file:" +msgstr "Comhad dúblach:" + +msgid "Duplicating folder:" +msgstr "Fillteán dúblach:" + +msgid "New Inherited Scene" +msgstr "Radharc Nua Oidhreachta" + +msgid "Set as Main Scene" +msgstr "Socraigh mar Phríomh-Radharc" + +msgid "Open Scenes" +msgstr "Oscail Radhairc" + +msgid "Instantiate" +msgstr "InstantiateName" + +msgid "Edit Dependencies..." +msgstr "Cuir Spleáchríocha in Eagar..." + +msgid "View Owners..." +msgstr "Amharc ar Úinéirí..." + +msgid "Create New" +msgstr "Cruthaigh Nua" + +msgid "Folder..." +msgstr "Fillteán..." + +msgid "Scene..." +msgstr "radharc..." + +msgid "Script..." +msgstr "Script..." + +msgid "Resource..." +msgstr "Acmhainn..." + +msgid "TextFile..." +msgstr "Téacschomhad..." + +msgid "Expand Folder" +msgstr "Fairsingigh Fillteán" + +msgid "Expand Hierarchy" +msgstr "Fairsingigh ordlathas" + +msgid "Collapse Hierarchy" +msgstr "Laghdaigh ordlathas" + +msgid "Set Folder Color..." +msgstr "Socraigh Dath an Fhillteáin..." + +msgid "Default (Reset)" +msgstr "Réamhshocrú (Athshocraigh)" + +msgid "Move/Duplicate To..." +msgstr "Bog/Dúblach Go..." + +msgid "Add to Favorites" +msgstr "Cuir le Ceanáin" + +msgid "Remove from Favorites" +msgstr "Bain ó Cheanáin" + +msgid "Reimport" +msgstr "Athiompórtáil" + +msgid "Open in Terminal" +msgstr "Oscail i dTeirminéal" + +msgid "Open Containing Folder in Terminal" +msgstr "Oscail fillteán ina bhfuil i dteirminéal" + +msgid "Open in File Manager" +msgstr "Oscail i mBainisteoir Comhad" + +msgid "New Folder..." +msgstr "Fillteán Nua..." + +msgid "New Scene..." +msgstr "Radharc Nua..." + +msgid "New Resource..." +msgstr "Acmhainn Nua..." + +msgid "New TextFile..." +msgstr "Comhad Téacs Nua..." + +msgid "Sort Files" +msgstr "Sórtáil Comhaid" + +msgid "Sort by Name (Ascending)" +msgstr "Sórtáil de réir Ainm (Ag dul suas)" + +msgid "Sort by Name (Descending)" +msgstr "Sórtáil de réir Ainm (Íslitheach)" + +msgid "Sort by Type (Ascending)" +msgstr "Sórtáil de réir Cineáil (Ag dul suas)" + +msgid "Sort by Type (Descending)" +msgstr "Sórtáil de réir Cineáil (Íslitheach)" + +msgid "Sort by Last Modified" +msgstr "Sórtáil de réir Athraithe Is Déanaí" + +msgid "Sort by First Modified" +msgstr "Sórtáil de réir an Chéad Athraithe" + +msgid "Copy Path" +msgstr "Cóipeáil Conair" + +msgid "Copy Absolute Path" +msgstr "Cóipeáil Conair Absalóideach" + +msgid "Copy UID" +msgstr "Cóipeáil aitheantas úsáideora" + +msgid "Duplicate..." +msgstr "Dúblach..." + +msgid "Rename..." +msgstr "Athainmnigh..." + +msgid "Open in External Program" +msgstr "Oscail i gClár Seachtrach" + +msgid "Red" +msgstr "Dearg" + +msgid "Orange" +msgstr "Oráiste" + +msgid "Yellow" +msgstr "Buí" + +msgid "Green" +msgstr "Glas" + +msgid "Teal" +msgstr "TealName" + +msgid "Blue" +msgstr "Gorm" + +msgid "Purple" +msgstr "Corcra" + +msgid "Pink" +msgstr "Bándearg" + +msgid "Gray" +msgstr "Liath" + +msgid "Go to previous selected folder/file." +msgstr "Téigh go dtí an fillteán/comhad roghnaithe roimhe seo." + +msgid "Go to next selected folder/file." +msgstr "Téigh go dtí an chéad fhillteán/comhad roghnaithe eile." + +msgid "Re-Scan Filesystem" +msgstr "Ath-Scan Córas Comhad" + +msgid "Change Split Mode" +msgstr "Athraigh Mód Scoilte" + +msgid "Filter Files" +msgstr "Scag Comhaid" + +msgid "" +"Scanning Files,\n" +"Please Wait..." +msgstr "" +"Comhaid á Scanadh,\n" +"Fan, le do thoil..." + +msgid "Overwrite" +msgstr "Forscríobh" + +msgid "Keep Both" +msgstr "Coinnigh an Dá" + +msgid "Create Script" +msgstr "Cruthaigh Script" + +msgid "Find in Files" +msgstr "Aimsigh i gComhaid" + +msgid "Find:" +msgstr "Aimsigh:" + +msgid "Replace:" +msgstr "Ionadaigh:" + +msgid "Folder:" +msgstr "Fillteán:" + +msgid "Filters:" +msgstr "Scagairí:" + +msgid "" +"Include the files with the following extensions. Add or remove them in " +"ProjectSettings." +msgstr "" +"Cuir na comhaid leis na síntí seo a leanas san áireamh. Cuir nó bain iad i " +"ProjectSettings." + +msgid "Find..." +msgstr "Aimsigh..." + +msgid "Replace..." +msgstr "Ionadaigh..." + +msgid "Replace in Files" +msgstr "Ionadaigh i gComhaid" + +msgid "Replace all (no undo)" +msgstr "Ionadaigh gach rud (gan cealaigh)" + +msgid "Searching..." +msgstr "Ag cuardach..." + +msgid "%d match in %d file" +msgstr "%d comhoiriúnach i gcomhad %d" + +msgid "%d matches in %d file" +msgstr "%d comhoiriúnach i gcomhad %d" + +msgid "%d matches in %d files" +msgstr "%d comhoiriúnach i gcomhaid %d" + +msgid "Set Group Description" +msgstr "Socraigh Cur Síos ar an nGrúpa" + +msgid "Invalid group name. It cannot be empty." +msgstr "Ainm neamhbhailí an ghrúpa. Ní féidir leis a bheith folamh." + +msgid "A group with the name '%s' already exists." +msgstr "Tá grúpa leis an ainm '%s' ann cheana." + +msgid "Group can't be empty." +msgstr "Ní féidir le grúpa a bheith folamh." + +msgid "Group already exists." +msgstr "Tá grúpa ann cheana féin." + +msgid "Add Group" +msgstr "Cuir Grúpa Leis" + +msgid "Renaming Group References" +msgstr "Tagairtí Grúpa a Athainmniú" + +msgid "Removing Group References" +msgstr "Tagairtí Grúpa a Bhaint" + +msgid "Rename Group" +msgstr "Athainmnigh Grúpa" + +msgid "Remove Group" +msgstr "Bain Grúpa" + +msgid "Delete references from all scenes" +msgstr "Scrios tagairtí ó gach radharc" + +msgid "Delete group \"%s\"?" +msgstr "Scrios grúpa \"%s\"?" + +msgid "Group name is valid." +msgstr "Tá ainm an ghrúpa bailí." + +msgid "Rename references in all scenes" +msgstr "Athainmnigh tagairtí i ngach radharc" + +msgid "Scene Groups" +msgstr "Grúpaí Radhairc" + +msgid "This group belongs to another scene and can't be edited." +msgstr "" +"Baineann an grúpa seo le radharc eile agus ní féidir iad a chur in eagar." + +msgid "Copy group name to clipboard." +msgstr "Cóipeáil ainm an ghrúpa go dtí an ghearrthaisce." + +msgid "Global Groups" +msgstr "Grúpaí Domhanda" + +msgid "Add to Group" +msgstr "Cuir leis an nGrúpa" + +msgid "Remove from Group" +msgstr "Bain ó Ghrúpa" + +msgid "Convert to Global Group" +msgstr "Tiontaigh go Grúpa Domhanda" + +msgid "Convert to Scene Group" +msgstr "Tiontaigh go Grúpa Radhairc" + +msgid "Create New Group" +msgstr "Cruthaigh Grúpa Nua" + +msgid "Global" +msgstr "Domhanda" + +msgid "Delete group \"%s\" and all its references?" +msgstr "Scrios grúpa \"%s\" agus a chuid tagairtí go léir?" + +msgid "Add a new group." +msgstr "Cuir grúpa nua leis." + +msgid "Filter Groups" +msgstr "Grúpaí Scagaire" + +msgid "" +"Git commit date: %s\n" +"Click to copy the version information." +msgstr "" +"Dáta tiomantais Git: %s\n" +"Cliceáil chun faisnéis an leagain a chóipeáil." + +msgid "Expand Bottom Panel" +msgstr "Leathnaigh an Painéal Bun" + +msgid "Move/Duplicate: %s" +msgstr "Bog/Dúblach: %s" + +msgid "Move/Duplicate %d Item" +msgid_plural "Move/Duplicate %d Items" +msgstr[0] "Bog/Dúblaigh %d Mír" +msgstr[1] "Bog/Dúblaigh %d Míreanna" +msgstr[2] "Bog/Dúblaigh %d Míreanna" +msgstr[3] "Bog/Dúblaigh %d Míreanna" +msgstr[4] "Bog/Dúblaigh %d Míreanna" + +msgid "Choose target directory:" +msgstr "Roghnaigh comhadlann sprice:" + +msgid "Move" +msgstr "Bog" + +msgid "Network" +msgstr "Líonra" + +msgid "Select Current Folder" +msgstr "Roghnaigh Fillteán Reatha" + +msgid "Cannot save file with an empty filename." +msgstr "Ní féidir comhad a shábháil le comhadainm folamh." + +msgid "Cannot save file with a name starting with a dot." +msgstr "Ní féidir comhad a shábháil le hainm ag tosú le ponc." + +msgid "" +"File \"%s\" already exists.\n" +"Do you want to overwrite it?" +msgstr "" +"Tá comhad \"%s\" ann cheana.\n" +"An bhfuil fonn ort scríobh air?" + +msgid "Select This Folder" +msgstr "Roghnaigh an fillteán seo" + +msgid "All Recognized" +msgstr "Gach Aitheanta" + +msgid "All Files (*)" +msgstr "Gach Comhad (*)" + +msgid "Open a File" +msgstr "Oscail Comhad" + +msgid "Open File(s)" +msgstr "Oscail Comhad(anna)" + +msgid "Open a Directory" +msgstr "Oscail Comhadlann" + +msgid "Open a File or Directory" +msgstr "Oscail Comhad nó Comhadlann" + +msgid "Save a File" +msgstr "Sábháil Comhad" + +msgid "Could not create folder. File with that name already exists." +msgstr "" +"Níorbh fhéidir fillteán a chruthú. Tá an comhad leis an ainm sin ann cheana." + +msgid "Favorited folder does not exist anymore and will be removed." +msgstr "Níl an fillteán is fearr leat ann níos mó agus bainfear é." + +msgid "Go Back" +msgstr "Téigh siar" + +msgid "Go Forward" +msgstr "Téigh Ar Aghaidh" + +msgid "Go Up" +msgstr "Téigh Suas" + +msgid "Toggle Hidden Files" +msgstr "Scoránaigh Comhaid Fholaithe" + +msgid "Toggle Favorite" +msgstr "Scoránaigh an ceann is fearr leat" + +msgid "Toggle Mode" +msgstr "Scoránaigh an Mód" + +msgid "Focus Path" +msgstr "Conair Fócais" + +msgid "Move Favorite Up" +msgstr "Bog an ceann is fearr leat suas" + +msgid "Move Favorite Down" +msgstr "Bog an ceann is fearr leat síos" + +msgid "Go to previous folder." +msgstr "Téigh go dtí an fillteán roimhe seo." + +msgid "Go to next folder." +msgstr "Téigh go dtí an chéad fhillteán eile." + +msgid "Go to parent folder." +msgstr "Téigh chuig máthairfhillteán." + +msgid "Refresh files." +msgstr "Athnuaigh comhaid." + +msgid "(Un)favorite current folder." +msgstr "(Un)fillteán reatha is fearr leat." + +msgid "Toggle the visibility of hidden files." +msgstr "Scoránaigh infheictheacht na gcomhad folaithe." + +msgid "Create a new folder." +msgstr "Cruthaigh fillteán nua." + +msgid "Directories & Files:" +msgstr "Comhadlanna & Comhaid:" + +msgid "Preview:" +msgstr "Réamhamharc:" + +msgid "File:" +msgstr "Comhad:" + +msgid "" +"Remove the selected files? For safety only files and empty directories can be " +"deleted from here. (Cannot be undone.)\n" +"Depending on your filesystem configuration, the files will either be moved to " +"the system trash or deleted permanently." +msgstr "" +"Bain na comhaid roghnaithe? Ar mhaithe le sábháilteacht is féidir ach comhaid " +"agus eolairí folamh a scriosadh as anseo. (Ní féidir é a chealú.)\n" +"Ag brath ar chumraíocht do chórais comhad, bogfar na comhaid go bruscar an " +"chórais nó scriosfar iad go buan." + +msgid "No sub-resources found." +msgstr "Níor aimsíodh aon fho-acmhainní." + +msgid "Open a list of sub-resources." +msgstr "Oscail liosta fo-acmhainní." + +msgid "Play the project." +msgstr "Seinn an tionscadal." + +msgid "Play the edited scene." +msgstr "Seinn an radharc in eagar." + +msgid "Play a custom scene." +msgstr "Seinn radharc saincheaptha." + +msgid "Reload the played scene." +msgstr "Athluchtaigh an radharc a imríodh." + +msgid "Quick Run Scene..." +msgstr "Radharc Rith Tapa..." + +msgid "" +"Movie Maker mode is enabled, but no movie file path has been specified.\n" +"A default movie file path can be specified in the project settings under the " +"Editor > Movie Writer category.\n" +"Alternatively, for running single scenes, a `movie_file` string metadata can " +"be added to the root node,\n" +"specifying the path to a movie file that will be used when recording that " +"scene." +msgstr "" +"Tá mód Déantóir Scannán cumasaithe, ach níl aon chonair comhaid scannáin " +"sonraithe.\n" +"Is féidir cosán réamhshocraithe comhaid scannáin a shonrú i socruithe an " +"tionscadail faoin gcatagóir Eagarthóir > Scríbhneoir Scannán.\n" +"Mar mhalairt air sin, chun radhairc aonair a rith, is féidir meiteashonraí " +"teaghrán `comhad_scannáin` a chur leis an mbunnód,\n" +"ag sonrú an chosáin chuig comhad scannáin a úsáidfear agus an radharc sin á " +"thaifeadadh." + +msgid "Could not start subprocess(es)!" +msgstr "Níorbh fhéidir fophróiseas(es) a thosú!" + +msgid "Run the project's default scene." +msgstr "Rith radharc réamhshocraithe an tionscadail." + +msgid "Run Project" +msgstr "Rith Tionscadal" + +msgid "Pause the running project's execution for debugging." +msgstr "" +"Cuir forghníomhú an tionscadail reatha ar sos le haghaidh dífhabhtaithe." + +msgid "Pause Running Project" +msgstr "Tionscadal Rith Ar Sos" + +msgid "Stop the currently running project." +msgstr "Stop an tionscadal atá á reáchtáil faoi láthair." + +msgid "Stop Running Project" +msgstr "Stop an Tionscadal Rith" + +msgid "Run the currently edited scene." +msgstr "Rith an radharc atá curtha in eagar faoi láthair." + +msgid "Run Current Scene" +msgstr "Rith an Radharc Reatha" + +msgid "Run a specific scene." +msgstr "Rith radharc ar leith." + +msgid "Run Specific Scene" +msgstr "Rith Radharc Ar Leith" + +msgid "" +"Enable Movie Maker mode.\n" +"The project will run at stable FPS and the visual and audio output will be " +"recorded to a video file." +msgstr "" +"Cumasaigh mód Déantóir Scannáin.\n" +"Beidh an tionscadal ar siúl ag FPS cobhsaí agus déanfar an t-aschur amhairc " +"agus fuaime a thaifeadadh i gcomhad físe." + +msgid "Play This Scene" +msgstr "Seinn an radharc seo" + +msgid "Close Tab" +msgstr "Dún Cluaisín" + +msgid "Undo Close Tab" +msgstr "Cealaigh an Cluaisín Dúnta" + +msgid "Close Other Tabs" +msgstr "Dún Cluaisíní Eile" + +msgid "Close Tabs to the Right" +msgstr "Dún Cluaisíní ar Dheis" + +msgid "Close All Tabs" +msgstr "Dún Gach Cluaisín" + +msgid "New Window" +msgstr "Fuinneog Nua" + +msgid "Add a new scene." +msgstr "Cuir radharc nua leis." + +msgid "" +"Hold %s to round to integers.\n" +"Hold Shift for more precise changes." +msgstr "" +"Coinnigh %s go slánuimhir.\n" +"Coinnigh Shift le haghaidh athruithe níos beaichte." + +msgid "No notifications." +msgstr "Gan fógraí." + +msgid "Show notifications." +msgstr "Taispeáin fógraí." + +msgid "Silence the notifications." +msgstr "Cuir na fógraí ina dtost." + +msgid "Toggle Visible" +msgstr "Scoránaigh Infheicthe" + +msgid "Unlock Node" +msgstr "Díghlasáil Nód" + +msgid "Ungroup Children" +msgstr "Leanaí Gan Ghrúpa" + +msgid "Disable Scene Unique Name" +msgstr "Díchumasaigh Ainm Uathúil an Radhairc" + +msgid "(Connecting From)" +msgstr "(Ag Nascadh Ó)" + +msgid "Node configuration warning:" +msgstr "Rabhadh cumraíochta nód:" + +msgid "" +"This node can be accessed from within anywhere in the scene by preceding it " +"with the '%s' prefix in a node path.\n" +"Click to disable this." +msgstr "" +"Is féidir teacht ar an nód seo ó áit ar bith sa radharc ach an réimír '%s' a " +"chur roimhe i gcosán nód.\n" +"Cliceáil chun é seo a dhíchumasú." + +msgid "Node has one connection." +msgid_plural "Node has {num} connections." +msgstr[0] "Tá nasc amháin ag Nód." +msgstr[1] "Tá naisc {num} ag Nód." +msgstr[2] "Tá naisc {num} ag Nód." +msgstr[3] "Tá naisc {num} ag Nód." +msgstr[4] "Tá naisc {num} ag Nód." + +msgid "Node is in this group:" +msgid_plural "Node is in the following groups:" +msgstr[0] "Tá nód sa ghrúpa seo:" +msgstr[1] "Tá Nód sna grúpaí seo a leanas:" +msgstr[2] "Tá Nód sna grúpaí seo a leanas:" +msgstr[3] "Tá Nód sna grúpaí seo a leanas:" +msgstr[4] "Tá Nód sna grúpaí seo a leanas:" + +msgid "Click to show signals dock." +msgstr "Cliceáil chun duga comharthaí a thaispeáint." + +msgid "This script is currently running in the editor." +msgstr "Tá an script seo á rith san eagarthóir faoi láthair." + +msgid "This script is a custom type." +msgstr "Is cineál saincheaptha é an script seo." + +msgid "Open Script:" +msgstr "Oscail Script:" + +msgid "" +"Node is locked.\n" +"Click to unlock it." +msgstr "" +"Tá nód faoi ghlas.\n" +"Cliceáil chun é a dhíghlasáil." + +msgid "" +"Children are not selectable.\n" +"Click to make them selectable." +msgstr "" +"Ní féidir páistí a roghnú.\n" +"Cliceáil chun iad a roghnú." + +msgid "" +"AnimationPlayer is pinned.\n" +"Click to unpin." +msgstr "" +"Tá AnimationPlayer pinned.\n" +"Cliceáil chun unpin." + +msgid "Open in Editor" +msgstr "Oscail san Eagarthóir" + +msgid "\"%s\" is not a known filter." +msgstr "Ní scagaire aitheanta é \"%s\"." + +msgid "Invalid node name, the following characters are not allowed:" +msgstr "Ainm nód neamhbhailí, ní cheadaítear na carachtair seo a leanas:" + +msgid "A node with the unique name %s already exists in this scene." +msgstr "Tá nód leis an ainm uathúil %s sa radharc seo cheana féin." + +msgid "Rename Node" +msgstr "Athainmnigh Nód" + +msgid "Rename Nodes" +msgstr "Athainmnigh Nóid" + +msgid "Scene Tree (Nodes):" +msgstr "Crann Radharc (Nóid):" + +msgid "Node Configuration Warning!" +msgstr "Rabhadh Cumraíochta Nód!" + +msgid "Allowed:" +msgstr "Ceadaithe:" + +msgid "Select a Node" +msgstr "Roghnaigh Nód" + +msgid "Show All" +msgstr "Taispeáin Gach Rud" + +msgid "The Beginning" +msgstr "An Tús" + +msgid "Pre-Import Scene" +msgstr "Radharc Réamhiompórtála" + +msgid "Importing Scene..." +msgstr "Radharc á Iompórtáil..." + +msgid "Import Scene" +msgstr "Iompórtáil Radharc" + +msgid "Running Custom Script..." +msgstr "Script Shaincheaptha á rith..." + +msgid "Couldn't load post-import script:" +msgstr "Níorbh fhéidir script iariompórtála a luchtú:" + +msgid "Invalid/broken script for post-import (check console):" +msgstr "Script neamhbhailí/briste le haghaidh iariompórtála (seiceáil consól):" + +msgid "Error running post-import script:" +msgstr "Earráid agus script iariompórtála á rith:" + +msgid "Did you return a Node-derived object in the `_post_import()` method?" +msgstr "Ar thug tú réad a dhíorthaítear ó Nód ar ais sa mhodh '_post_import()'?" + +msgid "Saving..." +msgstr "Ag sábháil..." + +msgid "<Unnamed Material>" +msgstr "<Ábhar Gan Ainm>" + +msgid "Import ID: %s" +msgstr "Iompórtáil aitheantas: %s" + +msgid "" +"Type: %s\n" +"Import ID: %s" +msgstr "" +"Cineál: %s\n" +"Iompórtáil aitheantas: %s" + +msgid "Error opening scene" +msgstr "Earráid agus radharc á oscailt" + +msgid "Advanced Import Settings for AnimationLibrary '%s'" +msgstr "Ardsocruithe Iompórtála le haghaidh BeochanaLibrary '%s'" + +msgid "Advanced Import Settings for Scene '%s'" +msgstr "Ardsocruithe Iompórtála le haghaidh Radharc '%s'" + +msgid "Select folder to extract material resources" +msgstr "Roghnaigh fillteán chun acmhainní ábhair a bhaint amach" + +msgid "Select folder where mesh resources will save on import" +msgstr "Roghnaigh fillteán ina sábhálfaidh acmhainní mogall ar iompórtáil" + +msgid "Select folder where animations will save on import" +msgstr "Roghnaigh fillteán ina sábhálfaidh beochan ar iompórtáil" + +msgid "Warning: File exists" +msgstr "Rabhadh: Tá an comhad ann" + +msgid "Existing file with the same name will be replaced." +msgstr "Cuirfear an comhad atá ann cheana leis an ainm céanna in ionad." + +msgid "Will create new file" +msgstr "Cruthaigh comhad nua" + +msgid "Already External" +msgstr "Seachtrach cheana féin" + +msgid "" +"This material already references an external file, no action will be taken.\n" +"Disable the external property for it to be extracted again." +msgstr "" +"Déanann an t-ábhar seo tagairt do chomhad seachtrach cheana féin, ní dhéanfar " +"aon ghníomh.\n" +"Díchumasaigh an mhaoin sheachtrach chun í a bhaint arís." + +msgid "No import ID" +msgstr "Gan aitheantas iompórtála" + +msgid "" +"Material has no name nor any other way to identify on re-import.\n" +"Please name it or ensure it is exported with an unique ID." +msgstr "" +"Níl aon ainm ná aon bhealach eile ag an ábhar le haithint ar athiompórtáil.\n" +"Ainmnigh é nó cinntigh go n-onnmhairítear é le haitheantas uathúil." + +msgid "Extract Materials to Resource Files" +msgstr "Ábhair a Bhaint amach i gComhaid Acmhainne" + +msgid "Extract" +msgstr "Sliocht" + +msgid "Already Saving" +msgstr "Ag Sábháil Cheana Féin" + +msgid "" +"This mesh already saves to an external resource, no action will be taken." +msgstr "" +"Sábhálann an mogall seo acmhainn sheachtrach cheana féin, ní dhéanfar aon " +"ghníomh." + +msgid "Existing file with the same name will be replaced on import." +msgstr "" +"Cuirfear an comhad atá ann cheana leis an ainm céanna in ionad na hiompórtála." + +msgid "Will save to new file" +msgstr "Sábhálfaidh sé i gcomhad nua" + +msgid "" +"Mesh has no name nor any other way to identify on re-import.\n" +"Please name it or ensure it is exported with an unique ID." +msgstr "" +"Níl aon ainm ná aon bhealach eile ag mogalra chun iad a aithint ar " +"athiompórtáil.\n" +"Ainmnigh é nó cinntigh go n-onnmhairítear é le haitheantas uathúil." + +msgid "Set paths to save meshes as resource files on Reimport" +msgstr "" +"Socraigh cosáin chun mogaill a shábháil mar chomhaid acmhainne ar " +"Athiompórtáil" + +msgid "Set Paths" +msgstr "Socraigh Cosáin" + +msgid "" +"This animation already saves to an external resource, no action will be taken." +msgstr "" +"Sábhálann an beochan seo acmhainn sheachtrach cheana féin, ní dhéanfar aon " +"ghníomh." + +msgid "Set paths to save animations as resource files on Reimport" +msgstr "" +"Socraigh cosáin chun beochan a shábháil mar chomhaid acmhainne ar " +"Athiompórtáil" + +msgid "Can't make material external to file, write error:" +msgstr "Ní féidir ábhar a dhéanamh lasmuigh de chomhad, earráid a scríobh:" + +msgid "Actions..." +msgstr "Gníomhartha..." + +msgid "Extract Materials" +msgstr "Ábhair Sliocht" + +msgid "Set Animation Save Paths" +msgstr "Socraigh Cosáin Sábhála Beochana" + +msgid "Set Mesh Save Paths" +msgstr "Socraigh Cosáin Sábhála Mogalra" + +msgid "Meshes" +msgstr "Mogalraí" + +msgid "Materials" +msgstr "Ábhair" + +msgid "Selected Animation Play/Pause" +msgstr "Dráma Beochana Roghnaithe/Sos" + +msgid "Rotate Lights With Model" +msgstr "Rothlaigh soilse le samhail" + +msgid "Primary Light" +msgstr "Solas Príomhúil" + +msgid "Secondary Light" +msgstr "Solas Tánaisteach" + +msgid "Status" +msgstr "Stádas" + +msgid "Save Extension:" +msgstr "Sábháil Iarmhír:" + +msgid "Text: *.tres" +msgstr "Téacs: *.tres" + +msgid "Binary: *.res" +msgstr "Dénártha: *.res" + +msgid "Text Resource" +msgstr "Acmhainn Téacs" + +msgid "Binary Resource" +msgstr "Acmhainn Dhénártha" + +msgid "Audio Stream Importer: %s" +msgstr "Iompórtálaí Sruth Fuaime: %s" + +msgid "Enable looping." +msgstr "Cumasaigh lúbadh." + +msgid "Offset:" +msgstr "Fritháireamh:" + +msgid "" +"Loop offset (from beginning). Note that if BPM is set, this setting will be " +"ignored." +msgstr "" +"Fritháireamh lúb (ó thús). Tabhair faoi deara go ndéanfar neamhaird ar an " +"socrú seo má shocraítear BPM." + +msgid "Loop:" +msgstr "Lúb:" + +msgid "BPM:" +msgstr "BPM:" + +msgid "" +"Configure the Beats Per Measure (tempo) used for the interactive streams.\n" +"This is required in order to configure beat information." +msgstr "" +"Cumraigh na Beats Per Measure (luas) a úsáidtear do na sruthanna " +"idirghníomhacha.\n" +"Tá sé seo ag teastáil chun faisnéis buille a chumrú." + +msgid "Beat Count:" +msgstr "Líon na mbuille:" + +msgid "" +"Configure the amount of Beats used for music-aware looping. If zero, it will " +"be autodetected from the length.\n" +"It is recommended to set this value (either manually or by clicking on a beat " +"number in the preview) to ensure looping works properly." +msgstr "" +"Cumraigh an méid Beats a úsáidtear le haghaidh lúbadh atá feasach ar cheol. " +"Má náid, beidh sé autodetected as an fad.\n" +"Moltar an luach seo a shocrú (de láimh nó trí chliceáil ar uimhir bhuille sa " +"réamhamharc) chun a chinntiú go n-oibríonn lúbadh i gceart." + +msgid "Bar Beats:" +msgstr "Beats Barra:" + +msgid "" +"Configure the Beats Per Bar. This used for music-aware transitions between " +"AudioStreams." +msgstr "" +"Cumraigh na buillí in aghaidh an bharra. D'úsáid sé seo le haghaidh aistrithe " +"ceol-fheasacha idir AudioStreams." + +msgid "Music Playback:" +msgstr "Athsheinm Ceoil:" + +msgid "New Configuration" +msgstr "Cumraíocht Nua" + +msgid "Remove Variation" +msgstr "Bain Athrú" + +msgid "Preloaded glyphs: %d" +msgstr "Glyphs réamhluchtaithe: %d" + +msgid "" +"Warning: There are no configurations specified, no glyphs will be pre-" +"rendered." +msgstr "" +"Rabhadh: Níl aon chumraíochtaí sonraithe, ní dhéanfar aon ghliophs a réamh-" +"rindreáil." + +msgid "" +"Warning: Multiple configurations have identical settings. Duplicates will be " +"ignored." +msgstr "" +"Rabhadh: Tá socruithe comhionanna ag cumraíochtaí iolracha. Déanfar neamhaird " +"ar dhúblaigh." + +msgid "" +"Note: LCD Subpixel antialiasing is selected, each of the glyphs will be pre-" +"rendered for all supported subpixel layouts (5x)." +msgstr "" +"Nóta: Roghnaítear antialiasing Subpixel LCD, déanfar gach ceann de na glyphs " +"a réamh-rindreáil do gach leagan amach subpixel tacaithe (5x)." + +msgid "" +"Note: Subpixel positioning is selected, each of the glyphs might be pre-" +"rendered for multiple subpixel offsets (up to 4x)." +msgstr "" +"Tabhair faoi deara: Roghnaítear suíomh subpixel, d'fhéadfadh gach ceann de na " +"glyphs a réamh-rindreáil le haghaidh fritháirimh subpixel il (suas le 4x)." + +msgid "Advanced Import Settings for '%s'" +msgstr "Ardsocruithe Iompórtála le haghaidh '%s'" + +msgid "Rendering Options" +msgstr "Roghanna Rindreála" + +msgid "Select font rendering options, fallback font, and metadata override:" +msgstr "" +"Roghnaigh roghanna rindreáil cló, cló cúltaca, agus sáraíocht meiteashonraí:" + +msgid "Pre-render Configurations" +msgstr "Cumraíochtaí Réamhrindreála" + +msgid "" +"Add font size, and variation coordinates, and select glyphs to pre-render:" +msgstr "" +"Cuir clómhéid leis, agus comhordanáidí athraithe, agus roghnaigh glyphs le " +"réamh-rindreáil:" + +msgid "Configuration:" +msgstr "Cumraíocht:" + +msgid "Add configuration" +msgstr "Cuir cumraíocht leis" + +msgid "Clear Glyph List" +msgstr "Glan Liosta Glyph" + +msgid "Glyphs from the Translations" +msgstr "Glyphs ó na hAistriúcháin" + +msgid "Select translations to add all required glyphs to pre-render list:" +msgstr "" +"Roghnaigh aistriúcháin chun gach glyphs is gá a chur leis an liosta " +"réamhrindreála:" + +msgid "Shape all Strings in the Translations and Add Glyphs" +msgstr "Cruth gach Teaghráin sna hAistriúcháin agus Cuir Glyphs" + +msgid "Glyphs from the Text" +msgstr "Glyphs ón Téacs" + +msgid "" +"Enter a text and select OpenType features to shape and add all required " +"glyphs to pre-render list:" +msgstr "" +"Iontráil téacs agus roghnaigh gnéithe OpenType chun gach glyphs riachtanach a " +"mhúnlú agus a chur leis an liosta réamhrindreála:" + +msgid "Shape Text and Add Glyphs" +msgstr "Cruthaigh téacs agus cuir glyphs leis" + +msgid "Glyphs from the Character Map" +msgstr "Glyphs ón Léarscáil Carachtar" + +msgid "" +"Add or remove glyphs from the character map to pre-render list:\n" +"Note: Some stylistic alternatives and glyph variants do not have one-to-one " +"correspondence to character, and not shown in this map, use \"Glyphs from the " +"text\" tab to add these." +msgstr "" +"Cuir nó bain glyphs as léarscáil na gcarachtar leis an liosta " +"réamhrindreála:\n" +"Tabhair faoi deara: Níl comhfhreagras duine le duine le carachtar ag roinnt " +"roghanna stíle agus leaganacha glyph, agus ní thaispeántar iad sa léarscáil " +"seo, bain úsáid as cluaisín \"Glyphs ón téacs\" chun iad seo a chur leis." + +msgid "Dynamically rendered TrueType/OpenType font" +msgstr "Cló TrueType / OpenType a rinneadh go dinimiciúil" + +msgid "Prerendered multichannel(+true) signed distance field" +msgstr "Multichannel prerendered (+ fíor) réimse achar sínithe" + +msgid "" +"Error importing GLSL shader file: '%s'. Open the file in the filesystem dock " +"in order to see the reason." +msgstr "" +"Earráid agus comhad scáthaithe GLSL á iompórtáil: '%s'. Oscail an comhad i " +"nduga an chórais comhad chun an chúis a fheiceáil." + +msgid "" +"%s: Texture detected as used as a normal map in 3D. Enabling red-green " +"texture compression to reduce memory usage (blue channel is discarded)." +msgstr "" +"%s: Braitheadh uigeacht mar ghnáthléarscáil in 3D. Comhbhrú uigeachta dearg-" +"ghlas a chumasú chun úsáid cuimhne a laghdú (caitear cainéal gorm amach)." + +msgid "" +"%s: Texture detected as used as a roughness map in 3D. Enabling roughness " +"limiter based on the detected associated normal map at %s." +msgstr "" +"%s: Aimsíodh uigeacht mar a úsáidtear mar léarscáil garbh i 3D. Limiter " +"gairbhe a chumasú bunaithe ar an ngnáthléarscáil ghaolmhar a braitheadh ag %s." + +msgid "" +"%s: Texture detected as used in 3D. Enabling mipmap generation and setting " +"the texture compression mode to %s." +msgstr "" +"%s: Braitheadh uigeacht mar a úsáidtear i 3D. Giniúint mipmap a chumasú agus " +"an mód comhbhrúite uigeachta a shocrú go %s." + +msgid "2D/3D (Auto-Detect)" +msgstr "2D / 3D (Uath-Bhrath)" + +msgid "2D" +msgstr "2D" + +msgid "3D" +msgstr "3D" + +msgid "" +"%s: Atlas texture significantly larger on one axis (%d), consider changing " +"the `editor/import/atlas_max_width` Project Setting to allow a wider texture, " +"making the result more even in size." +msgstr "" +"%s: Uigeacht Atlas i bhfad níos mó ar ais amháin (%d), smaoinigh ar Shocrú " +"Tionscadail 'editor/import/atlas_max_width' a athrú chun uigeacht níos " +"leithne a cheadú, rud a fhágann go bhfuil an toradh níos cothroime ó thaobh " +"méide de." + +msgid "Importer:" +msgstr "Iompórtálaí:" + +msgid "Keep File (exported as is)" +msgstr "Coinnigh Comhad (easpórtáilte mar atá)" + +msgid "Skip File (not exported)" +msgstr "Ná bac leis an gComhad (níor easpórtáil)" + +msgid "%d Files" +msgstr "%d Comhaid" + +msgid "Set as Default for '%s'" +msgstr "Socraigh mar Réamhshocrú do '%s'" + +msgid "Clear Default for '%s'" +msgstr "Glan an réamhshocrú le haghaidh '%s'" + +msgid "" +"You have pending changes that haven't been applied yet. Click Reimport to " +"apply changes made to the import options.\n" +"Selecting another resource in the FileSystem dock without clicking Reimport " +"first will discard changes made in the Import dock." +msgstr "" +"Tá athruithe ar feitheamh agat nach bhfuil curtha i bhfeidhm go fóill. " +"Cliceáil Athiompórtáil chun athruithe a rinneadh ar na roghanna iompórtála a " +"chur i bhfeidhm.\n" +"Má roghnaíonn tú acmhainn eile i nduga an Chórais Comhad gan cliceáil ar " +"Reimport ar dtús, cuirfear na hathruithe a rinneadh sa duga Iompórtála i " +"leataobh." + +msgid "Import As:" +msgstr "Iompórtáil Mar:" + +msgid "Preset" +msgstr "Réamhshocrú" + +msgid "Advanced..." +msgstr "Ardrang..." + +msgid "" +"The imported resource is currently loaded. All instances will be replaced and " +"undo history will be cleared." +msgstr "" +"Tá an acmhainn iompórtáilte luchtaithe faoi láthair. Cuirfear gach cás in áit " +"agus glanfar an stair a chealú." + +msgid "" +"WARNING: Assets exist that use this resource. They may stop loading properly " +"after changing type." +msgstr "" +"RABHADH: Tá sócmhainní ann a úsáideann an acmhainn seo. Féadfaidh siad stop a " +"chur le luchtú i gceart tar éis cineál a athrú." + +msgid "" +"Select a resource file in the filesystem or in the inspector to adjust import " +"settings." +msgstr "" +"Roghnaigh comhad acmhainne sa chóras comhad nó sa chigire chun socruithe " +"iompórtála a choigeartú." + +msgid "No Event Configured" +msgstr "Níor cumraíodh teagmhas ar bith" + +msgid "Keyboard Keys" +msgstr "Eochracha Méarchláir" + +msgid "Mouse Buttons" +msgstr "Cnaipí Luiche" + +msgid "Joypad Buttons" +msgstr "Cnaipí Joypad" + +msgid "Joypad Axes" +msgstr "Aiseanna Joypad" + +msgid "Event Configuration for \"%s\"" +msgstr "Cumraíocht teagmhais le haghaidh \"%s\"" + +msgid "Event Configuration" +msgstr "Cumraíocht an Imeachta" + +msgid "Manual Selection" +msgstr "Roghnú Láimhe" + +msgid "Filter Inputs" +msgstr "Scag Ionchuranna" + +msgid "Additional Options" +msgstr "Roghanna Breise" + +msgid "Device:" +msgstr "Gléas:" + +msgid "Command / Control (auto)" +msgstr "Ordú / Rialú (uathoibríoch)" + +msgid "" +"Automatically remaps between 'Meta' ('Command') and 'Control' depending on " +"current platform." +msgstr "" +"Déan athmhapáil go huathoibríoch idir 'Meta' ('Command') agus 'Control' ag " +"brath ar an ardán reatha." + +msgid "Keycode (Latin Equivalent)" +msgstr "Keycode (coibhéis Laidine)" + +msgid "Physical Keycode (Position on US QWERTY Keyboard)" +msgstr "Eochairchód Fisiciúil (Seasamh ar Mhéarchlár QWERTY na SA)" + +msgid "Key Label (Unicode, Case-Insensitive)" +msgstr "Lipéad Eochrach (Unicode, Cás-Neamhíogair)" + +msgid "Physical location" +msgstr "Suíomh fisiciúil" + +msgid "Any" +msgstr "Déanfar aon" + +msgid "" +"The following resources will be duplicated and embedded within this resource/" +"object." +msgstr "" +"Déanfar na hacmhainní seo a leanas a dhúbailt agus a leabú laistigh den " +"acmhainn/réad seo." + +msgid "This object has no resources." +msgstr "Níl aon acmhainní ag an oibiacht seo." + +msgid "Failed to load resource." +msgstr "Theip ar luchtú na hacmhainne." + +msgid "(Current)" +msgstr "(Reatha)" + +msgid "Expand Non-Default" +msgstr "Leathnaigh Neamh-Réamhshocrú" + +msgid "Property Name Style" +msgstr "Stíl Ainm na Maoine" + +msgid "Raw (e.g. \"%s\")" +msgstr "Amh (m.sh. \"%s\")" + +msgid "Capitalized (e.g. \"%s\")" +msgstr "Caipitlithe (m.sh. \"%s\")" + +msgid "Localized (e.g. \"Z Index\")" +msgstr "Logánaithe (m.sh. \"Innéacs Z\")" + +msgid "Localization not available for current language." +msgstr "Níl logánú ar fáil don teanga reatha." + +msgid "Copy Properties" +msgstr "Cóipeáil Airíonna" + +msgid "Paste Properties" +msgstr "Greamaigh Airíonna" + +msgid "Make Sub-Resources Unique" +msgstr "Fo-Acmhainní a Dhéanamh Uathúil" + +msgid "Create a new resource in memory and edit it." +msgstr "Cruthaigh acmhainn nua i gcuimhne agus é a chur in eagar." + +msgid "Load an existing resource from disk and edit it." +msgstr "Luchtaigh acmhainn atá ann cheana ón diosca agus cuir in eagar í." + +msgid "Save the currently edited resource." +msgstr "Sábháil an acmhainn atá curtha in eagar faoi láthair." + +msgid "Extra resource options." +msgstr "Roghanna acmhainní breise." + +msgid "Edit Resource from Clipboard" +msgstr "Cuir Acmhainn in Eagar ón nGearrthaisce" + +msgid "Copy Resource" +msgstr "Cóipeáil Acmhainn" + +msgid "Make Resource Built-In" +msgstr "Déan Acmhainn Tógtha Isteach" + +msgid "Go to previous edited object in history." +msgstr "Téigh go dtí réad a cuireadh in eagar roimhe seo sa stair." + +msgid "Go to next edited object in history." +msgstr "Téigh go dtí an chéad rud eile in eagar sa stair." + +msgid "History of recently edited objects." +msgstr "Stair na réad a cuireadh in eagar le déanaí." + +msgid "Open documentation for this object." +msgstr "Oscail doiciméadú don oibiacht seo." + +msgid "Filter Properties" +msgstr "Airíonna an Scag" + +msgid "Manage object properties." +msgstr "Bainistigh airíonna réada." + +msgid "This cannot be undone. Are you sure?" +msgstr "Ní féidir é seo a chealú. An bhfuil tú cinnte?" + +msgid "Add %d Translations" +msgstr "Cuir %d Aistriúcháin Leis" + +msgid "Remove Translation" +msgstr "Bain Aistriúchán" + +msgid "Translation Resource Remap: Add %d Path(s)" +msgstr "Athmhapáil Acmhainní Aistriúcháin: Cuir %d Conair(eanna) Leis" + +msgid "Translation Resource Remap: Add %d Remap(s)" +msgstr "Athmhapáil Acmhainní Aistriúcháin: Cuir %d Remap(s) Leis" + +msgid "Change Resource Remap Language" +msgstr "Athraigh Teanga Athmhapála Acmhainne" + +msgid "Remove Resource Remap" +msgstr "Bain Athmhapa Acmhainne" + +msgid "Remove Resource Remap Option" +msgstr "Bain Rogha Athmhapála Acmhainne" + +msgid "Add %d file(s) for POT generation" +msgstr "Cuir %d comhad(í) le giniúint POT" + +msgid "Remove file from POT generation" +msgstr "Bain comhad ó ghiniúint POT" + +msgid "Removed" +msgstr "Bainte" + +msgid "%s cannot be found." +msgstr "Ní féidir %s a aimsiú." + +msgid "Translations" +msgstr "Aistriúcháin" + +msgid "Translations:" +msgstr "Aistriúcháin:" + +msgid "Remaps" +msgstr "Athmhapaí" + +msgid "Resources:" +msgstr "Acmhainní:" + +msgid "Remaps by Locale:" +msgstr "Remaps de réir Locale:" + +msgid "Locale" +msgstr "Áitiúil" + +msgid "POT Generation" +msgstr "Giniúint POT" + +msgid "Files with translation strings:" +msgstr "Comhaid le teaghráin aistriúcháin:" + +msgid "Generate POT" +msgstr "Gin POT" + +msgid "Add Built-in Strings to POT" +msgstr "Cuir Teaghráin Tógtha le POT" + +msgid "Add strings from built-in components such as certain Control nodes." +msgstr "" +"Cuir teaghráin ó chomhpháirteanna tógtha isteach, mar shampla nóid Rialaithe " +"áirithe." + +msgid "Set %s on %d nodes" +msgstr "Socraigh %s ar nóid %d" + +msgid "%s (%d Selected)" +msgstr "%s (%d roghnaithe)" + +msgid "Groups" +msgstr "Grúpaí" + +msgid "Select a single node to edit its signals and groups." +msgstr "Roghnaigh nód amháin chun a chomharthaí agus a ghrúpaí a chur in eagar." + +msgid "Create Polygon" +msgstr "Cruthaigh Polagán" + +msgid "Create points." +msgstr "Cruthaigh pointí." + +msgid "" +"Edit points.\n" +"LMB: Move Point\n" +"RMB: Erase Point" +msgstr "" +"Cuir pointí in eagar.\n" +"LMB: Pointe Bogtha\n" +"RMB: Scrios Pointe" + +msgid "Erase points." +msgstr "Scrios pointí." + +msgid "Edit Polygon" +msgstr "Cuir Polagán in Eagar" + +msgid "Insert Point" +msgstr "Ionsáigh Pointe" + +msgid "Edit Polygon (Remove Point)" +msgstr "Cuir Polagán in Eagar (Bain Pointe)" + +msgid "Remove Polygon And Point" +msgstr "Bain Polagán agus Pointe" + +msgid "Add Animation" +msgstr "Cuir Beochan Leis" + +msgid "Add %s" +msgstr "Cuir %s leis" + +msgid "Move Node Point" +msgstr "Bog Pointe Nód" + +msgid "Change BlendSpace1D Config" +msgstr "Athraigh Cumraíocht BlendSpace1D" + +msgid "Change BlendSpace1D Labels" +msgstr "Athraigh Lipéid BlendSpace1D" + +msgid "This type of node can't be used. Only animation nodes are allowed." +msgstr "Ní féidir an cineál nód seo a úsáid. Ní cheadaítear ach nóid bheochana." + +msgid "This type of node can't be used. Only root nodes are allowed." +msgstr "Ní féidir an cineál nód seo a úsáid. Ní cheadaítear ach nóid fréimhe." + +msgid "Add Node Point" +msgstr "Cuir Pointe Nód Leis" + +msgid "Add Animation Point" +msgstr "Cuir Pointe Beochana Leis" + +msgid "Remove BlendSpace1D Point" +msgstr "Bain Pointe BlendSpace1D" + +msgid "Move BlendSpace1D Node Point" +msgstr "Bog Pointe Nód BlendSpace1D" + +msgid "" +"AnimationTree is inactive.\n" +"Activate to enable playback, check node warnings if activation fails." +msgstr "" +"Tá AnimationTree neamhghníomhach.\n" +"Gníomhachtaigh chun athsheinm a chumasú, seiceáil rabhaidh nód má theipeann " +"ar ghníomhachtú." + +msgid "Set the blending position within the space" +msgstr "Socraigh an suíomh measctha laistigh den spás" + +msgid "Select and move points, create points with RMB." +msgstr "Roghnaigh agus bog pointí, pointí a chruthú le RMB." + +msgid "Enable snap and show grid." +msgstr "Cumasaigh léim agus taispeáin greille." + +msgid "Sync:" +msgstr "Sioncronaigh:" + +msgid "Blend:" +msgstr "Cumasc:" + +msgid "Point" +msgstr "Pointe" + +msgid "Open Editor" +msgstr "Oscail Eagarthóir" + +msgid "Open Animation Node" +msgstr "Oscail Nód Beochana" + +msgid "Triangle already exists." +msgstr "Tá triantán ann cheana féin." + +msgid "Add Triangle" +msgstr "Cuir Triantán Leis" + +msgid "Change BlendSpace2D Config" +msgstr "Athraigh Cumraíocht BlendSpace2D" + +msgid "Change BlendSpace2D Labels" +msgstr "Athraigh Lipéid BlendSpace2D" + +msgid "Remove BlendSpace2D Point" +msgstr "Bain Pointe BlendSpace2D" + +msgid "Remove BlendSpace2D Triangle" +msgstr "Bain Triantán BlendSpace2D" + +msgid "No triangles exist, so no blending can take place." +msgstr "Níl aon triantáin ann, mar sin ní féidir aon chumasc a dhéanamh." + +msgid "Toggle Auto Triangles" +msgstr "Scoránaigh Triantáin Uathoibríocha" + +msgid "Create triangles by connecting points." +msgstr "Cruthaigh triantáin trí phointí a nascadh." + +msgid "Erase points and triangles." +msgstr "Scrios pointí agus triantáin." + +msgid "Generate blend triangles automatically (instead of manually)" +msgstr "Gin triantáin chumaisc go huathoibríoch (in ionad de láimh)" + +msgid "Parameter Changed: %s" +msgstr "Athraíodh an paraiméadar: %s" + +msgid "Inspect Filters" +msgstr "Scagairí a Iniúchadh" + +msgid "Output node can't be added to the blend tree." +msgstr "Ní féidir nód aschuir a chur leis an gcrann cumaisc." + +msgid "Add Node to BlendTree" +msgstr "Cuir Nód le BlendTree" + +msgid "Node Moved" +msgstr "Nód Bogtha" + +msgid "Unable to connect, port may be in use or connection may be invalid." +msgstr "" +"Ní féidir ceangal, d'fhéadfadh calafort a bheith in úsáid nó d'fhéadfadh " +"ceangal a bheith neamhbhailí." + +msgid "Nodes Connected" +msgstr "Nóid Ceangailte" + +msgid "Nodes Disconnected" +msgstr "Nóid Dícheangailte" + +msgid "Set Animation" +msgstr "Socraigh Beochan" + +msgid "Delete Node" +msgstr "Scrios Nód" + +msgid "Delete Node(s)" +msgstr "Scrios Nód(anna)" + +msgid "Toggle Filter On/Off" +msgstr "Scoránaigh an scagaire ar/as" + +msgid "Change Filter" +msgstr "Athraigh scagaire" + +msgid "Fill Selected Filter Children" +msgstr "Líon Páistí Scagaire Roghnaithe" + +msgid "Invert Filter Selection" +msgstr "Inbhéartaigh Roghnú Scagaire" + +msgid "Clear Filter Selection" +msgstr "Glan Roghnú Scagaire" + +msgid "" +"Animation player has no valid root node path, so unable to retrieve track " +"names." +msgstr "" +"Níl aon chosán nód fréimhe bailí ag an seinnteoir beochana, mar sin ní féidir " +"ainmneacha rianta a aisghabháil." + +msgid "Anim Clips" +msgstr "Gearrthóga Anim" + +msgid "Audio Clips" +msgstr "Gearrthóga Fuaime" + +msgid "Functions" +msgstr "Feidhmeanna" + +msgid "Inspect Filtered Tracks:" +msgstr "Scrúdaigh Rianta Scagtha:" + +msgid "Edit Filtered Tracks:" +msgstr "Cuir Rianta Scagtha in Eagar:" + +msgid "Node Renamed" +msgstr "Nód Athainmnithe" + +msgid "Add Node..." +msgstr "Cuir Nód Leis..." + +msgid "Enable Filtering" +msgstr "Cumasaigh scagadh" + +msgid "Fill Selected Children" +msgstr "Líon na Leanaí Roghnaithe" + +msgid "Invert" +msgstr "Inbhéartaigh" + +msgid "Library Name:" +msgstr "Ainm na Leabharlainne:" + +msgid "Animation name can't be empty." +msgstr "Ní féidir ainm beochana a bheith folamh." + +msgid "Animation name contains invalid characters: '/', ':', ',' or '['." +msgstr "Tá carachtair neamhbhailí in ainm beochana: '/', ':', ',' nó '['." + +msgid "Animation with the same name already exists." +msgstr "Tá beochan leis an ainm céanna ann cheana féin." + +msgid "Enter a library name." +msgstr "Iontráil ainm leabharlainne." + +msgid "Library name contains invalid characters: '/', ':', ',' or '['." +msgstr "" +"Tá carachtair neamhbhailí in ainm na leabharlainne: '/', ':', ',' nó '['." + +msgid "Library with the same name already exists." +msgstr "Tá leabharlann leis an ainm céanna ann cheana féin." + +msgid "Animation name is valid." +msgstr "Tá ainm beochana bailí." + +msgid "Global library will be created." +msgstr "Cruthófar leabharlann dhomhanda." + +msgid "Library name is valid." +msgstr "Tá ainm na leabharlainne bailí." + +msgid "Add Animation to Library: %s" +msgstr "Cuir Beochan leis an Leabharlann: %s" + +msgid "Add Animation Library: %s" +msgstr "Cuir Leabharlann Bheochana Leis: %s" + +msgid "Load Animation" +msgstr "Luchtaigh Beochan" + +msgid "" +"This animation library can't be saved because it does not belong to the " +"edited scene. Make it unique first." +msgstr "" +"Ní féidir an leabharlann beochana seo a shábháil toisc nach mbaineann sí leis " +"an radharc atheagraithe. Déan uathúil é ar dtús." + +msgid "" +"This animation library can't be saved because it was imported from another " +"file. Make it unique first." +msgstr "" +"Ní féidir an leabharlann beochana seo a shábháil toisc gur iompórtáladh í ó " +"chomhad eile. Déan uathúil é ar dtús." + +msgid "Save Library" +msgstr "Sábháil an Leabharlann" + +msgid "Make Animation Library Unique: %s" +msgstr "Déan Leabharlann Beochana Uathúil: %s" + +msgid "" +"This animation can't be saved because it does not belong to the edited scene. " +"Make it unique first." +msgstr "" +"Ní féidir an beochan seo a shábháil toisc nach mbaineann sé leis an radharc " +"atheagraithe. Déan uathúil é ar dtús." + +msgid "" +"This animation can't be saved because it was imported from another file. Make " +"it unique first." +msgstr "" +"Ní féidir an beochan seo a shábháil toisc gur iompórtáladh é ó chomhad eile. " +"Déan uathúil é ar dtús." + +msgid "Save Animation" +msgstr "Sábháil Beochan" + +msgid "Make Animation Unique: %s" +msgstr "Déan Beochan Uathúil: %s" + +msgid "Save Animation library to File: %s" +msgstr "Sábháil leabharlann beochana i gcomhad: %s" + +msgid "Save Animation to File: %s" +msgstr "Sábháil Beochan i gComhad: %s" + +msgid "Some AnimationLibrary files were invalid." +msgstr "Bhí roinnt comhad Beochana neamhbhailí." + +msgid "Some of the selected libraries were already added to the mixer." +msgstr "" +"Cuireadh cuid de na leabharlanna roghnaithe leis an meascthóir cheana féin." + +msgid "Add Animation Libraries" +msgstr "Cuir Leabharlanna Beochana Leis" + +msgid "Some Animation files were invalid." +msgstr "Bhí roinnt comhad beochana neamhbhailí." + +msgid "Some of the selected animations were already added to the library." +msgstr "" +"Cuireadh cuid de na beochana roghnaithe leis an leabharlann cheana féin." + +msgid "Load Animations into Library" +msgstr "Luchtaigh Beochan isteach sa Leabharlann" + +msgid "Load Animation into Library: %s" +msgstr "Luchtaigh Beochan sa Leabharlann: %s" + +msgid "Rename Animation Library: %s" +msgstr "Athainmnigh Leabharlann Beochana: %s" + +msgid "[Global]" +msgstr "[Domhanda]" + +msgid "Rename Animation: %s" +msgstr "Athainmnigh Beochan: %s" + +msgid "Animation Name:" +msgstr "Ainm Beochana:" + +msgid "No animation resource in clipboard!" +msgstr "Níl aon acmhainn beochana sa ghearrthaisce!" + +msgid "Pasted Animation" +msgstr "Beochan Ghreamaithe" + +msgid "Open in Inspector" +msgstr "Oscailte sa Chigire" + +msgid "Remove Animation Library: %s" +msgstr "Bain Leabharlann Beochana: %s" + +msgid "Remove Animation from Library: %s" +msgstr "Bain Beochan ón Leabharlann: %s" + +msgid "[built-in]" +msgstr "[tógtha isteach]" + +msgid "[foreign]" +msgstr "[eachtrach]" + +msgid "[imported]" +msgstr "[iompórtáilte]" + +msgid "Add animation to library." +msgstr "Cuir beochan leis an leabharlann." + +msgid "Load animation from file and add to library." +msgstr "Luchtaigh beochan ón gcomhad agus cuir leis an leabharlann." + +msgid "Paste animation to library from clipboard." +msgstr "Greamaigh beochan go dtí an leabharlann ón ngearrthaisce." + +msgid "Save animation library to resource on disk." +msgstr "Sábháil leabharlann beochana chun acmhainn a dhéanamh ar an diosca." + +msgid "Remove animation library." +msgstr "Bain leabharlann beochana." + +msgid "Copy animation to clipboard." +msgstr "Cóipeáil beochan go dtí an ghearrthaisce." + +msgid "Save animation to resource on disk." +msgstr "Sábháil beochan le hacmhainn ar an diosca." + +msgid "Remove animation from Library." +msgstr "Bain beochan ón Leabharlann." + +msgid "Edit Animation Libraries" +msgstr "Cuir Leabharlanna Beochana in Eagar" + +msgid "New Library" +msgstr "Leabharlann Nua" + +msgid "Create new empty animation library." +msgstr "Cruthaigh leabharlann bheochana fholamh nua." + +msgid "Load Library" +msgstr "Luchtaigh Leabharlann" + +msgid "Load animation library from disk." +msgstr "Luchtaigh leabharlann beochana ón diosca." + +msgid "Storage" +msgstr "Stóráil" + +msgid "Toggle Autoplay" +msgstr "Scoránaigh Uathsheinn" + +msgid "Create New Animation" +msgstr "Cruthaigh Beochan Nua" + +msgid "New Animation Name:" +msgstr "Ainm Nua Beochana:" + +msgid "Rename Animation" +msgstr "Athainmnigh Beochan" + +msgid "Change Animation Name:" +msgstr "Athraigh Ainm Beochana:" + +msgid "Delete Animation '%s'?" +msgstr "Scrios beochan '%s'?" + +msgid "Remove Animation" +msgstr "Bain Beochan" + +msgid "Invalid animation name!" +msgstr "Ainm neamhbhailí beochana!" + +msgid "Animation '%s' already exists!" +msgstr "Tá beochan '%s' ann cheana!" + +msgid "Duplicate Animation" +msgstr "Dúblach Beochan" + +msgid "Blend Next Changed" +msgstr "Cumasc An Chéad Athrú Eile" + +msgid "Change Blend Time" +msgstr "Athraigh Am Cumaisc" + +msgid "[Global] (create)" +msgstr "[Domhanda] (cruthaigh)" + +msgid "Duplicated Animation Name:" +msgstr "Ainm Beochana Dúblach:" + +msgid "Onion skinning requires a RESET animation." +msgstr "Éilíonn skinning oinniún beochan ATHSHOCRAIGH." + +msgid "Play selected animation backwards from current pos. (A)" +msgstr "Seinn beochan roghnaithe ar gcúl ó pos reatha. (A)" + +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "Seinn an beochan roghnaithe siar ón deireadh. (Shift + A)" + +msgid "Pause/stop animation playback. (S)" +msgstr "Cuir athsheinm beochana ar sos/stop. [Leasú 193]" + +msgid "Play selected animation from start. (Shift+D)" +msgstr "Seinn an beochan roghnaithe ón tús. (Shift + D)" + +msgid "Play selected animation from current pos. (D)" +msgstr "Seinn beochan roghnaithe ó pos. reatha (D)" + +msgid "Animation position (in seconds)." +msgstr "Suíomh beochana (i soicindí)." + +msgid "Scale animation playback globally for the node." +msgstr "Scálaigh athsheinm beochana ar fud an domhain don nód." + +msgid "Animation Tools" +msgstr "Uirlisí Beochana" + +msgid "Animation" +msgstr "Beochan" + +msgid "New..." +msgstr "Nua..." + +msgid "Manage Animations..." +msgstr "Bainistigh Beochan..." + +msgid "Edit Transitions..." +msgstr "Cuir Aistrithe in Eagar..." + +msgid "Display list of animations in player." +msgstr "Taispeáin liosta beochana san imreoir." + +msgid "Autoplay on Load" +msgstr "Uathsheinn ar Luchtaigh" + +msgid "Enable Onion Skinning" +msgstr "Cumasaigh Skinning Oinniún" + +msgid "Onion Skinning Options" +msgstr "Roghanna Skinning Oinniún" + +msgid "Directions" +msgstr "Treoracha" + +msgid "Past" +msgstr "San am a chuaigh thart" + +msgid "Future" +msgstr "An Todhchaí" + +msgid "Depth" +msgstr "Doimhneacht" + +msgid "1 step" +msgstr "1 chéim" + +msgid "2 steps" +msgstr "2 chéim" + +msgid "3 steps" +msgstr "3 chéim" + +msgid "Differences Only" +msgstr "Difríochtaí Amháin" + +msgid "Force White Modulate" +msgstr "Fórsa Bán Modulate" + +msgid "Include Gizmos (3D)" +msgstr "Cuir Gizmos (3D) san áireamh" + +msgid "Pin AnimationPlayer" +msgstr "Bioráin BeochanPlayer" + +msgid "Error!" +msgstr "Earráid!" + +msgid "Cross-Animation Blend Times" +msgstr "Amanna Cumaisc Tras-Beochana" + +msgid "Blend Times:" +msgstr "Amanna Cumaisc:" + +msgid "Next (Auto Queue):" +msgstr "Ar Aghaidh (Scuaine Uathoibríoch):" + +msgid "Toggle Animation Bottom Panel" +msgstr "Scoránaigh an Painéal Bun Beochana" + +msgid "Move Node" +msgstr "Bog Nód" + +msgid "Transition exists!" +msgstr "Tá an t-aistriú ann!" + +msgid "Play/Travel to %s" +msgstr "Seinn/Taisteal go %s" + +msgid "Edit %s" +msgstr "Cuir %s in eagar" + +msgid "Add Node and Transition" +msgstr "Cuir Nód agus Aistriú Leis" + +msgid "Add Transition" +msgstr "Cuir Aistriú Leis" + +msgid "Immediate" +msgstr "Láithreach bonn" + +msgid "Sync" +msgstr "Sioncronú" + +msgid "At End" +msgstr "Ag deireadh" + +msgid "Travel" +msgstr "Taisteal" + +msgid "No playback resource set at path: %s." +msgstr "Níl aon acmhainn athsheinm socraithe ag an gcosán: %s." + +msgid "Node Removed" +msgstr "Nód Bainte" + +msgid "Transition Removed" +msgstr "Aistriú Bainte" + +msgid "" +"Select and move nodes.\n" +"RMB: Add node at position clicked.\n" +"Shift+LMB+Drag: Connects the selected node with another node or creates a new " +"node if you select an area without nodes." +msgstr "" +"Roghnaigh agus bog nóid.\n" +"RMB: Cuir nód leis ag an suíomh cliceáil.\n" +"Shift + LMB + Tarraing: Ceangail an nód roghnaithe le nód eile nó cruthaíonn " +"sé nód nua má roghnaíonn tú limistéar gan nóid." + +msgid "Create new nodes." +msgstr "Cruthaigh nóid nua." + +msgid "Connect nodes." +msgstr "Ceangail nóid." + +msgid "Remove selected node or transition." +msgstr "Bain nód nó aistriú roghnaithe." + +msgid "Transition:" +msgstr "Aistriú:" + +msgid "New Transitions Should Auto Advance" +msgstr "Ba chóir aistrithe nua a chur chun cinn go huathoibríoch" + +msgid "Play Mode:" +msgstr "Mód Seinnte:" + +msgid "Delete Selected" +msgstr "Scrios roghnaithe" + +msgid "Delete All" +msgstr "Scrios Gach Rud" + +msgid "Root" +msgstr "Fréamh" + +msgid "AnimationTree" +msgstr "BeochanTreeName" + +msgid "Toggle AnimationTree Bottom Panel" +msgstr "Scoránaigh BeochanTree Bottom Panel" + +msgid "Author" +msgstr "Údar" + +msgid "Version:" +msgstr "Leagan:" + +msgid "Contents:" +msgstr "Ábhar:" + +msgid "View Files" +msgstr "Amharc ar Chomhaid" + +msgid "Download" +msgstr "Íoslódáil" + +msgid "Connection error, please try again." +msgstr "Earráid ceangail, bain triail eile as." + +msgid "Can't connect." +msgstr "Ní féidir ceangal." + +msgid "Can't connect to host:" +msgstr "Ní féidir ceangal leis an óstríomhaire:" + +msgid "No response from host:" +msgstr "Gan freagra ón óstach:" + +msgid "No response." +msgstr "Gan aon fhreagra." + +msgid "Can't resolve hostname:" +msgstr "Ní féidir óstainm a réiteach:" + +msgid "Can't resolve." +msgstr "Ní féidir é a réiteach." + +msgid "Request failed, return code:" +msgstr "Theip ar an iarratas, cód fillte:" + +msgid "Cannot save response to:" +msgstr "Ní féidir an freagra seo a shábháil:" + +msgid "Write error." +msgstr "Scríobh earráid." + +msgid "Request failed, too many redirects" +msgstr "Theip ar an iarratas, an iomarca atreoruithe" + +msgid "Redirect loop." +msgstr "Lúb a atreorú." + +msgid "Request failed, timeout" +msgstr "Theip ar an iarratas, teorainn ama" + +msgid "Timeout." +msgstr "Teorainn ama." + +msgid "Failed:" +msgstr "Theip ar:" + +msgid "Bad download hash, assuming file has been tampered with." +msgstr "" +"Bad download hash, ag glacadh leis go bhfuil an comhad curtha isteach air." + +msgid "Expected:" +msgstr "Bhíothas ag súil leis:" + +msgid "Got:" +msgstr "Fuair:" + +msgid "Failed SHA-256 hash check" +msgstr "Theip ar sheiceáil hash SHA-256" + +msgid "Asset Download Error:" +msgstr "Earráid Íosluchtaithe Sócmhainní:" + +msgid "Ready to install!" +msgstr "Réidh le suiteáil!" + +msgid "Downloading (%s / %s)..." +msgstr "Á íosluchtú (%s / %s)..." + +msgid "Downloading..." +msgstr "Á Íosluchtú..." + +msgid "Resolving..." +msgstr "Ag réiteach..." + +msgid "Error making request" +msgstr "Earráid agus iarratas á dhéanamh" + +msgid "Idle" +msgstr "Díomhaoin" + +msgid "Install..." +msgstr "Suiteáil..." + +msgid "Retry" +msgstr "Atriail" + +msgid "Download Error" +msgstr "Earráid Íosluchtaithe" + +msgid "Recently Updated" +msgstr "Nuashonraithe le Déanaí" + +msgid "Least Recently Updated" +msgstr "An ceann is lú a nuashonraíodh le déanaí" + +msgid "Name (A-Z)" +msgstr "Ainm (A-Z)" + +msgid "Name (Z-A)" +msgstr "Ainm (Z-A)" + +msgid "License (A-Z)" +msgstr "Ceadúnas (A-Z)" + +msgid "License (Z-A)" +msgstr "Ceadúnas (Z-A)" + +msgid "Featured" +msgstr "Réadmhaoin" + +msgid "Testing" +msgstr "Tástáil" + +msgid "Loading..." +msgstr "Á Luchtú..." + +msgctxt "Pagination" +msgid "First" +msgstr "An chéad" + +msgctxt "Pagination" +msgid "Previous" +msgstr "Roimhe Seo" + +msgctxt "Pagination" +msgid "Next" +msgstr "Ar Aghaidh" + +msgctxt "Pagination" +msgid "Last" +msgstr "An uair dheireanach" + +msgid "" +"The Asset Library requires an online connection and involves sending data " +"over the internet." +msgstr "" +"Teastaíonn nasc ar líne ón Leabharlann Sócmhainní agus is éard atá i gceist " +"léi ná sonraí a sheoladh ar an idirlíon." + +msgid "Go Online" +msgstr "Téigh Ar Líne" + +msgid "Failed to get repository configuration." +msgstr "Theip ar chumraíocht an stóir a fháil." + +msgid "All" +msgstr "Gach" + +msgid "No results for \"%s\" for support level(s): %s." +msgstr "Níl aon toradh ar \"%s\" le haghaidh leibhéal(anna) tacaíochta: %s." + +msgid "" +"No results compatible with %s %s for support level(s): %s.\n" +"Check the enabled support levels using the 'Support' button in the top-right " +"corner." +msgstr "" +"Níl aon torthaí comhoiriúnach le %s %s le haghaidh leibhéal(í) tacaíochta: " +"%s.\n" +"Seiceáil na leibhéil tacaíochta cumasaithe ag baint úsáide as an gcnaipe " +"'Tacaíocht' sa chúinne ag barr ar dheis." + +msgid "Search Templates, Projects, and Demos" +msgstr "Cuardaigh Teimpléid, Tionscadail, agus Demos" + +msgid "Search Assets (Excluding Templates, Projects, and Demos)" +msgstr "Sócmhainní Cuardaigh (Gan Teimpléid, Tionscadail agus Demos a áireamh)" + +msgid "Import..." +msgstr "Iompórtáil..." + +msgid "Plugins..." +msgstr "Breiseáin..." + +msgid "Sort:" +msgstr "Sórtáil:" + +msgid "Category:" +msgstr "Catagóir:" + +msgid "Site:" +msgstr "Suíomh:" + +msgid "Support" +msgstr "Tacaíocht" + +msgid "Assets ZIP File" +msgstr "Comhad ZIP Sócmhainní" + +msgid "Audio Preview Play/Pause" +msgstr "Seinn Réamhamhairc Fuaime / Sos" + +msgid "Bone Picker:" +msgstr "Roghnóir Cnámh:" + +msgid "Clear mappings in current group." +msgstr "Mapálacha soiléire sa ghrúpa reatha." + +msgid "Preview" +msgstr "Réamhamharc" + +msgid "Configure Snap" +msgstr "Cumraigh Snap" + +msgid "Grid Offset:" +msgstr "Fritháireamh Greille:" + +msgid "Grid Step:" +msgstr "Céim Greille:" + +msgid "Primary Line Every:" +msgstr "Bunlíne Gach:" + +msgid "Rotation Offset:" +msgstr "Fritháireamh rothlaithe:" + +msgid "Rotation Step:" +msgstr "Céim rothlaithe:" + +msgid "Scale Step:" +msgstr "Céim Scála:" + +msgid "" +"Children of a container get their position and size determined only by their " +"parent." +msgstr "" +"Faigheann leanaí coimeádáin a suíomh agus a méid arna chinneadh ag a " +"dtuismitheoir amháin." + +msgid "Move Node(s) to Position" +msgstr "Bog nód(anna) go dtí an suíomh" + +msgid "Move Vertical Guide" +msgstr "Bog Treoir Ingearach" + +msgid "Create Vertical Guide" +msgstr "Cruthaigh Treoir Ingearach" + +msgid "Remove Vertical Guide" +msgstr "Bain Treoir Ingearach" + +msgid "Move Horizontal Guide" +msgstr "Bog Treoir Chothrománach" + +msgid "Create Horizontal Guide" +msgstr "Cruthaigh Treoir Chothrománach" + +msgid "Remove Horizontal Guide" +msgstr "Bain Treoir Chothrománach" + +msgid "Create Horizontal and Vertical Guides" +msgstr "Cruthaigh Treoracha Cothrománacha agus Ingearacha" + +msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" +msgstr "Socraigh CanbhásItem \"%s\" Pivot Fritháireamh go (%d, %d)" + +msgid "Rotate %d CanvasItems" +msgstr "Rothlaigh %d CanbhásItems" + +msgid "Rotate CanvasItem \"%s\" to %d degrees" +msgstr "Rothlaigh CanbhásItem \"%s\" go %d céim" + +msgid "Move CanvasItem \"%s\" Anchor" +msgstr "Bog CanbhásItem \"%s\" Ancaire" + +msgid "Scale Node2D \"%s\" to (%s, %s)" +msgstr "Scálaigh nód2D \"%s\" go (%s, %s)" + +msgid "Resize Control \"%s\" to (%d, %d)" +msgstr "Athraigh méid an Rialtáin \"%s\" go (%d,%d)" + +msgid "Scale %d CanvasItems" +msgstr "Scálaigh %d CanbhásItems" + +msgid "Scale CanvasItem \"%s\" to (%s, %s)" +msgstr "Scálaigh CanbhásItem \"%s\" go (%s, %s)" + +msgid "Move %d CanvasItems" +msgstr "Bog %d CanbhásItems" + +msgid "Move CanvasItem \"%s\" to (%d, %d)" +msgstr "Bog CanbhásItem \"%s\" go (%d, %d)" + +msgid "Locked" +msgstr "Faoi Ghlas" + +msgid "Grouped" +msgstr "Grúpáilte" + +msgid "Add Node Here..." +msgstr "Cuir nód leis anseo..." + +msgid "Instantiate Scene Here..." +msgstr "Radharc meandarach anseo..." + +msgid "Paste Node(s) Here" +msgstr "Greamaigh Nód(anna) Anseo" + +msgid "Move Node(s) Here" +msgstr "Bog nód(anna) anseo" + +msgid "px" +msgstr "px" + +msgid "units" +msgstr "aonaid" + +msgid "Moving:" +msgstr "Ag bogadh:" + +msgid "Rotating:" +msgstr "Rothlach:" + +msgid "Scaling:" +msgstr "Scálú:" + +msgid "" +"Project Camera Override\n" +"Overrides the running project's camera with the editor viewport camera." +msgstr "" +"Sáraíocht an Cheamara Tionscadail\n" +"Sáraíonn sé ceamara an tionscadail reatha le ceamara viewport an eagarthóra." + +msgid "" +"Project Camera Override\n" +"No project instance running. Run the project from the editor to use this " +"feature." +msgstr "" +"Sáraíocht an Cheamara Tionscadail\n" +"Níl aon ásc tionscadail ag rith. Rith an tionscadal ón eagarthóir chun an " +"ghné seo a úsáid." + +msgid "Lock Selected" +msgstr "Glasáil roghnaithe" + +msgid "Unlock Selected" +msgstr "Díghlasáil roghnaithe" + +msgid "Group Selected" +msgstr "Grúpa Roghnaithe" + +msgid "Ungroup Selected" +msgstr "Díghrúpa Roghnaithe" + +msgid "Paste Pose" +msgstr "Greamaigh Údar" + +msgid "Clear Guides" +msgstr "Treoracha Soiléire" + +msgid "Create Custom Bone2D(s) from Node(s)" +msgstr "Cruthaigh Cnámh2D (í) Saincheaptha ó Nód (í)" + +msgid "Cancel Transformation" +msgstr "Cealaigh Claochlú" + +msgid "Zoom to 3.125%" +msgstr "Súmáil go 3.125%" + +msgid "Zoom to 6.25%" +msgstr "Súmáil go 6.25%" + +msgid "Zoom to 12.5%" +msgstr "Zoom go 12.5%" + +msgid "Zoom to 25%" +msgstr "Súmáil go 25%" + +msgid "Zoom to 50%" +msgstr "Súmáil go 50%" + +msgid "Zoom to 100%" +msgstr "Zoom go 100%" + +msgid "Zoom to 200%" +msgstr "Súmáil go 200%" + +msgid "Zoom to 400%" +msgstr "Súmáil go 400%" + +msgid "Zoom to 800%" +msgstr "Súmáil go 800%" + +msgid "Zoom to 1600%" +msgstr "Súmáil go 1600%" + +msgid "Center View" +msgstr "Amharc Lárnaigh" + +msgid "Select Mode" +msgstr "Roghnaigh Mód" + +msgid "Drag: Rotate selected node around pivot." +msgstr "Tarraing: Rothlaigh nód roghnaithe timpeall pivot." + +msgid "Alt+Drag: Move selected node." +msgstr "Alt+Drag: Bog nód roghnaithe." + +msgid "Alt+Drag: Scale selected node." +msgstr "Alt+Drag: Scálaigh nód roghnaithe." + +msgid "V: Set selected node's pivot position." +msgstr "V: Socraigh suíomh pivot nód roghnaithe." + +msgid "Alt+RMB: Show list of all nodes at position clicked, including locked." +msgstr "" +"Alt + RMB: Taispeáin liosta de na nóid go léir ag an suíomh cliceáil, lena n-" +"áirítear faoi ghlas." + +msgid "RMB: Add node at position clicked." +msgstr "RMB: Cuir nód leis ag an suíomh cliceáil." + +msgid "Move Mode" +msgstr "Bog Mód" + +msgid "Rotate Mode" +msgstr "Rothlaigh an Mód" + +msgid "Scale Mode" +msgstr "Mód Scála" + +msgid "Shift: Scale proportionally." +msgstr "Shift: Scála go comhréireach." + +msgid "Show list of selectable nodes at position clicked." +msgstr "Taispeáin liosta de nóid inroghnaithe ag an suíomh cliceáil." + +msgid "Click to change object's rotation pivot." +msgstr "Cliceáil chun pivot rothlaithe an réada a athrú." + +msgid "Shift: Set temporary rotation pivot." +msgstr "Shift: Socraigh pivot uainíochta sealadach." + +msgid "" +"Click this button while holding Shift to put the rotation pivot in the center " +"of the selected nodes." +msgstr "" +"Cliceáil an cnaipe seo agus Shift á choinneáil agat chun an mhaighdeog " +"rothlaithe a chur i lár na nóid roghnaithe." + +msgid "Pan Mode" +msgstr "Mód Pan" + +msgid "" +"You can also use Pan View shortcut (Space by default) to pan in any mode." +msgstr "" +"Is féidir leat aicearra Pan View (Spás de réir réamhshocraithe) a úsáid " +"freisin chun pan in aon mhodh." + +msgid "Ruler Mode" +msgstr "Mód Rialóra" + +msgid "Toggle smart snapping." +msgstr "Scoránaigh snapping cliste." + +msgid "Use Smart Snap" +msgstr "Bain úsáid as Snap Cliste" + +msgid "Toggle grid snapping." +msgstr "Scoránaigh léim na greille." + +msgid "Use Grid Snap" +msgstr "Úsáid Snap Greille" + +msgid "Snapping Options" +msgstr "Roghanna Snapping" + +msgid "Use Rotation Snap" +msgstr "Úsáid Léim rothlaithe" + +msgid "Use Scale Snap" +msgstr "Úsáid Léim Scála" + +msgid "Snap Relative" +msgstr "Gaol Léime" + +msgid "Use Pixel Snap" +msgstr "Úsáid Pixel Snap" + +msgid "Snap to Parent" +msgstr "Léim chuig tuismitheoir" + +msgid "Snap to Node Anchor" +msgstr "Léim go Ancaire Nód" + +msgid "Snap to Node Sides" +msgstr "Léim go Taobhanna Nód" + +msgid "Snap to Node Center" +msgstr "Léim go dtí an Lárionad Nód" + +msgid "Snap to Other Nodes" +msgstr "Léim go Nóid Eile" + +msgid "Snap to Guides" +msgstr "Léim chuig Treoracha" + +msgid "Smart Snapping" +msgstr "Snapping Cliste" + +msgid "Configure Snap..." +msgstr "Cumraigh Snap..." + +msgid "Lock selected node, preventing selection and movement." +msgstr "" +"Cuir nód roghnaithe faoi ghlas, rud a chuireann cosc ar roghnú agus ar " +"ghluaiseacht." + +msgid "Unlock selected node, allowing selection and movement." +msgstr "Díghlasáil nód roghnaithe, ag ligean roghnú agus gluaiseacht." + +msgid "" +"Groups the selected node with its children. This causes the parent to be " +"selected when any child node is clicked in 2D and 3D view." +msgstr "" +"Grúpáil an nód roghnaithe lena leanaí. Fágann sé seo go roghnófar an " +"tuismitheoir nuair a chliceáiltear nód linbh ar bith in amharc 2D agus 3D." + +msgid "" +"Ungroups the selected node from its children. Child nodes will be individual " +"items in 2D and 3D view." +msgstr "" +"Díghrúpáil an nód roghnaithe óna leanaí. Beidh nóid leanaí ina míreanna " +"aonair in amharc 2D agus 3D." + +msgid "Skeleton Options" +msgstr "Roghanna cnámharlaigh" + +msgid "Show Bones" +msgstr "Taispeáin Cnámha" + +msgid "Make Bone2D Node(s) from Node(s)" +msgstr "Déan Nód (Nód) Bone2D ó Nód (í)" + +msgid "View" +msgstr "Amharc" + +msgid "Show" +msgstr "Taispeáin" + +msgid "Show When Snapping" +msgstr "Taispeáin nuair a léimeann tú" + +msgid "Toggle Grid" +msgstr "Scoránaigh an Ghreille" + +msgid "Grid" +msgstr "Greille" + +msgid "Show Helpers" +msgstr "Taispeáin Cúntóirí" + +msgid "Show Rulers" +msgstr "Taispeáin Rialóirí" + +msgid "Show Guides" +msgstr "Taispeáin Treoracha" + +msgid "Show Origin" +msgstr "Taispeáin Bunús" + +msgid "Show Viewport" +msgstr "Taispeáin Amharcphort" + +msgid "Lock" +msgstr "Glasáil" + +msgid "Group" +msgstr "Grúpa" + +msgid "Transformation" +msgstr "Claochlú" + +msgid "Gizmos" +msgstr "GizmosName" + +msgid "Center Selection" +msgstr "Lárroghnúchán" + +msgid "Frame Selection" +msgstr "Roghnú Fráma" + +msgid "Preview Canvas Scale" +msgstr "Scála Canbhás Réamhamhairc" + +msgid "Project theme" +msgstr "Téama an tionscadail" + +msgid "Editor theme" +msgstr "Téama an eagarthóra" + +msgid "Default theme" +msgstr "Téama réamhshocraithe" + +msgid "Preview Theme" +msgstr "Téama Réamhamhairc" + +msgid "Translation mask for inserting keys." +msgstr "Masc aistriúcháin chun eochracha a chur isteach." + +msgid "Rotation mask for inserting keys." +msgstr "Masc rothlaithe chun eochracha a chur isteach." + +msgid "Scale mask for inserting keys." +msgstr "Scálaigh masc chun eochracha a chur isteach." + +msgid "Insert keys (based on mask)." +msgstr "Ionsáigh eochracha (bunaithe ar masc)." + +msgid "Insert Key" +msgstr "Ionsáigh Eochair" + +msgid "" +"Auto insert keys when objects are translated, rotated or scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" +"Cuir isteach eochracha go huathoibríoch nuair a dhéantar rudaí a aistriú, a " +"rothlú nó a scála (bunaithe ar masc).\n" +"Ní chuirtear eochracha ach le rianta atá ann cheana féin, ní chruthófar aon " +"rianta nua.\n" +"Ní mór eochracha a chur isteach de láimh den chéad uair." + +msgid "Auto Insert Key" +msgstr "Ionsáigh Eochair go hUathoibríoch" + +msgid "Animation Key and Pose Options" +msgstr "Eochair Beochana agus Roghanna Pose" + +msgid "Insert Key (Existing Tracks)" +msgstr "Ionsáigh Eochair (Rianta Reatha)" + +msgid "Copy Pose" +msgstr "Cóipeáil Údar" + +msgid "Clear Pose" +msgstr "Glan Údar" + +msgid "Multiply grid step by 2" +msgstr "Méadaigh céim na greille faoi 2" + +msgid "Divide grid step by 2" +msgstr "Roinn an ghreille céim ar 2" + +msgid "Adding %s..." +msgstr "%s á chur leis..." + +msgid "Error instantiating scene from %s." +msgstr "Earráid agus radharc á mheandar ó %s." + +msgid "Create Node" +msgstr "Cruthaigh Nód" + +msgid "Can't instantiate multiple nodes without root." +msgstr "Ní féidir nóid iolracha a mheandar gan fréamh." + +msgid "Circular dependency found at %s." +msgstr "Spleáchas ciorclach le fáil ag %s." + +msgid "Can't instantiate: %s" +msgstr "Ní féidir meandar a dhéanamh: %s" + +msgid "Creating inherited scene from: %s" +msgstr "Radharc oidhreachta á chruthú ó: %s" + +msgid "Instantiating: " +msgstr "Ag tosú: " + +msgid "Adding %s and %s..." +msgstr "%s agus %s á chur leis..." + +msgid "" +"Drag and drop to add as sibling of selected node (except when root is " +"selected)." +msgstr "" +"Tarraing agus scaoil le cur leis mar shiblíní nód roghnaithe (ach amháin " +"nuair a roghnaítear fréamh)." + +msgid "Hold Shift when dropping to add as child of selected node." +msgstr "" +"Coinnigh Shift nuair a thiteann tú le cur leis mar leanbh nód roghnaithe." + +msgid "Hold Alt when dropping to add as child of root node." +msgstr "Coinnigh Alt nuair a thiteann sé chun cur leis mar leanbh nód fréimhe." + +msgid "Hold Alt + Shift when dropping to add as different node type." +msgstr "" +"Coinnigh Alt + Shift nuair a thiteann tú le cur leis mar chineál nód difriúil." + +msgid "Change Default Type" +msgstr "Athraigh an Cineál Réamhshocraithe" + +msgid "" +"All selected CanvasItems are either invisible or locked in some way and can't " +"be transformed." +msgstr "" +"Tá gach Canbhás roghnaitheItems dofheicthe nó faoi ghlas ar bhealach éigin " +"agus ní féidir iad a chlaochlú." + +msgid "Set Target Position" +msgstr "Socraigh Suíomh na Sprice" + +msgid "Set Handle" +msgstr "Socraigh Hanla" + +msgid "This node doesn't have a control parent." +msgstr "Níl tuismitheoir rialaithe ag an nód seo." + +msgid "" +"Use the appropriate layout properties depending on where you are going to put " +"it." +msgstr "" +"Bain úsáid as na hairíonna leagan amach cuí ag brath ar an áit a bhfuil tú " +"chun é a chur." + +msgid "This node is a child of a container." +msgstr "Is leanbh de choimeádán é an nód seo." + +msgid "Use container properties for positioning." +msgstr "Bain úsáid as airíonna an choimeádáin le haghaidh suite." + +msgid "This node is a child of a regular control." +msgstr "Is leanbh faoi smacht rialta é an nód seo." + +msgid "Use anchors and the rectangle for positioning." +msgstr "Bain úsáid as ancairí agus an dronuilleog le haghaidh suite." + +msgid "Collapse positioning hint." +msgstr "Leid suite ag titim as a chéile." + +msgid "Expand positioning hint." +msgstr "Leathnaigh leid suite." + +msgid "Container Default" +msgstr "Réamhshocrú an Choimeádáin" + +msgid "Fill" +msgstr "Líon" + +msgid "Shrink Begin" +msgstr "Laghdaigh Tosaigh" + +msgid "Shrink Center" +msgstr "Laghdaigh an tIonad" + +msgid "Shrink End" +msgstr "Laghdaigh Deireadh" + +msgid "Custom" +msgstr "Saincheaptha" + +msgid "Expand" +msgstr "Leathnaigh" + +msgid "Top Left" +msgstr "Barr ar Chlé" + +msgid "Center Top" +msgstr "Barr an Ionaid" + +msgid "Top Right" +msgstr "Barr ar Dheis" + +msgid "Top Wide" +msgstr "Barr Leathan" + +msgid "Center Left" +msgstr "Lár ar Chlé" + +msgid "Center" +msgstr "Lár" + +msgid "Center Right" +msgstr "Lár ar Dheis" + +msgid "HCenter Wide" +msgstr "HCenter Leathan" + +msgid "Bottom Left" +msgstr "Bun ar Chlé" + +msgid "Center Bottom" +msgstr "Lár Bun" + +msgid "Bottom Right" +msgstr "Bun ar Dheis" + +msgid "Bottom Wide" +msgstr "Bun Leathan" + +msgid "Left Wide" +msgstr "Ar Chlé Leathan" + +msgid "VCenter Wide" +msgstr "VCenter Leathan" + +msgid "Right Wide" +msgstr "Ar Dheis Leathan" + +msgid "Full Rect" +msgstr "Rect Iomlán" + +msgid "" +"Enable to also set the Expand flag.\n" +"Disable to only set Shrink/Fill flags." +msgstr "" +"Cumasaigh a shocrú freisin ar an bhratach Leathnú.\n" +"Díchumasaigh gan ach bratacha Laghdaigh / Líon a shocrú." + +msgid "Some parents of the selected nodes do not support the Expand flag." +msgstr "" +"Ní thacaíonn roinnt tuismitheoirí de na nóid roghnaithe leis an mbratach " +"Leathnaithe." + +msgid "Change Anchors, Offsets, Grow Direction" +msgstr "Athraigh Ancairí, Fritháirimh, Treo Fáis" + +msgid "Change Anchors, Offsets (Keep Ratio)" +msgstr "Athraigh ancaire, Fritháirimh (Coinnigh Cóimheas)" + +msgid "Change Vertical Size Flags" +msgstr "Athraigh Bratacha Méid Ingearach" + +msgid "Change Horizontal Size Flags" +msgstr "Athraigh Bratacha Méid Cothrománach" + +msgid "Change Vertical Expand Flag" +msgstr "Athraigh Bratach Fairsingithe Ingearach" + +msgid "Change Horizontal Expand Flag" +msgstr "Athraigh Bratach Fairsingithe Cothrománach" + +msgid "Presets for the anchor and offset values of a Control node." +msgstr "Réamhshocruithe do luachanna ancaire agus fritháireamh nód Rialaithe." + +msgid "Anchor preset" +msgstr "Réamhshocrú ancaire" + +msgid "Set to Current Ratio" +msgstr "Socraigh go Cóimheas Reatha" + +msgid "Adjust anchors and offsets to match the current rect size." +msgstr "" +"Coigeartaigh ancairí agus fritháirimh chun an méid rect reatha a mheaitseáil." + +msgid "" +"When active, moving Control nodes changes their anchors instead of their " +"offsets." +msgstr "" +"Nuair a bhíonn siad gníomhach, athraíonn nóid Rialaithe ag gluaiseacht a n-" +"ancaire in ionad a bhfritháireamh." + +msgid "Sizing settings for children of a Container node." +msgstr "Socruithe sizing do leanaí nód Coimeádán." + +msgid "Horizontal alignment" +msgstr "Ailíniú cothrománach" + +msgid "Vertical alignment" +msgstr "Ailíniú ingearach" + +msgid "Convert to GPUParticles3D" +msgstr "Tiontaigh go GPUParticles3D" + +msgid "Load Emission Mask" +msgstr "Luchtaigh Masc Astaíochta" + +msgid "Convert to GPUParticles2D" +msgstr "Tiontaigh go GPUParticles2D" + +msgid "CPUParticles2D" +msgstr "CPUParticles2D" + +msgid "Emission Mask" +msgstr "Masc Astaíochta" + +msgid "Solid Pixels" +msgstr "Picteilíní Soladacha" + +msgid "Border Pixels" +msgstr "Picteilíní Teorann" + +msgid "Directed Border Pixels" +msgstr "Picteilíní Teorann Faoi Threoir" + +msgid "Centered" +msgstr "Láraithe" + +msgid "Capture Colors from Pixel" +msgstr "Dathanna a Ghabháil ó Picteilíní" + +msgid "Generating Visibility AABB (Waiting for Particle Simulation)" +msgstr "Infheictheacht a ghiniúint AABB (ag fanacht le hionsamhlú cáithníní)" + +msgid "Generating..." +msgstr "Á Ghiniúint..." + +msgid "Generate Visibility AABB" +msgstr "Gin Infheictheacht AABB" + +msgid "CPUParticles3D" +msgstr "CPUParticles3D" + +msgid "Generate AABB" +msgstr "Gin AABB" + +msgid "Create Emission Points From Node" +msgstr "Cruthaigh pointí astaíochta ó nód" + +msgid "Generation Time (sec):" +msgstr "Am Giniúna (soic):" + +msgid "Load Curve Preset" +msgstr "Luchtaigh Réamhshocrú Cuar" + +msgid "Add Curve Point" +msgstr "Cuir Pointe Cuar Leis" + +msgid "Remove Curve Point" +msgstr "Bain Pointe Cuar" + +msgid "Modify Curve Point" +msgstr "Mionathraigh Cuarphointe" + +msgid "Modify Curve Point's Tangents" +msgstr "Mionathraigh Tangents Pointe Cuar" + +msgid "Modify Curve Point's Left Tangent" +msgstr "Mionathraigh Tadhlaí Clé an Phointe Chuaraigh" + +msgid "Modify Curve Point's Right Tangent" +msgstr "Mionathraigh Tadhlaí Ceart an Phointe Chuaraigh" + +msgid "Toggle Linear Curve Point's Tangent" +msgstr "Scoránaigh Tangent Pointe Cuar Líneach" + +msgid "Hold Shift to edit tangents individually" +msgstr "Coinnigh Shift chun tangents a chur in eagar ina n-aonar" + +msgid "Ease In" +msgstr "Éascaigh Isteach" + +msgid "Ease Out" +msgstr "Éascaigh Amach" + +msgid "Smoothstep" +msgstr "SmoothstepName" + +msgid "Toggle Grid Snap" +msgstr "Scoránaigh Snap Greille" + +msgid "Debug with External Editor" +msgstr "Dífhabhtaigh le hEagarthóir Seachtrach" + +msgid "Toggle Debugger Bottom Panel" +msgstr "Scoránaigh Painéal Bun an Dífhabhtóra" + +msgid "Deploy with Remote Debug" +msgstr "Imscaradh le Dífhabhtú cianda" + +msgid "" +"When this option is enabled, using one-click deploy will make the executable " +"attempt to connect to this computer's IP so the running project can be " +"debugged.\n" +"This option is intended to be used for remote debugging (typically with a " +"mobile device).\n" +"You don't need to enable it to use the GDScript debugger locally." +msgstr "" +"Nuair a chumasaítear an rogha seo, trí úsáid aonchliceála a úsáid, déanfar an " +"iarracht inrite ceangal le IP an ríomhaire seo ionas gur féidir an tionscadal " +"reatha a dhífhabhtú.\n" +"Tá sé i gceist an rogha seo a úsáid le haghaidh dífhabhtaithe cianda (le " +"gléas soghluaiste de ghnáth).\n" +"Ní gá duit é a chumasú chun an dífhabhtóir GDScript a úsáid go háitiúil." + +msgid "Small Deploy with Network Filesystem" +msgstr "Imscaradh Beag le Córas Comhad Líonra" + +msgid "" +"When this option is enabled, using one-click deploy for Android will only " +"export an executable without the project data.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploying will use the USB cable for faster performance. This " +"option speeds up testing for projects with large assets." +msgstr "" +"Nuair a chumasaítear an rogha seo, ní dhéanfaidh úsáid aonchliceála le " +"haghaidh Android ach inrite a onnmhairiú gan sonraí an tionscadail.\n" +"Cuirfidh an t-eagarthóir thar an líonra an córas comhad ar fáil ón " +"tionscadal.\n" +"Ar Android, beidh imscaradh úsáid a bhaint as an cábla USB le haghaidh " +"feidhmíochta níos tapúla. Cuireann an rogha seo dlús le tástáil do " +"thionscadail a bhfuil sócmhainní móra acu." + +msgid "Visible Collision Shapes" +msgstr "Cruthanna Imbhuailtí Infheicthe" + +msgid "" +"When this option is enabled, collision shapes and raycast nodes (for 2D and " +"3D) will be visible in the running project." +msgstr "" +"Nuair a chumasaítear an rogha seo, beidh cruthanna imbhuailtí agus nóid " +"raycast (do 2D agus 3D) le feiceáil sa tionscadal reatha." + +msgid "Visible Paths" +msgstr "Cosáin Infheicthe" + +msgid "" +"When this option is enabled, curve resources used by path nodes will be " +"visible in the running project." +msgstr "" +"Nuair a chumasaítear an rogha seo, beidh acmhainní cuar a úsáideann nóid " +"chosáin le feiceáil sa tionscadal reatha." + +msgid "Visible Navigation" +msgstr "Nascleanúint Infheicthe" + +msgid "" +"When this option is enabled, navigation meshes, and polygons will be visible " +"in the running project." +msgstr "" +"Nuair a chumasaítear an rogha seo, beidh mogall nascleanúna, agus polagáin le " +"feiceáil sa tionscadal reatha." + +msgid "Visible Avoidance" +msgstr "Seachaint Infheicthe" + +msgid "" +"When this option is enabled, avoidance object shapes, radiuses, and " +"velocities will be visible in the running project." +msgstr "" +"Nuair a chumasaítear an rogha seo, beidh cruthanna réad seachanta, gathanna " +"agus velocities le feiceáil sa tionscadal reatha." + +msgid "Debug CanvasItem Redraws" +msgstr "Canbhás DífhabhtaitheItem Redraws" + +msgid "" +"When this option is enabled, redraw requests of 2D objects will become " +"visible (as a short flash) in the running project.\n" +"This is useful to troubleshoot low processor mode." +msgstr "" +"Nuair a chumasaítear an rogha seo, beidh iarratais athdhréachtaithe de réada " +"2D le feiceáil (mar splanc ghearr) sa tionscadal reatha.\n" +"Tá sé seo úsáideach chun mód próiseálaí íseal a fhabhtcheartú." + +msgid "Synchronize Scene Changes" +msgstr "Sioncrónaigh Athruithe Radhairc" + +msgid "" +"When this option is enabled, any changes made to the scene in the editor will " +"be replicated in the running project.\n" +"When used remotely on a device, this is more efficient when the network " +"filesystem option is enabled." +msgstr "" +"Nuair a chumasaítear an rogha seo, déanfar aon athruithe a dhéanfar ar an " +"radharc san eagarthóir a mhacasamhlú sa tionscadal reatha.\n" +"Nuair a úsáidtear go cianda é ar ghléas, tá sé seo níos éifeachtaí nuair a " +"chumasaítear rogha an chórais comhad líonra." + +msgid "Synchronize Script Changes" +msgstr "Sioncrónaigh Athruithe Scripte" + +msgid "" +"When this option is enabled, any script that is saved will be reloaded in the " +"running project.\n" +"When used remotely on a device, this is more efficient when the network " +"filesystem option is enabled." +msgstr "" +"Nuair a chumasaítear an rogha seo, déanfar aon script a shábháiltear a " +"athlódáil sa tionscadal reatha.\n" +"Nuair a úsáidtear go cianda é ar ghléas, tá sé seo níos éifeachtaí nuair a " +"chumasaítear rogha an chórais comhad líonra." + +msgid "Keep Debug Server Open" +msgstr "Coinnigh Freastalaí Dífhabhtaithe Oscailte" + +msgid "" +"When this option is enabled, the editor debug server will stay open and " +"listen for new sessions started outside of the editor itself." +msgstr "" +"Nuair a chumasaítear an rogha seo, fanfaidh freastalaí dífhabhtaithe an " +"eagarthóra ar oscailt agus éistfidh sé le seisiúin nua a thosófar lasmuigh " +"den eagarthóir féin." + +msgid "Customize Run Instances..." +msgstr "Saincheap Cásanna Rith..." + +msgid "" +"Name: %s\n" +"Path: %s\n" +"Main Script: %s\n" +"\n" +"%s" +msgstr "" +"Ainm: %s\n" +"Conair: %s\n" +"Príomhscript: %s\n" +"\n" +"%s" + +msgid "Edit Plugin" +msgstr "Cuir Breiseán in Eagar" + +msgid "Installed Plugins:" +msgstr "Breiseáin Suiteáilte:" + +msgid "Create New Plugin" +msgstr "Cruthaigh Breiseán Nua" + +msgid "Enabled" +msgstr "Cumasaithe" + +msgid "Version" +msgstr "Leagan" + +msgid "Size: %s" +msgstr "Méid: %s" + +msgid "Type: %s" +msgstr "Cineál: %s" + +msgid "Dimensions: %d × %d" +msgstr "Toisí: %d × %d" + +msgid "Length: %0dm %0ds" +msgstr "Fad: %0dm %0ds" + +msgid "Length: %0.1fs" +msgstr "Fad: %0.1fs" + +msgid "Length: %0.3fs" +msgstr "Fad: %0.3fs" + +msgid "Overrides (%d)" +msgstr "Sáraigh (%d)" + +msgctxt "Locale" +msgid "Add Script" +msgstr "Cuir Script Leis" + +msgid "Add Locale" +msgstr "Cuir Logchaighdeán Leis" + +msgid "Variation Coordinates (%d)" +msgstr "Comhordanáidí Athraithe (%d)" + +msgid "No supported features" +msgstr "Gan aon ghnéithe tacaithe" + +msgid "Features (%d of %d set)" +msgstr "Gnéithe (%d de %d socraithe)" + +msgid "Add Feature" +msgstr "Cuir Gné Leis" + +msgid "Stylistic Sets" +msgstr "Seiteanna Stíle" + +msgid "Character Variants" +msgstr "Malairtí Carachtair" + +msgid "Capitals" +msgstr "Príomhchathracha" + +msgid "Ligatures" +msgstr "Ligeachtaí" + +msgid "Alternates" +msgstr "Malartaigh" + +msgid "East Asian Language" +msgstr "Teanga na hÁise Thoir" + +msgid "East Asian Widths" +msgstr "Leithead na hÁise Thoir" + +msgid "Numeral Alignment" +msgstr "Ailíniú Uimhriúil" + +msgid " - Variation" +msgstr " - Athrú" + +msgid "Unable to preview font" +msgstr "Ní féidir réamhamharc a dhéanamh ar an gcló" + +msgid "Change AudioStreamPlayer3D Emission Angle" +msgstr "Athraigh Uillinn Astaíochta AudioStreamPlayer3D" + +msgid "Change Camera FOV" +msgstr "Athraigh Ceamara FOV" + +msgid "Change Camera Size" +msgstr "Athraigh Méid an Cheamara" + +msgid "Change Sphere Shape Radius" +msgstr "Athraigh Ga Cruth Sféar" + +msgid "Change Box Shape Size" +msgstr "Athraigh Méid an Chrutha Bosca" + +msgid "Change Capsule Shape Radius" +msgstr "Athraigh Ga Cruth Capsule" + +msgid "Change Capsule Shape Height" +msgstr "Athraigh Airde Cruth Capsule" + +msgid "Change Cylinder Shape Radius" +msgstr "Athraigh Ga Cruth Sorcóir" + +msgid "Change Cylinder Shape Height" +msgstr "Athraigh Airde Cruth Sorcóir" + +msgid "Change Separation Ray Shape Length" +msgstr "Athraigh Fad Cruth Ray Scaradh" + +msgid "Change Decal Size" +msgstr "Athraigh Méid Decal" + +msgid "Change FogVolume Size" +msgstr "Athraigh FogVolume Size" + +msgid "Change Radius" +msgstr "Athraigh Ga" + +msgid "Change Light Radius" +msgstr "Athraigh Ga Solais" + +msgid "Start Location" +msgstr "Tosaigh Suíomh" + +msgid "End Location" +msgstr "Suíomh Deiridh" + +msgid "Change Start Position" +msgstr "Athraigh an Suíomh Tosaigh" + +msgid "Change End Position" +msgstr "Athraigh an Suíomh Deiridh" + +msgid "Change Probe Size" +msgstr "Athraigh Méid an Tóireadóra" + +msgid "Change Probe Origin Offset" +msgstr "Athraigh Fritháireamh Tionscnaimh Probe" + +msgid "Change Notifier AABB" +msgstr "Athraigh Fógróir AABB" + +msgid "Convert to CPUParticles2D" +msgstr "Tiontaigh go CPUParticles2D" + +msgid "Generating Visibility Rect (Waiting for Particle Simulation)" +msgstr "Rect infheictheachta a ghiniúint (ag fanacht le hionsamhlú cáithníní)" + +msgid "Generate Visibility Rect" +msgstr "Gin Rect Infheictheachta" + +msgid "Can only set point into a ParticleProcessMaterial process material" +msgstr "" +"Ní féidir ach pointe a shocrú isteach in ábhar próisis ParticleProcessMaterial" + +msgid "GPUParticles2D" +msgstr "GPUParticles2D" + +msgid "The geometry's faces don't contain any area." +msgstr "Níl aon limistéar in aghaidheanna na geoiméadrachta." + +msgid "The geometry doesn't contain any faces." +msgstr "Níl aon aghaidheanna sa gheoiméadracht." + +msgid "\"%s\" doesn't inherit from Node3D." +msgstr "Ní fhaigheann \"%s\" oidhreacht ó Node3D." + +msgid "\"%s\" doesn't contain geometry." +msgstr "Níl geoiméadracht i \"%s\"." + +msgid "\"%s\" doesn't contain face geometry." +msgstr "Níl geoiméadracht aghaidhe i \"%s\"." + +msgid "Create Emitter" +msgstr "Cruthaigh Astaír" + +msgid "Emission Points:" +msgstr "Pointí Astaíochta:" + +msgid "Surface Points" +msgstr "Pointí Dromchla" + +msgid "Surface Points+Normal (Directed)" +msgstr "Pointí Dromchla + Gnáth (Dírithe)" + +msgid "Volume" +msgstr "Imleabhar" + +msgid "Emission Source:" +msgstr "Foinse Astaíochta:" + +msgid "A processor material of type 'ParticleProcessMaterial' is required." +msgstr "Tá ábhar próiseálaí den chineál 'ParticleProcessMaterial' ag teastáil." + +msgid "Convert to CPUParticles3D" +msgstr "Tiontaigh go CPUParticles3D" + +msgid "GPUParticles3D" +msgstr "GPUParticles3D" + +msgid "Low" +msgstr "Íseal" + +msgid "Moderate" +msgstr "Measartha" + +msgid "High" +msgstr "Ard" + +msgid "Subdivisions: %s" +msgstr "Foranna: %s" + +msgid "Cell size: %s" +msgstr "Méid na cille: %s" + +msgid "Video RAM size: %s MB (%s)" +msgstr "Méid RAM an fhíseáin: %s MB (%s)" + +msgid "Bake SDF" +msgstr "Bácáil SDF" + +msgid "" +"No faces detected during GPUParticlesCollisionSDF3D bake.\n" +"Check whether there are visible meshes matching the bake mask within its " +"extents." +msgstr "" +"Níor aimsíodh aon aghaidheanna le linn bácáil GPUParticlesCollisionSDF3D.\n" +"Seiceáil an bhfuil mogaill infheicthe ann a mheaitseálann an masc bácála " +"laistigh dá mhéideanna." + +msgid "Select path for SDF Texture" +msgstr "Roghnaigh conair le haghaidh Uigeacht SDF" + +msgid "Add Gradient Point" +msgstr "Cuir Pointe Grádáin Leis" + +msgid "Remove Gradient Point" +msgstr "Bain Pointe Grádáin" + +msgid "Move Gradient Point" +msgstr "Bog Pointe Grádáin" + +msgid "Recolor Gradient Point" +msgstr "Athdhathú Pointe Grádáin" + +msgid "Reverse Gradient" +msgstr "Grádán Droim ar Ais" + +msgid "Reverse/Mirror Gradient" +msgstr "Droim ar ais / Scáthán Grádán" + +msgid "Move GradientTexture2D Fill Point" +msgstr "Bog GrádánTexture2D Pointe Líonta" + +msgid "Swap GradientTexture2D Fill Points" +msgstr "Babhtáil GrádánTexture2D Pointí Líonta" + +msgid "Swap Gradient Fill Points" +msgstr "Babhtáil Grádán Pointí Líonta" + +msgid "Configure" +msgstr "Cumraigh" + +msgid "Create Occluder Polygon" +msgstr "Cruthaigh Polagán Occluder" + +msgid "" +"Can't determine a save path for lightmap images.\n" +"Save your scene and try again." +msgstr "" +"Ní féidir cosán sábhála a chinneadh le haghaidh íomhánna mapa solais.\n" +"Sábháil do radharc agus bain triail eile as." + +msgid "" +"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " +"Light' flag is on." +msgstr "" +"Níl mogaill le bácáil. Cinntigh go bhfuil cainéal UV2 iontu agus go bhfuil an " +"bhratach 'Bake Light' ar siúl." + +msgid "Failed creating lightmap images, make sure path is writable." +msgstr "" +"Theip ar íomhánna mapa solais a chruthú, déan cinnte go bhfuil an cosán " +"inscríofa." + +msgid "No editor scene root found." +msgstr "Níor aimsíodh fréamh radhairc eagarthóra ar bith." + +msgid "Lightmap data is not local to the scene." +msgstr "Níl sonraí Lightmap áitiúil don radharc." + +msgid "" +"Maximum texture size is too small for the lightmap images.\n" +"While this can be fixed by increasing the maximum texture size, it is " +"recommended you split the scene into more objects instead." +msgstr "" +"Tá uasmhéid uigeachta ró-bheag do na híomhánna mapa solais.\n" +"Cé gur féidir é seo a shocrú tríd an uasmhéid uigeachta a mhéadú, moltar duit " +"an radharc a roinnt i níos mó rudaí ina ionad." + +msgid "" +"Failed creating lightmap images. Make sure all meshes selected to bake have " +"`lightmap_size_hint` value set high enough, and `texel_scale` value of " +"LightmapGI is not too low." +msgstr "" +"Theip ar íomhánna mapa solais a chruthú. Cinntigh go bhfuil luach " +"'lightmap_size_hint' ard go leor ag gach mogall a roghnaítear chun bácáil, " +"agus nach bhfuil luach 'texel_scale' LightmapGI ró-íseal." + +msgid "" +"Failed fitting a lightmap image into an atlas. This should never happen and " +"should be reported." +msgstr "" +"Theip ar íomhá mapa solais a fheistiú in atlas. Níor chóir go dtarlódh sé seo " +"agus ba chóir é a thuairisciú." + +msgid "Bake Lightmaps" +msgstr "Mapaí Solais Bácála" + +msgid "LightMap Bake" +msgstr "Bácáil Mapa Solais" + +msgid "Select lightmap bake file:" +msgstr "Roghnaigh comhad bácála mapa solais:" + +msgid "Couldn't create a Trimesh collision shape." +msgstr "Níorbh fhéidir cruth imbhuailte Trimesh a chruthú." + +msgid "Couldn't create a single collision shape." +msgstr "Níorbh fhéidir cruth imbhuailte amháin a chruthú." + +msgid "Couldn't create a simplified collision shape." +msgstr "Níorbh fhéidir cruth imbhuailte simplithe a chruthú." + +msgid "Couldn't create any collision shapes." +msgstr "Níorbh fhéidir cruthanna imbhuailte ar bith a chruthú." + +msgid "Can't create a collision shape as sibling for the scene root." +msgstr "" +"Ní féidir cruth imbhuailte a chruthú mar shiblíní do fhréamh an radhairc." + +msgid "Mesh is empty!" +msgstr "Tá mogalra folamh!" + +msgid "Create Navigation Mesh" +msgstr "Cruthaigh mogalra nascleanúna" + +msgid "Create Debug Tangents" +msgstr "Cruthaigh Tangents Dífhabhtaithe" + +msgid "No mesh to unwrap." +msgstr "Gan mogalra a unwrap." + +msgid "" +"Mesh cannot unwrap UVs because it does not belong to the edited scene. Make " +"it unique first." +msgstr "" +"Ní féidir le mogalra UVanna a dhíscríobh toisc nach mbaineann sé leis an " +"radharc in eagar. Déan uathúil é ar dtús." + +msgid "" +"Mesh cannot unwrap UVs because it belongs to another resource which was " +"imported from another file type. Make it unique first." +msgstr "" +"Ní féidir le mogalra UVanna a dhíscríobh toisc go mbaineann sé le hacmhainn " +"eile a allmhairíodh ó chineál comhaid eile. Déan uathúil é ar dtús." + +msgid "" +"Mesh cannot unwrap UVs because it was imported from another file type. Make " +"it unique first." +msgstr "" +"Ní féidir le mogalra UVanna a dhíscríobh toisc gur allmhairíodh é ó chineál " +"comhaid eile. Déan uathúil é ar dtús." + +msgid "Unwrap UV2" +msgstr "Díphacáil UV2" + +msgid "Contained Mesh is not of type ArrayMesh." +msgstr "Níl mogalra atá de chineál ArrayMesh." + +msgid "Can't unwrap mesh with blend shapes." +msgstr "Ní féidir mogalra a unwrap le cruthanna cumaisc." + +msgid "Only triangles are supported for lightmap unwrap." +msgstr "Ní thacaítear ach le triantáin le haghaidh unwrap lightmap." + +msgid "Normals are required for lightmap unwrap." +msgstr "Tá gnáthaimh ag teastáil le haghaidh unwrap lightmap." + +msgid "UV Unwrap failed, mesh may not be manifold?" +msgstr "Theip ar Unwrap UV, b'fhéidir nach bhfuil mogalra manifold?" + +msgid "No mesh to debug." +msgstr "Gan mogalra le dífhabhtú." + +msgid "Mesh has no UV in layer %d." +msgstr "Níl aon UV i sraith %d ag an mogalra." + +msgid "MeshInstance3D lacks a Mesh." +msgstr "Níl Mogalra in easnamh ar MeshInstance3D." + +msgid "Mesh has no surface to create outlines from." +msgstr "Níl aon dromchla ag mogalra chun imlíne a chruthú as." + +msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES." +msgstr "Níl mogalra cineál primitive PRIMITIVE_TRIANGLES." + +msgid "Could not create outline." +msgstr "Níorbh fhéidir imlíne a chruthú." + +msgid "Create Outline" +msgstr "Cruthaigh Imlíne" + +msgid "Mesh" +msgstr "Mogalra" + +msgid "Create Collision Shape..." +msgstr "Cruthaigh Cruth Imbhuailtí..." + +msgid "Create Outline Mesh..." +msgstr "Cruthaigh Mogalra Imlíneach..." + +msgid "" +"Creates a static outline mesh. The outline mesh will have its normals flipped " +"automatically.\n" +"This can be used instead of the StandardMaterial Grow property when using " +"that property isn't possible." +msgstr "" +"Cruthaíonn mogalra imlíne statach. Beidh an mogalra imlíne a normals flipped " +"go huathoibríoch.\n" +"Is féidir é seo a úsáid in ionad na maoine StandardMaterial Grow nuair nach " +"féidir an mhaoin sin a úsáid." + +msgid "View UV1" +msgstr "Féach ar UV1" + +msgid "View UV2" +msgstr "Féach ar UV2" + +msgid "Unwrap UV2 for Lightmap/AO" +msgstr "Unwrap UV2 le haghaidh Lightmap / AO" + +msgid "Create Outline Mesh" +msgstr "Cruthaigh Mogalra Imlíneach" + +msgid "Outline Size:" +msgstr "Méid Imlíne:" + +msgid "Create Collision Shape" +msgstr "Cruthaigh Cruth Imbhuailtí" + +msgid "Collision Shape placement" +msgstr "Socrúchán Cruth Imbhuailtí" + +msgid "Sibling" +msgstr "Siblín" + +msgid "Creates collision shapes as Sibling." +msgstr "Cruthaíonn cruthanna imbhuailte mar Siblíní." + +msgid "Static Body Child" +msgstr "Leanbh Comhlacht Statach" + +msgid "Creates a StaticBody3D as child and assigns collision shapes to it." +msgstr "" +"Cruthaíonn StaticBody3D mar leanbh agus sannann cruthanna imbhuailte dó." + +msgid "Collision Shape Type" +msgstr "Cineál Cruth Imbhuailtí" + +msgid "Trimesh" +msgstr "Baile Átha Troim" + +msgid "" +"Creates a polygon-based collision shape.\n" +"This is the most accurate (but slowest) option for collision detection." +msgstr "" +"Cruthaíonn cruth imbhuailte polagán-bhunaithe.\n" +"Is é seo an rogha is cruinne (ach is moille) chun imbhualadh a bhrath." + +msgid "Single Convex" +msgstr "Dronnach Aonair" + +msgid "" +"Creates a single convex collision shape.\n" +"This is the fastest (but least accurate) option for collision detection." +msgstr "" +"Cruthaíonn cruth imbhuailte dronnach amháin.\n" +"Is é seo an rogha is tapúla (ach is lú cruinn) chun imbhualadh a bhrath." + +msgid "Simplified Convex" +msgstr "Dronnach Simplithe" + +msgid "" +"Creates a simplified convex collision shape.\n" +"This is similar to single collision shape, but can result in a simpler " +"geometry in some cases, at the cost of accuracy." +msgstr "" +"Cruthaíonn cruth imbhuailte dronnach simplithe.\n" +"Tá sé seo cosúil le cruth imbhuailte aonair, ach d'fhéadfadh geoiméadracht " +"níos simplí a bheith mar thoradh air i gcásanna áirithe, ar chostas cruinnis." + +msgid "Multiple Convex" +msgstr "Dronnach Il" + +msgid "" +"Creates a polygon-based collision shape.\n" +"This is a performance middle-ground between a single convex collision and a " +"polygon-based collision." +msgstr "" +"Cruthaíonn cruth imbhuailte polagán-bhunaithe.\n" +"Is é seo an fheidhmíocht lár-talamh idir imbhualadh dronnach amháin agus " +"imbhualadh polagán-bhunaithe." + +msgid "UV Channel Debug" +msgstr "Dífhabhtú Cainéal UV" + +msgid "Remove item %d?" +msgstr "Bain mír %d?" + +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" +"Nuashonrú ón radharc atá ann cheana?:\n" +"%s" + +msgid "MeshLibrary" +msgstr "MogalraLibrary" + +msgid "Add Item" +msgstr "Cuir Mír Leis" + +msgid "Remove Selected Item" +msgstr "Bain an Mhír Roghnaithe" + +msgid "Import from Scene (Ignore Transforms)" +msgstr "Iompórtáil ó Radharc (Déan neamhaird de Transforms)" + +msgid "Import from Scene (Apply Transforms)" +msgstr "Iompórtáil ón Radharc (Cuir Claochladáin i bhFeidhm)" + +msgid "Update from Scene" +msgstr "Nuashonrú ón Radharc" + +msgid "Apply without Transforms" +msgstr "Cuir iarratas isteach gan Transforms" + +msgid "Apply with Transforms" +msgstr "Cuir iarratas isteach le Transforms" + +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" +"Níl aon fhoinse mogalra sonraithe (agus gan aon MultiMesh leagtha síos i nód)." + +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" +"Níl aon fhoinse mogalra sonraithe (agus níl mogalra ar bith i MultiMesh)." + +msgid "Mesh source is invalid (invalid path)." +msgstr "Tá foinse an mhogaill neamhbhailí (cosán neamhbhailí)." + +msgid "Mesh source is invalid (not a MeshInstance3D)." +msgstr "Tá foinse mogalra neamhbhailí (ní MeshInstance3D)." + +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "Tá foinse mogalra neamhbhailí (níl aon acmhainn Mogalra ann)." + +msgid "No surface source specified." +msgstr "Níor sonraíodh aon fhoinse dromchla." + +msgid "Surface source is invalid (invalid path)." +msgstr "Tá foinse dromchla neamhbhailí (cosán neamhbhailí)." + +msgid "Surface source is invalid (no geometry)." +msgstr "Tá foinse dromchla neamhbhailí (gan geoiméadracht)." + +msgid "Surface source is invalid (no faces)." +msgstr "Tá foinse dromchla neamhbhailí (gan aon aghaidheanna)." + +msgid "Select a Source Mesh:" +msgstr "Roghnaigh Mogalra Foinseach:" + +msgid "Select a Target Surface:" +msgstr "Roghnaigh spriocdhromchla:" + +msgid "Populate Surface" +msgstr "Dromchla Daonra" + +msgid "Populate MultiMesh" +msgstr "Daonra MultiMesh" + +msgid "Target Surface:" +msgstr "Sprioc Dromchla:" + +msgid "Source Mesh:" +msgstr "Mogalra Foinse:" + +msgid "X-Axis" +msgstr "X- Ais" + +msgid "Y-Axis" +msgstr "Y- Ais" + +msgid "Z-Axis" +msgstr "Z- Ais" + +msgid "Mesh Up Axis:" +msgstr "Mogalra Suas Ais:" + +msgid "Random Rotation:" +msgstr "Rothlú Randamach:" + +msgid "Random Tilt:" +msgstr "Tilt Randamach:" + +msgid "Random Scale:" +msgstr "Scála Randamach:" + +msgid "Amount:" +msgstr "Méid:" + +msgid "Populate" +msgstr "Daonra" + +msgid "Set start_position" +msgstr "Socraigh start_position" + +msgid "Set end_position" +msgstr "Socraigh end_position" + +msgid "Set NavigationObstacle3D Vertices" +msgstr "Socraigh NascleanúintObstacle3D Vertices" + +msgid "Edit Vertices" +msgstr "Cuir Vertices in Eagar" + +msgid "Edit Poly" +msgstr "Cuir Polai in Eagar" + +msgid "Edit Poly (Remove Point)" +msgstr "Cuir Polai in Eagar (Bain Pointe)" + +msgid "Create Navigation Polygon" +msgstr "Cruthaigh Polagán Nascleanúna" + +msgid "Bake NavigationPolygon" +msgstr "Bácáil NascleanúintPolygon" + +msgid "" +"Bakes the NavigationPolygon by first parsing the scene for source geometry " +"and then creating the navigation polygon vertices and polygons." +msgstr "" +"Bácáil an NavigationPolygon tríd an radharc a pharsáil ar dtús le haghaidh " +"geoiméadracht foinse agus ansin na vertices polagán nascleanúna agus polagáin " +"a chruthú." + +msgid "Clear NavigationPolygon" +msgstr "Nascleanúint ShoiléirPolygon" + +msgid "Clears the internal NavigationPolygon outlines, vertices and polygons." +msgstr "" +"Clears an nascleanúint inmheánachPolygon imlíne, vertices agus polagáin." + +msgid "" +"A NavigationPolygon resource must be set or created for this node to work." +msgstr "" +"Ní mór acmhainn NavigationPolygon a shocrú nó a chruthú chun go n-oibreoidh " +"an nód seo." + +msgid "Unnamed Gizmo" +msgstr "Gizmo gan ainm" + +msgid "Transform Aborted." +msgstr "Trasfhoirmigh Tobscortha." + +msgid "Orthogonal" +msgstr "Ortagánach" + +msgid "Perspective" +msgstr "Dearcadh" + +msgid "Top Orthogonal" +msgstr "Orthogonal Barr" + +msgid "Top Perspective" +msgstr "Peirspictíocht Barr" + +msgid "Bottom Orthogonal" +msgstr "Bun Orthogonal" + +msgid "Bottom Perspective" +msgstr "Peirspictíocht Bun" + +msgid "Left Orthogonal" +msgstr "Orthogonal Ar Chlé" + +msgid "Left Perspective" +msgstr "Dearcadh Ar Chlé" + +msgid "Right Orthogonal" +msgstr "Orthogonal Ceart" + +msgid "Right Perspective" +msgstr "Dearcadh Ceart" + +msgid "Front Orthogonal" +msgstr "Tosaigh Orthogonal" + +msgid "Front Perspective" +msgstr "Peirspictíocht Tosaigh" + +msgid "Rear Orthogonal" +msgstr "Orthogonal Cúil" + +msgid "Rear Perspective" +msgstr "Peirspictíocht Chúil" + +msgid " [auto]" +msgstr " [uathoibríoch]" + +msgid "X-Axis Transform." +msgstr "Trasfhoirmigh X-Ais." + +msgid "Y-Axis Transform." +msgstr "Claochlú Y-Ais." + +msgid "Z-Axis Transform." +msgstr "Z-ais Trasfhoirmigh." + +msgid "View Plane Transform." +msgstr "Féach ar Eitleán Trasfhoirmithe." + +msgid "Keying is disabled (no key inserted)." +msgstr "Tá an eochair díchumasaithe (níor cuireadh eochair isteach)." + +msgid "Animation Key Inserted." +msgstr "Eochair bheochana curtha isteach." + +msgid "X: %s\n" +msgstr "X: %s\n" + +msgid "Y: %s\n" +msgstr "Y: %s\n" + +msgid "Z: %s\n" +msgstr "Z: %s\n" + +msgid "Size: %s (%.1fMP)\n" +msgstr "Méid: %s (%.1fMP)\n" + +msgid "Objects: %d\n" +msgstr "Réada: %d\n" + +msgid "Primitives: %d\n" +msgstr "Príomhghnéithe: %d\n" + +msgid "Draw Calls: %d" +msgstr "Tarraing Glaonna: %d" + +msgid "CPU Time: %s ms" +msgstr "Am LAP: %s ms" + +msgid "GPU Time: %s ms" +msgstr "Am GPU: %s ms" + +msgid "FPS: %d" +msgstr "FPS: %d" + +msgid "Instantiating:" +msgstr "Ag tosú:" + +msgid "Top View." +msgstr "Amharc Barr." + +msgid "Bottom View." +msgstr "Amharc Bun." + +msgid "Left View." +msgstr "Amharc Ar Chlé." + +msgid "Right View." +msgstr "Amharc Ceart." + +msgid "Front View." +msgstr "Amharc Tosaigh." + +msgid "Rear View." +msgstr "Amharc Cúil." + +msgid "Align Transform with View" +msgstr "Ailínigh Trasfhoirmigh le hAmharc" + +msgid "Align Rotation with View" +msgstr "Ailínigh Rothlú leis an Amharc" + +msgid "Set Surface %d Override Material" +msgstr "Socraigh Ábhar Sáraithe Dromchla %d" + +msgid "Set Material Override" +msgstr "Socraigh Sáraíocht Ábhair" + +msgid "Can't instantiate: %s." +msgstr "Ní féidir meandar: %s." + +msgid "Circular dependency found at %s" +msgstr "Spleáchas ciorclach aimsithe ag %s" + +msgid "None" +msgstr "Ceann ar bith" + +msgid "Rotate" +msgstr "Rothlaigh" + +msgid "Translate" +msgstr "Aistrigh" + +msgid "Translating:" +msgstr "Ag aistriú:" + +msgid "Rotating %s degrees." +msgstr "Ag rothlú %s céim." + +msgid "Translating %s." +msgstr "%s á aistriú." + +msgid "Rotating %f degrees." +msgstr "%f céim á rothlú." + +msgid "Scaling %s." +msgstr "%s á scálú." + +msgid "Auto Orthogonal Enabled" +msgstr "Cumasaithe go hUathoibríoch Orthogonal" + +msgid "Lock View Rotation" +msgstr "Cuir rothlú an amhairc faoi ghlas" + +msgid "Display Normal" +msgstr "Taispeáin Gnáth" + +msgid "Display Wireframe" +msgstr "Taispeáin Sreangfhráma" + +msgid "Display Overdraw" +msgstr "Rótharraingt Taispeána" + +msgid "Display Lighting" +msgstr "Taispeáin Soilsiú" + +msgid "Display Unshaded" +msgstr "Taispeáin Gan Scáthú" + +msgid "Directional Shadow Splits" +msgstr "Scoilteanna Scáth Directional" + +msgid "Normal Buffer" +msgstr "Gnáthmhaolán" + +msgid "Shadow Atlas" +msgstr "Atlas Scáth" + +msgid "Directional Shadow Map" +msgstr "Scáthmhapa Treorach" + +msgid "Decal Atlas" +msgstr "Decail Atlas" + +msgid "VoxelGI Lighting" +msgstr "Soilsiú VoxelGI" + +msgid "VoxelGI Albedo" +msgstr "VoxelGI Albedo" + +msgid "VoxelGI Emission" +msgstr "Astaíocht VoxelGI" + +msgid "SDFGI Cascades" +msgstr "Cascáidí SDFGI" + +msgid "SDFGI Probes" +msgstr "Tástálacha SDFGI" + +msgid "Scene Luminance" +msgstr "Luminance Radharc" + +msgid "SSAO" +msgstr "SSAOName" + +msgid "SSIL" +msgstr "SSIL" + +msgid "VoxelGI/SDFGI Buffer" +msgstr "Maolán VoxelGI/SDFGI" + +msgid "Disable Mesh LOD" +msgstr "Díchumasaigh LOD mogalra" + +msgid "OmniLight3D Cluster" +msgstr "Braisle OmniLight3D" + +msgid "SpotLight3D Cluster" +msgstr "Braisle SpotLight3D" + +msgid "Decal Cluster" +msgstr "Braisle Decal" + +msgid "ReflectionProbe Cluster" +msgstr "Braisle MhachnamhProbe" + +msgid "Occlusion Culling Buffer" +msgstr "Maolán Cuilithe Occlusion" + +msgid "Motion Vectors" +msgstr "Veicteoirí Gluaisne" + +msgid "Internal Buffer" +msgstr "Maolán Inmheánach" + +msgid "Display Advanced..." +msgstr "Taispeáin Casta..." + +msgid "View Environment" +msgstr "Féach ar an gComhshaol" + +msgid "View Gizmos" +msgstr "Amharc ar Gizmos" + +msgid "View Grid" +msgstr "Amharc ar an nGreille" + +msgid "View Information" +msgstr "Féach ar Fhaisnéis" + +msgid "View Frame Time" +msgstr "Amharc ar Am an Fhráma" + +msgid "Half Resolution" +msgstr "Leathrún" + +msgid "Audio Listener" +msgstr "Éisteoir Fuaime" + +msgid "Enable Doppler" +msgstr "Cumasaigh Doppler" + +msgid "Cinematic Preview" +msgstr "Réamhamharc Cineamatach" + +msgid "Not available when using the OpenGL renderer." +msgstr "Níl sé ar fáil agus an rindreálaí OpenGL á úsáid." + +msgid "Freelook Left" +msgstr "Freelook Ar Chlé" + +msgid "Freelook Right" +msgstr "Freelook Ceart" + +msgid "Freelook Forward" +msgstr "Freelook Ar Aghaidh" + +msgid "Freelook Backwards" +msgstr "Freelook Ar gcúl" + +msgid "Freelook Up" +msgstr "Freelook Suas" + +msgid "Freelook Down" +msgstr "Freelook An Dúin" + +msgid "Freelook Speed Modifier" +msgstr "Mionathraitheoir Luas Freelook" + +msgid "Freelook Slow Modifier" +msgstr "Mionathraitheoir Mall Freelook" + +msgid "Lock Transformation to X axis" +msgstr "Cuir claochlú faoi ghlas go hais X" + +msgid "Lock Transformation to Y axis" +msgstr "Glasáil Claochlú go hais Y" + +msgid "Lock Transformation to Z axis" +msgstr "Glasáil Claochlú go Z ais" + +msgid "Lock Transformation to YZ plane" +msgstr "Glasáil Claochlú go eitleán YZ" + +msgid "Lock Transformation to XZ plane" +msgstr "Glasáil Claochlú go eitleán XZ" + +msgid "Lock Transformation to XY plane" +msgstr "Glasáil Claochlú go eitleán XY" + +msgid "Begin Translate Transformation" +msgstr "Tosaigh Aistrigh Claochlú" + +msgid "Begin Rotate Transformation" +msgstr "Tosaigh Rothlaigh Claochlú" + +msgid "Begin Scale Transformation" +msgstr "Tosaigh Claochlú Scála" + +msgid "Toggle Camera Preview" +msgstr "Scoránaigh Réamhamharc an Cheamara" + +msgid "View Rotation Locked" +msgstr "Amharc ar rothlú faoi ghlas" + +msgid "" +"To zoom further, change the camera's clipping planes (View -> Settings...)" +msgstr "" +"Chun zúmáil a thuilleadh, athraigh eitleáin ghearrtha an cheamara (Féach -> " +"Socruithe...)" + +msgid "Overriding material..." +msgstr "Ábhar sáraitheach..." + +msgid "" +"Drag and drop to override the material of any geometry node.\n" +"Hold %s when dropping to override a specific surface." +msgstr "" +"Tarraing agus scaoil chun ábhar aon nód geoiméadrachta a shárú.\n" +"Coinnigh %s agus tú ag titim chun dromchla ar leith a shárú." + +msgid "XForm Dialog" +msgstr "Dialóg XForm" + +msgid "" +"Click to toggle between visibility states.\n" +"\n" +"Open eye: Gizmo is visible.\n" +"Closed eye: Gizmo is hidden.\n" +"Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")." +msgstr "" +"Cliceáil chun scoránú idir stáit infheictheachta.\n" +"\n" +"Súil oscailte: Tá Gizmo le feiceáil.\n" +"Súil dúnta: Tá Gizmo i bhfolach.\n" +"Súil leath-oscailte: Tá Gizmo le feiceáil freisin trí dhromchlaí teimhneacha " +"(\"x-gha\")." + +msgid "Snap Nodes to Floor" +msgstr "Nóid Léim go hUrlár" + +msgid "Couldn't find a solid floor to snap the selection to." +msgstr "Níorbh fhéidir urlár soladach a aimsiú chun an rogha a léim." + +msgid "Add Preview Sun to Scene" +msgstr "Cuir Réamhamharc na Gréine leis an Radharc" + +msgid "Add Preview Environment to Scene" +msgstr "Cuir Timpeallacht Réamhamhairc leis an Radharc" + +msgid "" +"Scene contains\n" +"DirectionalLight3D.\n" +"Preview disabled." +msgstr "" +"Radharc ina bhfuil\n" +"DirectionalLight3D.\n" +"Díchumasaíodh réamhamharc." + +msgid "Preview disabled." +msgstr "Díchumasaíodh réamhamharc." + +msgid "" +"Scene contains\n" +"WorldEnvironment.\n" +"Preview disabled." +msgstr "" +"Radharc ina bhfuil\n" +"WorldEnvironment.\n" +"Díchumasaíodh réamhamharc." + +msgid "Drag: Use snap." +msgstr "Tarraing: Bain úsáid as snap." + +msgid "" +"Groups the selected node with its children. This selects the parent when any " +"child node is clicked in 2D and 3D view." +msgstr "" +"Grúpáil an nód roghnaithe lena leanaí. Roghnaíonn sé seo an tuismitheoir " +"nuair a chliceáiltear nód linbh ar bith in amharc 2D agus 3D." + +msgid "Use Local Space" +msgstr "Úsáid Spás Logánta" + +msgid "Use Snap" +msgstr "Úsáid Snap" + +msgid "" +"Toggle preview sunlight.\n" +"If a DirectionalLight3D node is added to the scene, preview sunlight is " +"disabled." +msgstr "" +"Scoránaigh solas na gréine réamhamhairc.\n" +"Má chuirtear nód DirectionalLight3D leis an radharc, díchumasaítear solas na " +"gréine réamhamhairc." + +msgid "" +"Toggle preview environment.\n" +"If a WorldEnvironment node is added to the scene, preview environment is " +"disabled." +msgstr "" +"Scoránaigh an timpeallacht réamhamhairc.\n" +"Má chuirtear nód WorldEnvironment leis an radharc, díchumasaítear " +"timpeallacht réamhamhairc." + +msgid "Edit Sun and Environment settings." +msgstr "Cuir socruithe Gréine agus Timpeallachta in eagar." + +msgid "Bottom View" +msgstr "Amharc Bun" + +msgid "Top View" +msgstr "Amharc Barr" + +msgid "Rear View" +msgstr "Amharc Cúil" + +msgid "Front View" +msgstr "Amharc Tosaigh" + +msgid "Left View" +msgstr "Amharc Ar Chlé" + +msgid "Right View" +msgstr "Amharc Ar Dheis" + +msgid "Orbit View Down" +msgstr "Amharc Fithise Síos" + +msgid "Orbit View Left" +msgstr "Amharc Fithise Ar Chlé" + +msgid "Orbit View Right" +msgstr "Amharc Fithise ar dheis" + +msgid "Orbit View Up" +msgstr "Amharc Fithise Suas" + +msgid "Orbit View 180" +msgstr "Amharc Fithise 180" + +msgid "Switch Perspective/Orthogonal View" +msgstr "Athraigh Peirspictíocht / Amharc Orthogonal" + +msgid "Insert Animation Key" +msgstr "Ionsáigh Eochair Bheochana" + +msgid "Focus Origin" +msgstr "Bunús Fócais" + +msgid "Focus Selection" +msgstr "Roghnú Fócais" + +msgid "Toggle Freelook" +msgstr "Scoránaigh Freelook" + +msgid "Decrease Field of View" +msgstr "Laghdaigh Réimse an Radhairc" + +msgid "Increase Field of View" +msgstr "Réimse Radhairc a Mhéadú" + +msgid "Reset Field of View to Default" +msgstr "Athshocraigh Réimse an Amhairc go Réamhshocrú" + +msgid "Transform" +msgstr "Trasfhoirmigh" + +msgid "Snap Object to Floor" +msgstr "Léim Réad go hUrlár" + +msgid "Transform Dialog..." +msgstr "Trasfhoirmigh Dialóg..." + +msgid "1 Viewport" +msgstr "1 Amharcphort" + +msgid "2 Viewports" +msgstr "2 Amharc" + +msgid "2 Viewports (Alt)" +msgstr "2 Amharc (Alt)" + +msgid "3 Viewports" +msgstr "3 Amharc" + +msgid "3 Viewports (Alt)" +msgstr "3 Amharc (Alt)" + +msgid "4 Viewports" +msgstr "4 Amharc" + +msgid "View Origin" +msgstr "Amharc ar Bhunús" + +msgid "Settings..." +msgstr "Socruithe..." + +msgid "Snap Settings" +msgstr "Socruithe Léime" + +msgid "Translate Snap:" +msgstr "Aistrigh Snap:" + +msgid "Rotate Snap (deg.):" +msgstr "Rothlaigh Snap (deg.):" + +msgid "Scale Snap (%):" +msgstr "Scálaigh Snap (%):" + +msgid "Viewport Settings" +msgstr "Socruithe an Phoirt Amhairc" + +msgid "" +"FOV is defined as a vertical value, as the editor camera always uses the Keep " +"Height aspect mode." +msgstr "" +"Sainmhínítear FOV mar luach ingearach, mar go n-úsáideann ceamara an " +"eagarthóra an modh gné Keep Height i gcónaí." + +msgid "Perspective VFOV (deg.):" +msgstr "Peirspictíocht VFOV (deg.):" + +msgid "View Z-Near:" +msgstr "Féach Z-Near:" + +msgid "View Z-Far:" +msgstr "Féach Z-Far:" + +msgid "Transform Change" +msgstr "Trasfhoirmigh Athrú" + +msgid "Translate:" +msgstr "Aistrigh:" + +msgid "Rotate (deg.):" +msgstr "Rothlaigh (deg.):" + +msgid "Scale (ratio):" +msgstr "Scála (cóimheas):" + +msgid "Transform Type" +msgstr "Trasfhoirmigh Cineál" + +msgid "Pre" +msgstr "Roimh" + +msgid "Post" +msgstr "Post" + +msgid "Preview Sun" +msgstr "Réamhamharc ar an nGrian" + +msgid "Sun Direction" +msgstr "Treo na Gréine" + +msgid "Angular Altitude" +msgstr "Airde Uilleach" + +msgid "Azimuth" +msgstr "AzimuthName" + +msgid "Sun Color" +msgstr "Dath na Gréine" + +msgid "Sun Energy" +msgstr "Fuinneamh na Gréine" + +msgid "Shadow Max Distance" +msgstr "Scáth Max Fad" + +msgid "Add Sun to Scene" +msgstr "Cuir An Ghrian leis an Radharc" + +msgid "" +"Adds a DirectionalLight3D node matching the preview sun settings to the " +"current scene.\n" +"Hold Shift while clicking to also add the preview environment to the current " +"scene." +msgstr "" +"Cuir nód DirectionalLight3D leis a mheaitseálann na socruithe gréine " +"réamhamhairc leis an radharc reatha.\n" +"Coinnigh Shift agus cliceáil chun an timpeallacht réamhamhairc a chur leis an " +"radharc reatha." + +msgid "Preview Environment" +msgstr "Timpeallacht Réamhamhairc" + +msgid "Sky Color" +msgstr "Dath na Spéire" + +msgid "Ground Color" +msgstr "Dath na Talún" + +msgid "Sky Energy" +msgstr "Fuinneamh Spéire" + +msgid "AO" +msgstr "CHUIG" + +msgid "Glow" +msgstr "Luisne" + +msgid "Tonemap" +msgstr "Mapa Ton" + +msgid "GI" +msgstr "GI" + +msgid "Post Process" +msgstr "Iarphróiseas" + +msgid "Add Environment to Scene" +msgstr "Cuir Timpeallacht leis an Radharc" + +msgid "" +"Adds a WorldEnvironment node matching the preview environment settings to the " +"current scene.\n" +"Hold Shift while clicking to also add the preview sun to the current scene." +msgstr "" +"Cuireann nód WorldEnvironment leis a mheaitseálann na socruithe timpeallachta " +"réamhamhairc leis an radharc reatha.\n" +"Coinnigh Shift agus cliceáil chun an ghrian réamhamhairc a chur leis an " +"radharc reatha." + +msgid "" +"Can't determine a save path for the occluder.\n" +"Save your scene and try again." +msgstr "" +"Ní féidir cosán sábhála a chinneadh don occluder.\n" +"Sábháil do radharc agus bain triail eile as." + +msgid "" +"No meshes to bake.\n" +"Make sure there is at least one MeshInstance3D node in the scene whose visual " +"layers are part of the OccluderInstance3D's Bake Mask property." +msgstr "" +"Níl mogaill le bácáil.\n" +"Déan cinnte go bhfuil nód MeshInstance3D amháin ar a laghad sa radharc a " +"bhfuil a sraitheanna amhairc mar chuid de mhaoin Masc Bake OccluderInstance3D." + +msgid "Could not save the new occluder at the specified path:" +msgstr "Níorbh fhéidir an t-occluder nua a shábháil ag an gcosán sonraithe:" + +msgid "Bake Occluders" +msgstr "Occluders Bácála" + +msgid "Select occluder bake file:" +msgstr "Roghnaigh comhad bácála occluder:" + +msgid "Convert to Parallax2D" +msgstr "Tiontaigh go Parallax2D" + +msgid "ParallaxBackground" +msgstr "ParallaxBackground" + +msgid "Hold Shift to scale around midpoint instead of moving." +msgstr "Coinnigh Shift chun scála timpeall lárphointe in ionad bogadh." + +msgid "Toggle between minimum/maximum and base value/spread modes." +msgstr "Scoránaigh idir íosluach/uasmhéid agus bunluach/modhanna scaipthe." + +msgid "Remove Point from Curve" +msgstr "Bain Pointe ón gCuar" + +msgid "Remove Out-Control from Curve" +msgstr "Bain Eis-Rialú ó Chuar" + +msgid "Remove In-Control from Curve" +msgstr "Bain In-Rialú ó Chuar" + +msgid "Split Curve" +msgstr "Cuar Scoilte" + +msgid "Move Point in Curve" +msgstr "Bog Pointe sa Chuar" + +msgid "Add Point to Curve" +msgstr "Cuir Pointe le Cuar" + +msgid "Move In-Control in Curve" +msgstr "Bog In-Rialú i gCuar" + +msgid "Move Out-Control in Curve" +msgstr "Bog Amach-Rialú i gCuar" + +msgid "Close the Curve" +msgstr "Dún an Cuar" + +msgid "Clear Curve Points" +msgstr "Glan Pointí Cuar" + +msgid "Select Points" +msgstr "Roghnaigh Pointí" + +msgid "Shift+Drag: Select Control Points" +msgstr "Shift + Tarraing: Roghnaigh Pointí Rialúcháin" + +msgid "Click: Add Point" +msgstr "Cliceáil: Cuir Pointe Leis" + +msgid "Left Click: Split Segment (in curve)" +msgstr "Cliceáil ar chlé: Scoilt Deighleog (i gcuar)" + +msgid "Right Click: Delete Point" +msgstr "Cliceáil ar dheis: Scrios Pointe" + +msgid "Select Control Points (Shift+Drag)" +msgstr "Roghnaigh Pointí Rialúcháin (Shift+Drag)" + +msgid "Add Point (in empty space)" +msgstr "Cuir Pointe Leis (i spás folamh)" + +msgid "Delete Point" +msgstr "Scrios Pointe" + +msgid "Close Curve" +msgstr "Dún an Cuar" + +msgid "Clear Points" +msgstr "Pointí Soiléire" + +msgid "Please Confirm..." +msgstr "Deimhnigh le do thoil..." + +msgid "Remove all curve points?" +msgstr "Bain gach pointe cuar?" + +msgid "Mirror Handle Angles" +msgstr "Scáthánaigh Láimhseáil Uillinneacha" + +msgid "Mirror Handle Lengths" +msgstr "Faid Láimhseála Scátháin" + +msgid "Curve Point #" +msgstr "Cuarphointe #" + +msgid "Handle In #" +msgstr "Láimhseáil I #" + +msgid "Handle Out #" +msgstr "Láimhseáil Amach #" + +msgid "Handle Tilt #" +msgstr "Láimhseáil Tilt #" + +msgid "Set Curve Point Position" +msgstr "Socraigh Ionad an Phointe Chuar" + +msgid "Set Curve Out Position" +msgstr "Socraigh Ionad an Chuar Amach" + +msgid "Set Curve In Position" +msgstr "Socraigh an cuar sa suíomh" + +msgid "Set Curve Point Tilt" +msgstr "Socraigh Pointe Cuar Tilt" + +msgid "Split Path" +msgstr "Conair Scoilte" + +msgid "Remove Path Point" +msgstr "Bain Pointe an Chosáin" + +msgid "Reset Out-Control Point" +msgstr "Athshocraigh an Pointe Amach-Rialúcháin" + +msgid "Reset In-Control Point" +msgstr "Athshocraigh Pointe Rialúcháin" + +msgid "Reset Point Tilt" +msgstr "Athshocraigh Pointe Tilt" + +msgid "Shift+Click: Select multiple Points" +msgstr "Shift + Cliceáil: Roghnaigh Pointí Il" + +msgid "Select Control Points" +msgstr "Roghnaigh Pointí Rialúcháin" + +msgid "Shift+Click: Drag out Control Points" +msgstr "Shift + Cliceáil: Tarraing amach Pointí Rialúcháin" + +msgid "Select Tilt Handles" +msgstr "Roghnaigh Láimhseálacha Tilt" + +msgid "Split Segment (in curve)" +msgstr "Scoilt Deighleog (i gcuar)" + +msgid "Move Joint" +msgstr "Bog Comhpháirteach" + +msgid "Plugin name cannot be blank." +msgstr "Ní féidir ainm an bhreiseáin a bheith bán." + +msgid "Subfolder name is not a valid folder name." +msgstr "Ní ainm bailí fillteáin é ainm an fhofhillteáin." + +msgid "Subfolder cannot be one which already exists." +msgstr "Ní féidir le fofhillteán a bheith ar cheann atá ann cheana féin." + +msgid "Script extension must match chosen language extension (.%s)." +msgstr "" +"Ní mór don eisínteacht scripte an iarmhír teanga roghnaithe (.%s) a " +"mheaitseáil." + +msgid "" +"C# doesn't support activating the plugin on creation because the project must " +"be built first." +msgstr "" +"Ní C # tacaíocht activating an breiseán ar chruthú toisc go gcaithfear an " +"tionscadal a thógáil ar dtús." + +msgid "Edit a Plugin" +msgstr "Cuir Breiseán in Eagar" + +msgid "Create a Plugin" +msgstr "Cruthaigh Breiseán" + +msgid "Update" +msgstr "Nuashonrú" + +msgid "Plugin Name:" +msgstr "Ainm an Bhreiseáin:" + +msgid "Required. This name will be displayed in the list of plugins." +msgstr "Riachtanach. Taispeánfar an t-ainm seo i liosta na mbreiseán." + +msgid "Subfolder:" +msgstr "Fofhillteán:" + +msgid "" +"Optional. The folder name should generally use `snake_case` naming (avoid " +"spaces and special characters).\n" +"If left empty, the folder will be named after the plugin name converted to " +"`snake_case`." +msgstr "" +"Roghnach. Ba chóir go n-úsáidfeadh ainm an fhillteáin ainmniú 'snake_case' de " +"ghnáth (seachain spásanna agus carachtair speisialta).\n" +"Má fhágtar folamh é, ainmneofar an fillteán i ndiaidh ainm an bhreiseáin a " +"thiontú go 'snake_case'." + +msgid "" +"Optional. This description should be kept relatively short (up to 5 lines).\n" +"It will display when hovering the plugin in the list of plugins." +msgstr "" +"Roghnach. Ba chóir an cur síos seo a choinneáil réasúnta gearr (suas le 5 " +"líne).\n" +"Taispeánfaidh sé nuair a bheidh an breiseán á ainliú i liosta na mbreiseán." + +msgid "Author:" +msgstr "Údar:" + +msgid "Optional. The author's username, full name, or organization name." +msgstr "Roghnach. Ainm úsáideora, ainm iomlán, nó ainm eagraíochta an údair." + +msgid "" +"Optional. A human-readable version identifier used for informational purposes " +"only." +msgstr "" +"Roghnach. Aitheantóir leagain atá inléite ag an duine agus a úsáidtear chun " +"críocha faisnéise amháin." + +msgid "" +"Required. The scripting language to use for the script.\n" +"Note that a plugin may use several languages at once by adding more scripts " +"to the plugin." +msgstr "" +"Riachtanach. An teanga scriptithe le húsáid don script.\n" +"Tabhair faoi deara gur féidir le breiseán roinnt teangacha a úsáid ag an am " +"céanna trí níos mó scripteanna a chur leis an mbreiseán." + +msgid "Script Name:" +msgstr "Ainm scripte:" + +msgid "" +"Optional. The path to the script (relative to the add-on folder). If left " +"empty, will default to \"plugin.gd\"." +msgstr "" +"Roghnach. Conair na scripte (i gcoibhneas leis an bhfillteán breise). Má " +"fhágtar folamh é, beidh sé réamhshocraithe \"plugin.gd\"." + +msgid "Activate now?" +msgstr "Gníomhachtaigh anois?" + +msgid "Plugin name is valid." +msgstr "Tá ainm an bhreiseáin bailí." + +msgid "Script extension is valid." +msgstr "Tá iarmhír scripte bailí." + +msgid "Subfolder name is valid." +msgstr "Tá ainm an fhofhillteáin bailí." + +msgid "" +"The skeleton property of the Polygon2D does not point to a Skeleton2D node" +msgstr "Ní dhíríonn maoin chnámharlaigh an Polygon2D ar nód Skeleton2D" + +msgid "Sync Bones" +msgstr "Sioncrónaigh Cnámha" + +msgid "" +"No texture in this polygon.\n" +"Set a texture to be able to edit UV." +msgstr "" +"Níl uigeacht ar bith sa pholagán seo.\n" +"Socraigh uigeacht le bheith in ann UV a chur in eagar." + +msgid "Create UV Map" +msgstr "Cruthaigh Léarscáil UV" + +msgid "" +"Polygon 2D has internal vertices, so it can no longer be edited in the " +"viewport." +msgstr "" +"Tá vertices inmheánacha ag Polagán 2D, ionas nach féidir é a chur in eagar a " +"thuilleadh sa viewport." + +msgid "Create Polygon & UV" +msgstr "Cruthaigh Polagán & UV" + +msgid "Create Internal Vertex" +msgstr "Cruthaigh Stuaic Inmheánach" + +msgid "Remove Internal Vertex" +msgstr "Bain Stuaic Inmheánach" + +msgid "Invalid Polygon (need 3 different vertices)" +msgstr "Polagán Neamhbhailí (gá le 3 vertices éagsúla)" + +msgid "Add Custom Polygon" +msgstr "Cuir Polagán Saincheaptha Leis" + +msgid "Remove Custom Polygon" +msgstr "Bain Polagán Saincheaptha" + +msgid "Transform UV Map" +msgstr "Trasfhoirmigh Léarscáil UV" + +msgid "Transform Polygon" +msgstr "Trasfhoirmigh Polagán" + +msgid "Paint Bone Weights" +msgstr "Meáchain Cnámh Péint" + +msgid "Open Polygon 2D UV editor." +msgstr "Oscail eagarthóir UV Polagán 2D." + +msgid "Polygon 2D UV Editor" +msgstr "Eagarthóir UV Polagán 2D" + +msgid "UV" +msgstr "UV" + +msgid "Points" +msgstr "Pointí" + +msgid "Polygons" +msgstr "Polagáin" + +msgid "Bones" +msgstr "Cnámha" + +msgid "Move Points" +msgstr "Bog Pointí" + +msgid ": Rotate" +msgstr ": Rothlaigh" + +msgid "Shift: Move All" +msgstr "Shift: Bog Gach Rud" + +msgid "Shift: Scale" +msgstr "Shift: Scála" + +msgid "Move Polygon" +msgstr "Bog Polagán" + +msgid "Rotate Polygon" +msgstr "Rothlaigh Polagán" + +msgid "Scale Polygon" +msgstr "Scálaigh Polagán" + +msgid "Create a custom polygon. Enables custom polygon rendering." +msgstr "" +"Cruthaigh polagán saincheaptha. Cumasaigh rindreáil polagán saincheaptha." + +msgid "" +"Remove a custom polygon. If none remain, custom polygon rendering is disabled." +msgstr "" +"Bain polagán saincheaptha. Mura bhfanann aon cheann, tá rindreáil polagán " +"saincheaptha díchumasaithe." + +msgid "Paint weights with specified intensity." +msgstr "Meáchain Péint le déine sonraithe." + +msgid "Unpaint weights with specified intensity." +msgstr "Meáchain unpaint le déine sonraithe." + +msgid "Radius:" +msgstr "Ga:" + +msgid "Copy Polygon to UV" +msgstr "Cóipeáil Polagán go UV" + +msgid "Copy UV to Polygon" +msgstr "Cóipeáil UV go Polagán" + +msgid "Clear UV" +msgstr "Glan UV" + +msgid "Grid Settings" +msgstr "Socruithe Greille" + +msgid "Snap" +msgstr "Léim" + +msgid "Enable Snap" +msgstr "Cumasaigh Snap" + +msgid "Show Grid" +msgstr "Taispeáin Greille" + +msgid "Configure Grid:" +msgstr "Cumraigh greille:" + +msgid "Grid Offset X:" +msgstr "Fritháireamh Greille X:" + +msgid "Grid Offset Y:" +msgstr "Fritháireamh Greille Y:" + +msgid "Grid Step X:" +msgstr "Greille Céim X:" + +msgid "Grid Step Y:" +msgstr "Greille Céim Y:" + +msgid "Sync Bones to Polygon" +msgstr "Sioncronaigh Cnámha go Polagán" + +msgid "Create Polygon3D" +msgstr "Cruthaigh Polagán3D" + +msgid "ERROR: Couldn't load resource!" +msgstr "EARRÁID: Níorbh fhéidir acmhainn a luchtú!" + +msgid "Add Resource" +msgstr "Cuir Acmhainn Leis" + +msgid "Rename Resource" +msgstr "Athainmnigh Acmhainn" + +msgid "Delete Resource" +msgstr "Scrios Acmhainn" + +msgid "Resource clipboard is empty!" +msgstr "Tá an ghearrthaisce acmhainne folamh!" + +msgid "Paste Resource" +msgstr "Greamaigh Acmhainn" + +msgid "Load Resource" +msgstr "Luchtaigh Acmhainn" + +msgid "Toggle ResourcePreloader Bottom Panel" +msgstr "Scoránaigh AcmhainnPreloader Bottom Panel" + +msgid "Path to AnimationMixer is invalid" +msgstr "Conair go BeochanMixer neamhbhailí" + +msgid "" +"AnimationMixer has no valid root node path, so unable to retrieve track names." +msgstr "" +"Níl aon chosán nód fréimhe bailí ag AnimationMixer, mar sin ní féidir " +"ainmneacha rianta a aisghabháil." + +msgid "Can't open '%s'. The file could have been moved or deleted." +msgstr "" +"Ní féidir '%s' a oscailt. D'fhéadfaí an comhad a bhogadh nó a scriosadh." + +msgid "Close and save changes?" +msgstr "Dún agus sábháil athruithe?" + +msgid "Error writing TextFile:" +msgstr "Earráid agus Téacschomhad á scríobh:" + +msgid "Error saving file!" +msgstr "Earráid agus comhad á shábháil!" + +msgid "Error while saving theme." +msgstr "Earráid agus téama á shábháil." + +msgid "Error Saving" +msgstr "Earráid agus Sábháil" + +msgid "Error importing theme." +msgstr "Earráid agus téama á iompórtáil." + +msgid "Error Importing" +msgstr "Earráid agus Iompórtáil" + +msgid "New Text File..." +msgstr "Téacschomhad Nua..." + +msgid "Open File" +msgstr "Oscail Comhad" + +msgid "Could not load file at:" +msgstr "Níorbh fhéidir an comhad a luchtú ag:" + +msgid "Save File As..." +msgstr "Sábháil Comhad Mar..." + +msgid "Can't obtain the script for reloading." +msgstr "Ní féidir an script a fháil le hathluchtú." + +msgid "Reload only takes effect on tool scripts." +msgstr "Ní thógann athluchtú éifeacht ach ar scripteanna uirlisí." + +msgid "Cannot run the edited file because it's not a script." +msgstr "Ní féidir an comhad atheagraithe a rith toisc nach script é." + +msgid "Cannot run the script because it contains errors, check the output log." +msgstr "" +"Ní féidir an script a rith toisc go bhfuil earráidí ann, seiceáil an " +"logchomhad aschuir." + +msgid "Cannot run the script because it doesn't extend EditorScript." +msgstr "Ní féidir an script a rith toisc nach leathnaíonn sé EditorScript." + +msgid "" +"Cannot run the script because it's not a tool script (add the @tool " +"annotation at the top)." +msgstr "" +"Ní féidir an script a rith toisc nach script uirlisí é (cuir an anótáil @tool " +"ag an mbarr)." + +msgid "Cannot run the script because it's not a tool script." +msgstr "Ní féidir an script a rith toisc nach script uirlisí é." + +msgid "Import Theme" +msgstr "Iompórtáil Téama" + +msgid "Error while saving theme" +msgstr "Earráid agus téama á shábháil" + +msgid "Error saving" +msgstr "Earráid agus earráid á sábháil" + +msgid "Save Theme As..." +msgstr "Sábháil Téama Mar..." + +msgid "Open '%s' in Godot online documentation." +msgstr "Oscail '%s' i gcáipéisíocht ar líne Godot." + +msgid "Open in Online Docs" +msgstr "Oscail i Docs Ar Líne" + +msgid "Online Docs" +msgstr "Docs Ar Líne" + +msgid "Open Godot online documentation." +msgstr "Oscail doiciméadú ar líne Godot." + +msgid "Unsaved file." +msgstr "Comhad gan sábháil." + +msgid "%s Class Reference" +msgstr "Tagairt Aicme %s" + +msgid "Find Next" +msgstr "Aimsigh Ar Aghaidh" + +msgid "Find Previous" +msgstr "Aimsigh Roimhe Seo" + +msgid "Filter Scripts" +msgstr "Scag Scripteanna" + +msgid "Toggle alphabetical sorting of the method list." +msgstr "Scoránaigh sórtáil aibítreach an liosta modhanna." + +msgid "Sort" +msgstr "Sórtáil" + +msgid "Next Script" +msgstr "An Chéad Script Eile" + +msgid "Previous Script" +msgstr "An Script Roimhe Seo" + +msgid "File" +msgstr "Comhad" + +msgid "Open..." +msgstr "Oscail..." + +msgid "Save All" +msgstr "Sábháil Gach Rud" + +msgid "Soft Reload Tool Script" +msgstr "Bog Athluchtaigh Script Uirlisí" + +msgid "Copy Script Path" +msgstr "Cóipeáil Conair na Scripte" + +msgid "History Previous" +msgstr "Stair Roimhe Seo" + +msgid "History Next" +msgstr "Stair Ar Aghaidh" + +msgid "Import Theme..." +msgstr "Iompórtáil Téama..." + +msgid "Reload Theme" +msgstr "Athluchtaigh Téama" + +msgid "Theme" +msgstr "Téama" + +msgid "Save Theme" +msgstr "Sábháil Téama" + +msgid "Close All" +msgstr "Dún Gach Rud" + +msgid "Close Docs" +msgstr "Dún Docs" + +msgid "Run" +msgstr "Rith" + +msgid "Search" +msgstr "Cuardaigh" + +msgid "Search the reference documentation." +msgstr "Cuardaigh na doiciméid tagartha." + +msgid "Go to previous edited document." +msgstr "Téigh go dtí an doiciméad a cuireadh in eagar roimhe seo." + +msgid "Go to next edited document." +msgstr "Téigh go dtí an chéad doiciméad eile in eagar." + +msgid "Make the script editor floating." +msgstr "Déan an t-eagarthóir scripte ar snámh." + +msgid "Discard" +msgstr "Ná Sábháil" + +msgid "The following files are newer on disk." +msgstr "Tá na comhaid seo a leanas níos nuaí ar an diosca." + +msgid "What action should be taken?:" +msgstr "Cén gníomh ba chóir a dhéanamh?:" + +msgid "Search Results" +msgstr "Torthaí Cuardaigh" + +msgid "Toggle Search Results Bottom Panel" +msgstr "Scoránaigh Bunphainéal Torthaí Cuardaigh" + +msgid "There are unsaved changes in the following built-in script(s):" +msgstr "Tá athruithe gan sábháil sna scripteanna tógtha seo a leanas:" + +msgid "Save changes to the following script(s) before quitting?" +msgstr "Sábháil athruithe ar an script/na scripteanna seo a leanas roimh scor?" + +msgid "Reopen Closed Script" +msgstr "Athoscail Script Dúnta" + +msgid "Clear Recent Scripts" +msgstr "Glan scripteanna le déanaí" + +msgid "Uppercase" +msgstr "Cás Uachtair" + +msgid "Lowercase" +msgstr "Cás Íochtair" + +msgid "Capitalize" +msgstr "Caipitliú" + +msgid "Standard" +msgstr "Caighdeán" + +msgid "Plain Text" +msgstr "Gnáth- Théacs" + +msgid "JSON" +msgstr "JSONName" + +msgid "Connections to method:" +msgstr "Naisc leis an modh:" + +msgid "Source" +msgstr "Foinse" + +msgid "Target" +msgstr "Sprioc" + +msgid "Error at (%d, %d):" +msgstr "Earráid ag (%d, %d):" + +msgid "" +"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." +msgstr "" +"Modh ceangailte '%s' ar iarraidh le haghaidh comhartha '%s' ó nód '%s' go nód " +"'%s'." + +msgid "[Ignore]" +msgstr "[Déan neamhaird]" + +msgid "Line %d (%s):" +msgstr "Líne %d (%s):" + +msgid "Line %d:" +msgstr "Líne %d:" + +msgid "Go to Function" +msgstr "Téigh go Feidhm" + +msgid "" +"The resource does not have a valid path because it has not been saved.\n" +"Please save the scene or resource that contains this resource and try again." +msgstr "" +"Níl cosán bailí ag an acmhainn toisc nár sábháladh í.\n" +"Sábháil an radharc nó an acmhainn ina bhfuil an acmhainn seo agus bain triail " +"eile as." + +msgid "Preloading internal resources is not supported." +msgstr "Ní thacaítear le hacmhainní inmheánacha a réamhlódáil." + +msgid "Can't drop nodes without an open scene." +msgstr "Ní féidir nóid a scaoileadh gan radharc oscailte." + +msgid "Can't drop nodes because script '%s' does not inherit Node." +msgstr "" +"Ní féidir nóid a scaoileadh toisc nach bhfaigheann script '%s' Nód le " +"hoidhreacht." + +msgid "Lookup Symbol" +msgstr "Siombail Chuardaigh" + +msgid "Pick Color" +msgstr "Roghnaigh Dath" + +msgid "Line" +msgstr "Líne" + +msgid "Folding" +msgstr "Fillte" + +msgid "Convert Case" +msgstr "Tiontaigh Cás" + +msgid "Syntax Highlighter" +msgstr "Aibhsitheoir Comhréire" + +msgid "Bookmarks" +msgstr "Leabharmharcanna" + +msgid "Go To" +msgstr "Téigh go" + +msgid "Delete Line" +msgstr "Scrios Líne" + +msgid "Unindent" +msgstr "Aontumhach" + +msgid "Toggle Comment" +msgstr "Scoránaigh Nóta" + +msgid "Fold/Unfold Line" +msgstr "Fill / Líne Unfold" + +msgid "Fold All Lines" +msgstr "Fill Gach Líne" + +msgid "Create Code Region" +msgstr "Cruthaigh Réigiún an Chóid" + +msgid "Unfold All Lines" +msgstr "Nocht Gach Líne" + +msgid "Duplicate Selection" +msgstr "Dúblach Roghnúchán" + +msgid "Duplicate Lines" +msgstr "Línte Dúblacha" + +msgid "Evaluate Selection" +msgstr "Déan measúnú ar an roghnúchán" + +msgid "Toggle Word Wrap" +msgstr "Scoránaigh Timfhilleadh Focal" + +msgid "Trim Trailing Whitespace" +msgstr "Baile Átha Troim Trailing Whitespace" + +msgid "Trim Final Newlines" +msgstr "Baile Átha Troim Deiridh Newlines" + +msgid "Convert Indent to Spaces" +msgstr "Tiontaigh Eang go Spásanna" + +msgid "Convert Indent to Tabs" +msgstr "Tiontaigh Eang go Cluaisíní" + +msgid "Auto Indent" +msgstr "Eangú Uathoibríoch" + +msgid "Find in Files..." +msgstr "Aimsigh i gComhaid..." + +msgid "Replace in Files..." +msgstr "Ionadaigh i gComhaid..." + +msgid "Contextual Help" +msgstr "Cabhair Chomhthéacsúil" + +msgid "Toggle Bookmark" +msgstr "Scoránaigh Leabharmharc" + +msgid "Go to Next Bookmark" +msgstr "Téigh go dtí an Chéad Leabharmharc Eile" + +msgid "Go to Previous Bookmark" +msgstr "Téigh go dtí an Leabharmharc Roimhe Seo" + +msgid "Remove All Bookmarks" +msgstr "Bain Gach Leabharmharc" + +msgid "Go to Function..." +msgstr "Téigh go Feidhm..." + +msgid "Go to Line..." +msgstr "Téigh go Líne..." + +msgid "Toggle Breakpoint" +msgstr "Scoránaigh Brisphointe" + +msgid "Remove All Breakpoints" +msgstr "Bain Gach Brisphointe" + +msgid "Go to Next Breakpoint" +msgstr "Téigh go dtí An Chéad Bhriseadh Eile" + +msgid "Go to Previous Breakpoint" +msgstr "Téigh go dtí an Brisphointe Roimhe Seo" + +msgid "Save changes to the following shaders(s) before quitting?" +msgstr "Sábháil athruithe ar na shaders seo a leanas roimh scor?" + +msgid "There are unsaved changes in the following built-in shaders(s):" +msgstr "Tá athruithe gan sábháil sna shaders (í) tógtha seo a leanas:" + +msgid "Shader Editor" +msgstr "Eagarthóir Scáthaigh" + +msgid "New Shader Include..." +msgstr "I measc an scáthóra nua tá..." + +msgid "Load Shader File..." +msgstr "Luchtaigh Comhad Scáthaithe..." + +msgid "Load Shader Include File..." +msgstr "Luchtaigh Shader Cuir Comhad san áireamh..." + +msgid "Save File" +msgstr "Sábháil Comhad" + +msgid "Open File in Inspector" +msgstr "Oscail Comhad sa Chigire" + +msgid "Close File" +msgstr "Dún Comhad" + +msgid "Make the shader editor floating." +msgstr "Déan an t-eagarthóir shader snámh." + +msgid "Toggle Shader Editor Bottom Panel" +msgstr "Scoránaigh Painéal Bun Eagarthóir Shader" + +msgid "No valid shader stages found." +msgstr "Níor aimsíodh aon chéimeanna bailí shader." + +msgid "Shader stage compiled without errors." +msgstr "Céim shader tiomsaithe gan earráidí." + +msgid "" +"File structure for '%s' contains unrecoverable errors:\n" +"\n" +msgstr "" +"Tá earráidí do-aimsithe i struchtúr comhaid '%s':\n" +"\n" + +msgid "ShaderFile" +msgstr "ScáthaighFile" + +msgid "Toggle ShaderFile Bottom Panel" +msgstr "Scoránaigh Painéal Bun ShaderFile" + +msgid "This skeleton has no bones, create some children Bone2D nodes." +msgstr "" +"Níl aon chnámha ag an gcnámharlach seo, cruthaíonn sé roinnt nóid Bone2D do " +"leanaí." + +msgid "Set Rest Pose to Bones" +msgstr "Socraigh Rest Pose to Bones" + +msgid "Create Rest Pose from Bones" +msgstr "Cruthaigh Rest Pose ó Chnámha" + +msgid "Skeleton2D" +msgstr "Cnámharlach2D" + +msgid "Reset to Rest Pose" +msgstr "Athshocraigh go Pose Scíthe" + +msgid "Overwrite Rest Pose" +msgstr "Forscríobh Rest Pose" + +msgid "Set Bone Transform" +msgstr "Socraigh Claochlú Cnámh" + +msgid "Set Bone Rest" +msgstr "Socraigh Scíth Cnámh" + +msgid "Cannot create a physical skeleton for a Skeleton3D node with no bones." +msgstr "" +"Ní féidir cnámharlach fisiciúil a chruthú le haghaidh nód Skeleton3D gan aon " +"chnámha." + +msgid "Create physical bones" +msgstr "Cruthaigh cnámha fisiciúla" + +msgid "Cannot export a SkeletonProfile for a Skeleton3D node with no bones." +msgstr "" +"Ní féidir SkeletonProfile a easpórtáil le haghaidh nód Skeleton3D gan aon " +"chnámha." + +msgid "Export Skeleton Profile As..." +msgstr "Easpórtáil Próifíl Chnámharlaigh Mar..." + +msgid "Set Bone Parentage" +msgstr "Socraigh Tuismíocht Cnámh" + +msgid "Skeleton3D" +msgstr "Cnámharlach3D" + +msgid "Reset All Bone Poses" +msgstr "Athshocraigh Gach Cnámh" + +msgid "Reset Selected Poses" +msgstr "Athshocraigh na Cúiseanna Roghnaithe" + +msgid "Apply All Poses to Rests" +msgstr "Cuir Gach Cúis i bhFeidhm maidir le Sosanna" + +msgid "Apply Selected Poses to Rests" +msgstr "Cuir Na Cúiseanna Roghnaithe i bhFeidhm do Chuid Eile" + +msgid "Create Physical Skeleton" +msgstr "Cruthaigh Cnámharlach Fisiciúil" + +msgid "Export Skeleton Profile" +msgstr "Easpórtáil Próifíl Chnámharlaigh" + +msgid "" +"Edit Mode\n" +"Show buttons on joints." +msgstr "" +"Cuir Mód in Eagar\n" +"Taispeáin cnaipí ar ailt." + +msgid "Insert key (based on mask) for bones with an existing track." +msgstr "" +"Ionsáigh eochair (bunaithe ar masc) do chnámha le rian atá ann cheana féin." + +msgid "Insert key (based on mask) for all bones." +msgstr "Ionsáigh eochair (bunaithe ar masc) do gach cnámh." + +msgid "Insert Key (All Bones)" +msgstr "Ionsáigh Eochair (Gach Cnámh)" + +msgid "Bone Transform" +msgstr "Claochlú Cnámh" + +msgid "Play IK" +msgstr "Seinn ar IK" + +msgid "Create MeshInstance2D" +msgstr "Cruthaigh MogalraInstance2D" + +msgid "MeshInstance2D Preview" +msgstr "Réamhamharc MeshInstance2D" + +msgid "Create Polygon2D" +msgstr "Cruthaigh Polagán2D" + +msgid "Polygon2D Preview" +msgstr "Réamhamharc Polagán2D" + +msgid "Create CollisionPolygon2D" +msgstr "Cruthaigh ImbhualadhPolygon2D" + +msgid "CollisionPolygon2D Preview" +msgstr "Réamhamharc ImbhuailtíPolygon2D" + +msgid "Create LightOccluder2D" +msgstr "Cruthaigh LightOccluder2D" + +msgid "LightOccluder2D Preview" +msgstr "Réamhamharc LightOccluder2D" + +msgid "Can't convert a sprite from a foreign scene." +msgstr "Ní féidir sprite a thiontú ó radharc eachtrach." + +msgid "Can't convert an empty sprite to mesh." +msgstr "Ní féidir sprite folamh a thiontú go mogalra." + +msgid "Invalid geometry, can't replace by mesh." +msgstr "Geoiméadracht neamhbhailí, ní féidir mogall a chur ina ionad." + +msgid "Convert to MeshInstance2D" +msgstr "Tiontaigh go MeshInstance2D" + +msgid "Invalid geometry, can't create polygon." +msgstr "Geoiméadracht neamhbhailí, ní féidir polagán a chruthú." + +msgid "Convert to Polygon2D" +msgstr "Tiontaigh go Polagán2D" + +msgid "Invalid geometry, can't create collision polygon." +msgstr "Geoiméadracht neamhbhailí, ní féidir polagán imbhuailte a chruthú." + +msgid "Create CollisionPolygon2D Sibling" +msgstr "Cruthaigh Siblín ImbhuailtePolygon2D" + +msgid "Invalid geometry, can't create light occluder." +msgstr "Geoiméadracht neamhbhailí, ní féidir occluder éadrom a chruthú." + +msgid "Create LightOccluder2D Sibling" +msgstr "Cruthaigh Siblín LightOccluder2D" + +msgid "Sprite2D" +msgstr "Sprite2D" + +msgid "Simplification:" +msgstr "Simpliú:" + +msgid "Shrink (Pixels):" +msgstr "Laghdaigh (picteilíní):" + +msgid "Grow (Pixels):" +msgstr "Ag Fás (Picteilíní):" + +msgid "Update Preview" +msgstr "Nuashonraigh Réamhamharc" + +msgid "Settings:" +msgstr "Socruithe:" + +msgid "No Frames Selected" +msgstr "Gan Frámaí Roghnaithe" + +msgid "Add %d Frame(s)" +msgstr "Cuir %d Fráma(í) Leis" + +msgid "Add Frame" +msgstr "Cuir Fráma Leis" + +msgid "Unable to load images" +msgstr "Ní féidir íomhánna a luchtú" + +msgid "ERROR: Couldn't load frame resource!" +msgstr "EARRÁID: Níorbh fhéidir acmhainn fráma a luchtú!" + +msgid "Paste Frame(s)" +msgstr "Greamaigh Fráma(í)" + +msgid "Paste Texture" +msgstr "Greamaigh Uigeacht" + +msgid "Add Empty" +msgstr "Cuir Folamh Leis" + +msgid "Move Frame" +msgstr "Bog Fráma" + +msgid "Delete Animation?" +msgstr "Scrios Beochan?" + +msgid "Change Animation FPS" +msgstr "Athraigh FPS Beochana" + +msgid "Set Frame Duration" +msgstr "Socraigh Fad an Fhráma" + +msgid "(empty)" +msgstr "(folamh)" + +msgid "Animations:" +msgstr "Beochan:" + +msgid "Animation Speed" +msgstr "Luas Beochana" + +msgid "Filter Animations" +msgstr "Beochan Scagaire" + +msgid "Delete Animation" +msgstr "Scrios Beochan" + +msgid "This resource does not have any animations." +msgstr "Níl beochan ar bith ag an acmhainn seo." + +msgid "Animation Frames:" +msgstr "Frámaí Beochana:" + +msgid "Frame Duration:" +msgstr "Fad an Fhráma:" + +msgid "Zoom Reset" +msgstr "Athshocraigh Zúmáil" + +msgid "Add frame from file" +msgstr "Cuir fráma leis ó chomhad" + +msgid "Add frames from sprite sheet" +msgstr "Cuir frámaí ó bhileog sprite leis" + +msgid "Delete Frame" +msgstr "Scrios Fráma" + +msgid "Copy Frame(s)" +msgstr "Cóipeáil fráma(í)" + +msgid "Insert Empty (Before Selected)" +msgstr "Ionsáigh Folamh (Roimh Roghnaithe)" + +msgid "Insert Empty (After Selected)" +msgstr "Ionsáigh Folamh (tar éis roghnaithe)" + +msgid "Move Frame Left" +msgstr "Bog an Fráma Ar Chlé" + +msgid "Move Frame Right" +msgstr "Bog Fráma ar Dheis" + +msgid "Select Frames" +msgstr "Roghnaigh Frámaí" + +msgid "Frame Order" +msgstr "Ordú Fráma" + +msgid "As Selected" +msgstr "Mar a roghnaíodh" + +msgid "By Row" +msgstr "De Réir Ró" + +msgid "Left to Right, Top to Bottom" +msgstr "Clé go Deas, Barr go Bun" + +msgid "Left to Right, Bottom to Top" +msgstr "Clé go Deas, Bun go Barr" + +msgid "Right to Left, Top to Bottom" +msgstr "Deas go Clé, Barr go Bun" + +msgid "Right to Left, Bottom to Top" +msgstr "Deas go Clé, Bun go Barr" + +msgid "By Column" +msgstr "De Réir Colúin" + +msgid "Top to Bottom, Left to Right" +msgstr "Barr go Bun, Clé go Deas" + +msgid "Top to Bottom, Right to Left" +msgstr "Barr go Bun, Deas go Clé" + +msgid "Bottom to Top, Left to Right" +msgstr "Bun go Barr, Clé go Deas" + +msgid "Bottom to Top, Right to Left" +msgstr "Bun go Barr, Deas go Clé" + +msgid "Select None" +msgstr "Roghnaigh Ceann ar bith" + +msgid "Toggle Settings Panel" +msgstr "Scoránaigh an Painéal Socruithe" + +msgid "Horizontal" +msgstr "Cothrománach" + +msgid "Vertical" +msgstr "Ingearach" + +msgid "Size" +msgstr "Méid" + +msgid "Separation" +msgstr "Scaradh" + +msgid "Offset" +msgstr "Fritháireamh" + +msgid "Create Frames from Sprite Sheet" +msgstr "Cruthaigh Frámaí ó Bhileog Sprite" + +msgid "SpriteFrames" +msgstr "SpriteFrames" + +msgid "Toggle SpriteFrames Bottom Panel" +msgstr "Scoránaigh Painéal Bun SpriteFrames" + +msgid "Warnings should be fixed to prevent errors." +msgstr "Ba cheart rabhaidh a shocrú chun earráidí a chosc." + +msgid "" +"This shader has been modified on disk.\n" +"What action should be taken?" +msgstr "" +"Athraíodh an scáthaitheoir seo ar an diosca.\n" +"Cén gníomh ba chóir a dhéanamh?" + +msgid "Reload" +msgstr "Athluchtaigh" + +msgid "Resave" +msgstr "Shábháil arís" + +msgid "%s Mipmaps" +msgstr "%s Mipmaps" + +msgid "Memory: %s" +msgstr "Cuimhne: %s" + +msgid "No Mipmaps" +msgstr "Gan Mipmaps" + +msgid "Set Region Rect" +msgstr "Socraigh Réigiún Rect" + +msgid "Set Margin" +msgstr "Socraigh Imeall" + +msgid "Region Editor" +msgstr "Eagarthóir Réigiúin" + +msgid "Snap Mode:" +msgstr "Mód Léime:" + +msgid "Pixel Snap" +msgstr "Snap Picteilíní" + +msgid "Grid Snap" +msgstr "Léim Ghreille" + +msgid "Auto Slice" +msgstr "Slisne Uathoibríoch" + +msgid "Step:" +msgstr "Céim:" + +msgid "Separation:" +msgstr "Scaradh:" + +msgid "Edit Region" +msgstr "Cuir Réigiún in Eagar" + +msgid "Styleboxes" +msgstr "Boscaí Stíle" + +msgid "1 color" +msgid_plural "{num} colors" +msgstr[0] "1 dath" +msgstr[1] "{num} dathanna" +msgstr[2] "{num} dathanna" +msgstr[3] "{num} dathanna" +msgstr[4] "{num} dathanna" + +msgid "No colors found." +msgstr "Níor aimsíodh dathanna ar bith." + +msgid "1 constant" +msgid_plural "{num} constants" +msgstr[0] "1 tairiseach" +msgstr[1] "{num} tairisigh" +msgstr[2] "{num} tairisigh" +msgstr[3] "{num} tairisigh" +msgstr[4] "{num} tairisigh" + +msgid "No constants found." +msgstr "Níor aimsíodh tairisigh ar bith." + +msgid "1 font" +msgid_plural "{num} fonts" +msgstr[0] "1 cló" +msgstr[1] "{num} clónna" +msgstr[2] "{num} clónna" +msgstr[3] "{num} clónna" +msgstr[4] "{num} clónna" + +msgid "No fonts found." +msgstr "Níor aimsíodh clófhoirne ar bith." + +msgid "1 font size" +msgid_plural "{num} font sizes" +msgstr[0] "1 clómhéid" +msgstr[1] "{num} clómhéid" +msgstr[2] "{num} clómhéid" +msgstr[3] "{num} clómhéid" +msgstr[4] "{num} clómhéid" + +msgid "No font sizes found." +msgstr "Níor aimsíodh clómhéideanna ar bith." + +msgid "1 icon" +msgid_plural "{num} icons" +msgstr[0] "1 íocón" +msgstr[1] "{num} deilbhíní" +msgstr[2] "{num} deilbhíní" +msgstr[3] "{num} deilbhíní" +msgstr[4] "{num} deilbhíní" + +msgid "No icons found." +msgstr "Níor aimsíodh deilbhíní ar bith." + +msgid "1 stylebox" +msgid_plural "{num} styleboxes" +msgstr[0] "1 bosca stíl" +msgstr[1] "{num} bosca stíle" +msgstr[2] "{num} bosca stíle" +msgstr[3] "{num} bosca stíle" +msgstr[4] "{num} bosca stíle" + +msgid "No styleboxes found." +msgstr "Níor aimsíodh boscaí stíle ar bith." + +msgid "{num} currently selected" +msgid_plural "{num} currently selected" +msgstr[0] "{num} roghnaithe faoi láthair" +msgstr[1] "{num} roghnaithe faoi láthair" +msgstr[2] "{num} roghnaithe faoi láthair" +msgstr[3] "{num} roghnaithe faoi láthair" +msgstr[4] "{num} roghnaithe faoi láthair" + +msgid "Nothing was selected for the import." +msgstr "Níor roghnaíodh aon rud le haghaidh na hiompórtála." + +msgid "Importing Theme Items" +msgstr "Míreanna Téama á nIompórtáil" + +msgid "Importing items {n}/{n}" +msgstr "Míreanna á n-iompórtáil {n}/{n}" + +msgid "Updating the editor" +msgstr "An t-eagarthóir á nuashonrú" + +msgid "Finalizing" +msgstr "Bailchríoch a chur ar" + +msgid "Import Theme Items" +msgstr "Iompórtáil Míreanna Téama" + +msgid "Filter Items" +msgstr "Scag Míreanna" + +msgid "With Data" +msgstr "Le Sonraí" + +msgid "Select by data type:" +msgstr "Roghnaigh de réir chineál sonraí:" + +msgid "Select all visible color items." +msgstr "Roghnaigh gach mír datha infheicthe." + +msgid "Select all visible color items and their data." +msgstr "Roghnaigh gach mír datha infheicthe agus a gcuid sonraí." + +msgid "Deselect all visible color items." +msgstr "Díroghnaigh gach mír datha infheicthe." + +msgid "Select all visible constant items." +msgstr "Roghnaigh gach mír tairiseach infheicthe." + +msgid "Select all visible constant items and their data." +msgstr "Roghnaigh gach mír tairiseach infheicthe agus a gcuid sonraí." + +msgid "Deselect all visible constant items." +msgstr "Díroghnaigh gach mír tairiseach infheicthe." + +msgid "Select all visible font items." +msgstr "Roghnaigh gach mír chló infheicthe." + +msgid "Select all visible font items and their data." +msgstr "Roghnaigh gach mír chló infheicthe agus a gcuid sonraí." + +msgid "Deselect all visible font items." +msgstr "Díroghnaigh gach mír chló infheicthe." + +msgid "Font sizes" +msgstr "Clómhéideanna" + +msgid "Select all visible font size items." +msgstr "Roghnaigh gach mír chlómhéide infheicthe." + +msgid "Select all visible font size items and their data." +msgstr "Roghnaigh gach mír chlómhéide infheicthe agus a gcuid sonraí." + +msgid "Deselect all visible font size items." +msgstr "Díroghnaigh gach mír chlómhéide infheicthe." + +msgid "Select all visible icon items." +msgstr "Roghnaigh gach mír deilbhín infheicthe." + +msgid "Select all visible icon items and their data." +msgstr "Roghnaigh gach mír deilbhín infheicthe agus a gcuid sonraí." + +msgid "Deselect all visible icon items." +msgstr "Díroghnaigh gach mír deilbhín infheicthe." + +msgid "Select all visible stylebox items." +msgstr "Roghnaigh gach mír bosca stíle infheicthe." + +msgid "Select all visible stylebox items and their data." +msgstr "Roghnaigh gach mír bosca stíle infheicthe agus a gcuid sonraí." + +msgid "Deselect all visible stylebox items." +msgstr "Díroghnaigh gach mír bosca stíle infheicthe." + +msgid "" +"Caution: Adding icon data may considerably increase the size of your Theme " +"resource." +msgstr "" +"Rabhadh: Má chuirtear sonraí deilbhíní leis, d'fhéadfadh sé go méadófaí go " +"mór méid d'acmhainne Téama." + +msgid "Collapse types." +msgstr "Cineálacha titim." + +msgid "Expand types." +msgstr "Leathnaigh cineálacha." + +msgid "Select all Theme items." +msgstr "Roghnaigh gach mír Téama." + +msgid "Select With Data" +msgstr "Roghnaigh le Sonraí" + +msgid "Select all Theme items with item data." +msgstr "Roghnaigh gach mír Téama le sonraí míre." + +msgid "Deselect All" +msgstr "Díroghnaigh Gach Rud" + +msgid "Deselect all Theme items." +msgstr "Díroghnaigh gach mír Téama." + +msgid "Import Selected" +msgstr "Iompórtáil Roghnaithe" + +msgid "" +"Import Items tab has some items selected. Selection will be lost upon closing " +"this window.\n" +"Close anyway?" +msgstr "" +"Tá roinnt míreanna roghnaithe sa chluaisín Iompórtáil Míreanna. Caillfear an " +"roghnúchán nuair a dhúnfar an fhuinneog seo.\n" +"Dún ar aon nós?" + +msgid "Remove Type" +msgstr "Bain Cineál" + +msgid "" +"Select a theme type from the list to edit its items.\n" +"You can add a custom type or import a type with its items from another theme." +msgstr "" +"Roghnaigh cineál téama ón liosta chun a mhíreanna a chur in eagar.\n" +"Is féidir leat cineál saincheaptha a chur leis nó cineál a iompórtáil lena " +"míreanna ó théama eile." + +msgid "Remove All Color Items" +msgstr "Bain Gach Mír Datha" + +msgid "Rename Item" +msgstr "Athainmnigh Mír" + +msgid "Remove All Constant Items" +msgstr "Bain Gach Mír Tairiseach" + +msgid "Remove All Font Items" +msgstr "Bain Gach Mír Chló" + +msgid "Remove All Font Size Items" +msgstr "Bain Gach Mír Chlómhéide" + +msgid "Remove All Icon Items" +msgstr "Bain Gach Mír Deilbhíní" + +msgid "Remove All StyleBox Items" +msgstr "Bain Gach Mír Bosca Stíle" + +msgid "" +"This theme type is empty.\n" +"Add more items to it manually or by importing from another theme." +msgstr "" +"Tá an cineál téama seo folamh.\n" +"Cuir níos mó míreanna leis de láimh nó trí iompórtáil ó théama eile." + +msgid "Remove Theme Item" +msgstr "Bain Mír Téama" + +msgid "Add Theme Type" +msgstr "Cuir Cineál Téama Leis" + +msgid "Create Theme Item" +msgstr "Cruthaigh Mír Téama" + +msgid "Remove Theme Type" +msgstr "Bain Cineál Téama" + +msgid "Remove Data Type Items From Theme" +msgstr "Bain Míreanna Cineál Sonraí ó Théama" + +msgid "Remove Class Items From Theme" +msgstr "Bain Míreanna Ranga ón Téama" + +msgid "Remove Custom Items From Theme" +msgstr "Bain Míreanna Saincheaptha ón Téama" + +msgid "Remove All Items From Theme" +msgstr "Bain Gach Mír ón Téama" + +msgid "Add Color Item" +msgstr "Cuir Mír Datha Leis" + +msgid "Add Constant Item" +msgstr "Cuir Mír Leanúnach Leis" + +msgid "Add Font Item" +msgstr "Cuir Mír Chlófhoirne Leis" + +msgid "Add Font Size Item" +msgstr "Cuir Mír Chlómhéide Leis" + +msgid "Add Icon Item" +msgstr "Cuir Mír Dheilbhíní Leis" + +msgid "Add Stylebox Item" +msgstr "Cuir Mír Bosca Stíle Leis" + +msgid "Rename Color Item" +msgstr "Athainmnigh Mír Datha" + +msgid "Rename Constant Item" +msgstr "Athainmnigh Mír Tairiseach" + +msgid "Rename Font Item" +msgstr "Athainmnigh Mír an Chló" + +msgid "Rename Font Size Item" +msgstr "Athainmnigh Méid an Chló Mír" + +msgid "Rename Icon Item" +msgstr "Athainmnigh Mír Dheilbhíní" + +msgid "Rename Stylebox Item" +msgstr "Athainmnigh Mír an Bhosca Stíle" + +msgid "Rename Theme Item" +msgstr "Athainmnigh Mír Téama" + +msgid "Invalid file, not a Theme resource." +msgstr "Comhad neamhbhailí, ní acmhainn Téama." + +msgid "Invalid file, same as the edited Theme resource." +msgstr "" +"Comhad neamhbhailí, mar an gcéanna leis an acmhainn Téama curtha in eagar." + +msgid "Manage Theme Items" +msgstr "Bainistigh Míreanna Téama" + +msgid "Edit Items" +msgstr "Cuir Míreanna in Eagar" + +msgid "Types:" +msgstr "Cineálacha:" + +msgid "Add Type:" +msgstr "Cuir Cineál Leis:" + +msgid "Add Item:" +msgstr "Cuir Mír Leis:" + +msgid "Add StyleBox Item" +msgstr "Cuir Mír Bosca Stíle Leis" + +msgid "Remove Items:" +msgstr "Bain Míreanna:" + +msgid "Remove Class Items" +msgstr "Bain Míreanna Ranga" + +msgid "Remove Custom Items" +msgstr "Bain Míreanna Saincheaptha" + +msgid "Remove All Items" +msgstr "Bain Gach Mír" + +msgid "Add Theme Item" +msgstr "Cuir Mír Téama Leis" + +msgid "Old Name:" +msgstr "Seanainm:" + +msgid "Import Items" +msgstr "Iompórtáil Míreanna" + +msgid "Default Theme" +msgstr "Téama Réamhshocraithe" + +msgid "Editor Theme" +msgstr "Téama an Eagarthóra" + +msgid "Select Another Theme Resource:" +msgstr "Roghnaigh Acmhainn Téama Eile:" + +msgid "Theme Resource" +msgstr "Acmhainn Téama" + +msgid "Another Theme" +msgstr "Téama Eile" + +msgid "Filter the list of types or create a new custom type:" +msgstr "Scag liosta na gcineálacha nó cruthaigh cineál saincheaptha nua:" + +msgid "Available Node-based types:" +msgstr "Cineálacha bunaithe ar Nód atá ar fáil:" + +msgid "Type name is empty!" +msgstr "Tá ainm an chineáil folamh!" + +msgid "Are you sure you want to create an empty type?" +msgstr "An bhfuil tú cinnte go bhfuil fonn ort cineál folamh a chruthú?" + +msgid "Confirm Item Rename" +msgstr "Deimhnigh Athainmnigh na Míre" + +msgid "Cancel Item Rename" +msgstr "Cealaigh Athainmnigh na Míre" + +msgid "Override Item" +msgstr "Sáraigh Mír" + +msgid "Unpin this StyleBox as a main style." +msgstr "Díphionnáil an StyleBox seo mar phríomhstíl." + +msgid "" +"Pin this StyleBox as a main style. Editing its properties will update the " +"same properties in all other StyleBoxes of this type." +msgstr "" +"Pin an StyleBox seo mar phríomhstíl. Déanfaidh eagarthóireacht ar a airíonna " +"na hairíonna céanna a nuashonrú i ngach Bosca Stíle eile den chineál seo." + +msgid "Add Item Type" +msgstr "Cuir Cineál Míre Leis" + +msgid "Add Type" +msgstr "Cuir Cineál Leis" + +msgid "Override All Default Theme Items" +msgstr "Sáraigh gach mír réamhshocraithe téama" + +msgid "Override Theme Item" +msgstr "Sáraigh Mír Téama" + +msgid "Set Color Item in Theme" +msgstr "Socraigh Mír Datha sa Téama" + +msgid "Set Constant Item in Theme" +msgstr "Socraigh Mír Tairiseach sa Téama" + +msgid "Set Font Size Item in Theme" +msgstr "Socraigh Mír Chlómhéide sa Téama" + +msgid "Set Font Item in Theme" +msgstr "Socraigh Mír Chlófhoirne sa Téama" + +msgid "Set Icon Item in Theme" +msgstr "Socraigh Mír Dheilbhíní sa Téama" + +msgid "Set Stylebox Item in Theme" +msgstr "Socraigh Mír an Bhosca Stíle sa Téama" + +msgid "Pin Stylebox" +msgstr "Bosca Stíle Bioráin" + +msgid "Unpin Stylebox" +msgstr "Díphionnáil Bosca Stíle" + +msgid "Set Theme Type Variation" +msgstr "Socraigh Athrú Cineál Téama" + +msgid "Set Variation Base Type" +msgstr "Socraigh Bunchineál an Athraithe" + +msgid "Set Base Type" +msgstr "Socraigh Bunchineál" + +msgid "Add a type from a list of available types or create a new one." +msgstr "" +"Cuir cineál ó liosta de na cineálacha atá ar fáil nó cruthaigh ceann nua." + +msgid "Show Default" +msgstr "Taispeáin Réamhshocrú" + +msgid "Show default type items alongside items that have been overridden." +msgstr "" +"Taispeáin míreanna de chineál réamhshocraithe in éineacht le míreanna a " +"sáraíodh." + +msgid "Override All" +msgstr "Sáraigh Gach Rud" + +msgid "Override all default type items." +msgstr "Sáraigh gach mír réamhshocraithe den chineál." + +msgid "Base Type" +msgstr "Bunchineál" + +msgid "Select the variation base type from a list of available types." +msgstr "" +"Roghnaigh an bunchineál éagsúlachta ó liosta de na cineálacha atá ar fáil." + +msgid "" +"A type associated with a built-in class cannot be marked as a variation of " +"another type." +msgstr "" +"Ní féidir cineál a bhaineann le rang ionsuite a mharcáil mar athrú de chineál " +"eile." + +msgid "Theme:" +msgstr "Téama:" + +msgid "Manage Items..." +msgstr "Bainistigh Míreanna..." + +msgid "Add, remove, organize and import Theme items." +msgstr "Cuir, bain, eagrú agus allmhairiú míreanna Téama." + +msgid "Add Preview" +msgstr "Cuir Réamhamharc Leis" + +msgid "Default Preview" +msgstr "Réamhamharc Réamhshocraithe" + +msgid "Select UI Scene:" +msgstr "Roghnaigh Radharc UI:" + +msgid "Toggle Theme Bottom Panel" +msgstr "Scoránaigh an Painéal Bun Téama" + +msgid "" +"Toggle the control picker, allowing to visually select control types for edit." +msgstr "" +"Scoránaigh an roghnóir rialaithe, rud a ligeann cineálacha rialaithe a roghnú " +"go amhairc le cur in eagar." + +msgid "Toggle Button" +msgstr "Scoránaigh an Cnaipe" + +msgid "Disabled Button" +msgstr "Cnaipe Díchumasaithe" + +msgid "Item" +msgstr "Mír" + +msgid "Disabled Item" +msgstr "MírMhír Díchumasaithe" + +msgid "Check Item" +msgstr "Seiceáil Mír" + +msgid "Checked Item" +msgstr "Mír Seiceáilte" + +msgid "Radio Item" +msgstr "Mír Raidió" + +msgid "Checked Radio Item" +msgstr "Seiceáil mír raidió" + +msgid "Named Separator" +msgstr "Deighilteoir Ainmnithe" + +msgid "Submenu" +msgstr "Fo-roghchlár" + +msgid "Subitem 1" +msgstr "Fo-mhír 1" + +msgid "Subitem 2" +msgstr "Fo-mhír 2" + +msgid "Has" +msgstr "Tar éis" + +msgid "Many" +msgstr "Tá go leor" + +msgid "Disabled LineEdit" +msgstr "Líne DíchumasaitheCuir in Eagar" + +msgid "Tab 1" +msgstr "Táb 1" + +msgid "Tab 2" +msgstr "Táb 2" + +msgid "Tab 3" +msgstr "Táb 3" + +msgid "Editable Item" +msgstr "Mír Ineagarthóireachta" + +msgid "Subtree" +msgstr "SubtreeName" + +msgid "Has,Many,Options" +msgstr "Tá, Go leor, Roghanna" + +msgid "Invalid path, the PackedScene resource was probably moved or removed." +msgstr "" +"Cosán neamhbhailí, is dócha gur bogadh nó gur baineadh an acmhainn " +"PackedScene." + +msgid "Invalid PackedScene resource, must have a Control node at its root." +msgstr "" +"Acmhainn Neamhbhailí PackedScene, ní mór nód Rialaithe a bheith ag a fhréamh." + +msgid "Invalid file, not a PackedScene resource." +msgstr "Comhad neamhbhailí, ní acmhainn PackedScene." + +msgid "Reload the scene to reflect its most actual state." +msgstr "Athluchtaigh an radharc chun a staid is iarbhír a léiriú." + +msgid "Merge TileSetAtlasSource" +msgstr "Cumaisc TileSetAtlasSource" + +msgid "%s (ID: %d)" +msgstr "%s (Aitheantas: %d)" + +msgid "Atlas Merging" +msgstr "Atlas Chumasc" + +msgid "Merge (Keep original Atlases)" +msgstr "Cumaisc (Coinnigh Atlas bunaidh)" + +msgid "Merge" +msgstr "Cumaisc" + +msgid "Next Line After Column" +msgstr "An Chéad Líne Eile Tar éis an Cholúin" + +msgid "Please select two atlases or more." +msgstr "Roghnaigh dhá atlas nó níos mó." + +msgid "" +"Source: %d\n" +"Atlas coordinates: %s\n" +"Alternative: 0" +msgstr "" +"Foinse: %d\n" +"Comhordanáidí atlas: %s\n" +"Rogha eile: 0" + +msgid "" +"Source: %d\n" +"Atlas coordinates: %s\n" +"Alternative: %d" +msgstr "" +"Foinse: %d\n" +"Comhordanáidí atlas: %s\n" +"Rogha eile: %d" + +msgid "" +"The selected atlas source has no valid texture. Assign a texture in the " +"TileSet bottom tab." +msgstr "" +"Níl aon uigeacht bhailí ag an bhfoinse atlas roghnaithe. Tabhair uigeacht sa " +"chluaisín bun TileSet." + +msgid "Base Tiles" +msgstr "Tíleanna Bonn" + +msgid "Alternative Tiles" +msgstr "Tíleanna Malartacha" + +msgid "Reset Polygons" +msgstr "Athshocraigh Polagáin" + +msgid "Clear Polygons" +msgstr "Polagáin Ghlana" + +msgid "Rotate Polygons Right" +msgstr "Rothlaigh Polagáin ar Dheis" + +msgid "Rotate Polygons Left" +msgstr "Rothlaigh Polagáin Ar Chlé" + +msgid "Flip Polygons Horizontally" +msgstr "Smeach Polagáin Go Cothrománach" + +msgid "Flip Polygons Vertically" +msgstr "Smeach Polagáin Go hIngearach" + +msgid "Edit Polygons" +msgstr "Cuir Polagáin in Eagar" + +msgid "Expand editor" +msgstr "Fairsingigh an t- eagarthóir" + +msgid "Add polygon tool" +msgstr "Cuir uirlis polagáin leis" + +msgid "Edit points tool" +msgstr "Cuir uirlis pointí in eagar" + +msgid "Delete points tool" +msgstr "Scrios uirlis pointí" + +msgid "Reset to default tile shape" +msgstr "Athshocraigh go cruth réamhshocraithe tíl" + +msgid "Rotate Right" +msgstr "Rothlaigh ar dheis" + +msgid "Rotate Left" +msgstr "Rothlaigh ar chlé" + +msgid "Flip Horizontally" +msgstr "Smeach go Cothrománach" + +msgid "Flip Vertically" +msgstr "Smeach go hIngearach" + +msgid "Disable Snap" +msgstr "Díchumasaigh Snap" + +msgid "Half-Pixel Snap" +msgstr "Snap Leathphicteilíní" + +msgid "Painting Tiles Property" +msgstr "Péinteáil Tíleanna Maoin" + +msgid "Painting:" +msgstr "Péinteáil:" + +msgid "No terrains" +msgstr "Gan tír-raon" + +msgid "No terrain" +msgstr "Gan tír-raon" + +msgid "Painting Terrain Set" +msgstr "Péinteáil Tír-raon Socraigh" + +msgid "Painting Terrain" +msgstr "Tír-raon Péinteála" + +msgid "Can't transform scene tiles." +msgstr "Ní féidir tíleanna radhairc a athrú." + +msgid "Can't rotate patterns when using non-square tile grid." +msgstr "Ní féidir patrúin a rothlú agus greille tíl neamhchearnógach á húsáid." + +msgid "No Texture Atlas Source (ID: %d)" +msgstr "Gan Foinse Atlas Uigeachta (ID: %d)" + +msgid "Scene Collection Source (ID: %d)" +msgstr "Foinse Bailithe Radhairc (ID: %d)" + +msgid "Empty Scene Collection Source (ID: %d)" +msgstr "Foinse Bailithe Radharc Folamh (ID: %d)" + +msgid "Unknown Type Source (ID: %d)" +msgstr "Foinse an Chineáil Neamhaithnid (ID: %d)" + +msgid "Add TileSet pattern" +msgstr "Cuir patrún TileSet leis" + +msgid "Remove TileSet patterns" +msgstr "Bain patrúin TileSet" + +msgid "Index: %d" +msgstr "Innéacs: %d" + +msgid "Tile with Invalid Scene" +msgstr "Tíl le Radharc Neamhbhailí" + +msgid "" +"The selected scene collection source has no scenes. Add scenes in the TileSet " +"bottom tab." +msgstr "" +"Níl aon radharc ag an bhfoinse bailithe radhairc roghnaithe. Cuir radhairc sa " +"chluaisín bun TileSet." + +msgid "Delete tiles" +msgstr "Scrios tíleanna" + +msgid "Drawing Rect:" +msgstr "Líníocht Rect:" + +msgid "Change selection" +msgstr "Athraigh an roghnúchán" + +msgid "Move tiles" +msgstr "Bog tíleanna" + +msgid "Paint tiles" +msgstr "Tíleanna péinte" + +msgid "Paste tiles" +msgstr "Greamaigh tíleanna" + +msgid "Selection" +msgstr "Roghnúchán" + +msgid "Shift: Draw line." +msgstr "Shift: Tarraing líne." + +msgid "Shift: Draw rectangle." +msgstr "Shift: Tarraing dronuilleog." + +msgid "Alternatively hold %s with other tools to pick tile." +msgstr "Nó coinnigh %s le huirlisí eile chun tíl a phiocadh." + +msgid "Alternatively use RMB to erase tiles." +msgstr "Nó bain úsáid as RMB chun tíleanna a scriosadh." + +msgid "Rotate Tile Left" +msgstr "Rothlaigh tíl ar chlé" + +msgid "Rotate Tile Right" +msgstr "Rothlaigh tíl ar dheis" + +msgid "Flip Tile Horizontally" +msgstr "Smeach Tíleanna Go Cothrománach" + +msgid "Flip Tile Vertically" +msgstr "Smeach Tíleanna Go hIngearach" + +msgid "Contiguous" +msgstr "Tadhlach" + +msgid "Place Random Tile" +msgstr "Cuir Tíl Randamach" + +msgid "" +"Modifies the chance of painting nothing instead of a randomly selected tile." +msgstr "" +"Modifies an deis a phéinteáil rud ar bith in ionad tíl a roghnaíodh go " +"randamach." + +msgid "Scattering:" +msgstr "Scaipeadh:" + +msgid "Tiles" +msgstr "Tíleanna" + +msgid "" +"This TileMap's TileSet has no source configured. Go to the TileSet bottom " +"panel to add one." +msgstr "" +"Níl aon fhoinse cumraithe ag TileSet an TileMap seo. Téigh go dtí an painéal " +"bun TileSet chun ceann a chur leis." + +msgid "Sort sources" +msgstr "Sórtáil foinsí" + +msgid "Sort by ID (Ascending)" +msgstr "Sórtáil de réir aitheantais (ag dul suas)" + +msgid "Sort by ID (Descending)" +msgstr "Sórtáil de réir ID (Íslitheach)" + +msgid "Invalid source selected." +msgstr "Foinse neamhbhailí roghnaithe." + +msgid "Patterns" +msgstr "Patrúin" + +msgid "Drag and drop or paste a TileMap selection here to store a pattern." +msgstr "" +"Tarraing agus scaoil nó greamaigh rogha TileMap anseo chun patrún a stóráil." + +msgid "Paint terrain" +msgstr "Tír-raon péinte" + +msgid "Matches Corners and Sides" +msgstr "Meaitseálann Cúinní agus Taobhanna" + +msgid "Matches Corners Only" +msgstr "Meaitseálann Cúinní Amháin" + +msgid "Matches Sides Only" +msgstr "Taobhanna Meaitseála Amháin" + +msgid "Terrain Set %d (%s)" +msgstr "Tír-raon Socraigh %d (%s)" + +msgid "" +"Connect mode: paints a terrain, then connects it with the surrounding tiles " +"with the same terrain." +msgstr "" +"Ceangail mód: péinteanna tír-raon, ansin nascann sé leis na tíleanna máguaird " +"leis an tír-raon céanna." + +msgid "" +"Path mode: paints a terrain, then connects it to the previous tile painted " +"within the same stroke." +msgstr "" +"Modh cosán: péinteanna tír-raon, ansin nascann sé leis an tíl roimhe " +"péinteáilte laistigh den stróc céanna." + +msgid "Terrains" +msgstr "Talamh" + +msgid "No Layers" +msgstr "Gan Sraitheanna" + +msgid "Replace Tiles with Proxies" +msgstr "Ionadaigh Tíleanna le Proxies" + +msgid "Extract TileMap layers as individual TileMapLayer nodes" +msgstr "Sliocht sraitheanna TileMap mar nóid TileMapLayer aonair" + +msgid "Can't edit multiple layers at once." +msgstr "Ní féidir sraitheanna éagsúla a chur in eagar ag an am céanna." + +msgid "The selected TileMap has no layer to edit." +msgstr "Níl aon chiseal le cur in eagar ag an TileMap roghnaithe." + +msgid "The edited layer is disabled or invisible" +msgstr "Tá an ciseal curtha in eagar díchumasaithe nó dofheicthe" + +msgid "" +"The edited TileMap or TileMapLayer node has no TileSet resource.\n" +"Create or load a TileSet resource in the Tile Set property in the inspector." +msgstr "" +"Níl aon acmhainn TileSet ag an nód TileMap nó TileMapLayer atá curtha in " +"eagar.\n" +"Cruthaigh nó luchtaigh acmhainn TileSet sa mhaoin Socraigh Tíleanna sa " +"chigire." + +msgid "Select Next Tile Map Layer" +msgstr "Roghnaigh An Chéad Sraith Mapa Tíleanna Eile" + +msgid "Select Previous Tile Map Layer" +msgstr "Roghnaigh Sraith Mapa Tíleanna Roimhe Seo" + +msgid "TileMap Layers" +msgstr "Sraitheanna TileMap" + +msgid "Select previous layer" +msgstr "Roghnaigh an ciseal roimhe seo" + +msgid "Select next layer" +msgstr "Roghnaigh an chéad sraith eile" + +msgid "Select all layers" +msgstr "Roghnaigh gach sraith" + +msgid "Select all TileMapLayers in scene" +msgstr "Roghnaigh gach TileMapLayers sa radharc" + +msgid "Highlight Selected TileMap Layer" +msgstr "Aibhsigh Sraith TileMap Roghnaithe" + +msgid "Toggle grid visibility." +msgstr "Scoránaigh infheictheacht na heangaí." + +msgid "Automatically Replace Tiles with Proxies" +msgstr "Cuir Proxies in ionad tíleanna go huathoibríoch" + +msgid "Remove Tile Proxies" +msgstr "Bain Proxies Tíleanna" + +msgid "Create Alternative-level Tile Proxy" +msgstr "Cruthaigh Seachfhreastalaí Tíleanna Malartacha" + +msgid "Create Coords-level Tile Proxy" +msgstr "Cruthaigh Seachfhreastalaí Tíleanna Coords-leibhéal" + +msgid "Create source-level Tile Proxy" +msgstr "Cruthaigh Seachfhreastalaí Tíleanna ar leibhéal foinseach" + +msgid "Delete All Invalid Tile Proxies" +msgstr "Scrios Gach Proxies Tíleanna Neamhbhailí" + +msgid "Delete All Tile Proxies" +msgstr "Scrios Gach Proxies Tíleanna" + +msgid "Tile Proxies Management" +msgstr "Bainistíocht Proxies Tíleanna" + +msgid "Source-level proxies" +msgstr "Proxies leibhéal foinse" + +msgid "Coords-level proxies" +msgstr "Proxies coords-leibhéal" + +msgid "Alternative-level proxies" +msgstr "Proxies leibhéal malartach" + +msgid "Add a new tile proxy:" +msgstr "Cuir seachfhreastalaí tíl nua leis:" + +msgid "From Source" +msgstr "Ón bhFoinse" + +msgid "From Coords" +msgstr "Ó Coords" + +msgid "From Alternative" +msgstr "Ó Rogha Eile" + +msgid "To Source" +msgstr "Go Foinse" + +msgid "To Coords" +msgstr "Go Coords" + +msgid "To Alternative" +msgstr "Mar mhalairt ar" + +msgid "Global actions:" +msgstr "Gníomhaíochtaí domhanda:" + +msgid "Clear Invalid" +msgstr "Glan Neamhbhailí" + +msgid "Atlas" +msgstr "Atlas" + +msgid "Base Tile" +msgstr "Tíleanna Bonn" + +msgid "Alternative Tile" +msgstr "Tíl Mhalartach" + +msgid "" +"Selected tile:\n" +"Source: %d\n" +"Atlas coordinates: %s\n" +"Alternative: %d" +msgstr "" +"Tíl roghnaithe:\n" +"Foinse: %d\n" +"Comhordanáidí atlas: %s\n" +"Rogha eile: %d" + +msgid "Rendering" +msgstr "Rindreáil" + +msgid "Texture Origin" +msgstr "Bunús uigeachta" + +msgid "Modulate" +msgstr "Mionathraigh" + +msgid "Z Index" +msgstr "Innéacs Z" + +msgid "Y Sort Origin" +msgstr "Y Sórtáil Origin" + +msgid "Occlusion Layer %d" +msgstr "Sraith Occlusion %d" + +msgid "Probability" +msgstr "Dóchúlacht" + +msgid "Physics" +msgstr "Fisic" + +msgid "Physics Layer %d" +msgstr "Sraith Fisice %d" + +msgid "No physics layers" +msgstr "Gan sraitheanna fisice" + +msgid "" +"Create and customize physics layers in the inspector of the TileSet resource." +msgstr "" +"Cruthaigh agus saincheap sraitheanna fisice i gcigire na hacmhainne TileSet." + +msgid "Navigation Layer %d" +msgstr "Sraith Nascleanúna %d" + +msgid "No navigation layers" +msgstr "Gan sraitheanna nascleanúna" + +msgid "" +"Create and customize navigation layers in the inspector of the TileSet " +"resource." +msgstr "" +"Cruthaigh agus saincheap sraitheanna nascleanúna i gcigire na hacmhainne " +"TileSet." + +msgid "Custom Data" +msgstr "Sonraí Saincheaptha" + +msgid "Custom Data %d" +msgstr "Sonraí Saincheaptha %d" + +msgid "No custom data layers" +msgstr "Gan sraitheanna sonraí saincheaptha" + +msgid "" +"Create and customize custom data layers in the inspector of the TileSet " +"resource." +msgstr "" +"Cruthaigh agus saincheap sraitheanna sonraí saincheaptha i gcigire na " +"hacmhainne TileSet." + +msgid "Select a property editor" +msgstr "Roghnaigh eagarthóir maoine" + +msgid "" +"TileSet is in read-only mode. Make the resource unique to edit TileSet " +"properties." +msgstr "" +"Tá TileSet i mód inléite amháin. Déan an acmhainn uathúil chun airíonna " +"TileSet a chur in eagar." + +msgid "Paint properties." +msgstr "Airíonna péinteála." + +msgid "Create tiles" +msgstr "Cruthaigh tíleanna" + +msgid "Create a tile" +msgstr "Cruthaigh tíl" + +msgid "Remove tiles" +msgstr "Bain tíleanna" + +msgid "Move a tile" +msgstr "Bog tíl" + +msgid "Select tiles" +msgstr "Roghnaigh tíleanna" + +msgid "Resize a tile" +msgstr "Athraigh méid tíl" + +msgid "Remove tile" +msgstr "Bain tíl" + +msgid "Create tile alternatives" +msgstr "Cruthaigh roghanna malartacha tíl" + +msgid "Remove Tiles Outside the Texture" +msgstr "Bain Tíleanna Lasmuigh den Uigeacht" + +msgid "Create tiles in non-transparent texture regions" +msgstr "Cruthaigh tíleanna i réigiúin uigeachta neamh-thrédhearcacha" + +msgid "Remove tiles in fully transparent texture regions" +msgstr "Bain tíleanna i réigiúin uigeachta atá go hiomlán trédhearcach" + +msgid "" +"The tile's unique identifier within this TileSet. Each tile stores its source " +"ID, so changing one may make tiles invalid." +msgstr "" +"Aitheantóir uathúil an tíl laistigh den TileSet seo. Stórálann gach tíl a ID " +"foinse, mar sin d'fhéadfadh athrú amháin tíleanna a dhéanamh neamhbhailí." + +msgid "" +"The human-readable name for the atlas. Use a descriptive name here for " +"organizational purposes (such as \"terrain\", \"decoration\", etc.)." +msgstr "" +"An t-ainm duine-inléite don atlas. Bain úsáid as ainm tuairisciúil anseo chun " +"críocha eagrúcháin (mar shampla \"tír-raon\", \"maisiú\", etc.)." + +msgid "The image from which the tiles will be created." +msgstr "An íomhá as a gcruthófar na tíleanna." + +msgid "" +"The margins on the image's edges that should not be selectable as tiles (in " +"pixels). Increasing this can be useful if you download a tilesheet image that " +"has margins on the edges (e.g. for attribution)." +msgstr "" +"Na corrlaigh ar imill na híomhá nár chóir a roghnú mar tíleanna (i " +"bpicteilíní). Is féidir é seo a mhéadú a bheith úsáideach má íoslódálann tú " +"íomhá tíleanna a bhfuil corrlaigh ar na himill (m.sh. le haghaidh sannadh)." + +msgid "" +"The separation between each tile on the atlas in pixels. Increasing this can " +"be useful if the tilesheet image you're using contains guides (such as " +"outlines between every tile)." +msgstr "" +"An scaradh idir gach tíl ar an atlas i bpicteilíní. Is féidir é seo a mhéadú " +"a bheith úsáideach má tá treoracha san íomhá tíleanna atá in úsáid agat (mar " +"shampla imlíne idir gach tíl)." + +msgid "" +"The size of each tile on the atlas in pixels. In most cases, this should " +"match the tile size defined in the TileMap property (although this is not " +"strictly necessary)." +msgstr "" +"Méid gach tíl ar an atlas i bpicteilíní. I bhformhór na gcásanna, ba chóir go " +"mbeadh sé seo comhoiriúnach leis an méid tíl a shainmhínítear sa mhaoin " +"TileMap (cé nach bhfuil sé seo fíor-riachtanach)." + +msgid "" +"If checked, adds a 1-pixel transparent edge around each tile to prevent " +"texture bleeding when filtering is enabled. It's recommended to leave this " +"enabled unless you're running into rendering issues due to texture padding." +msgstr "" +"Má sheiceáil, cuireann imeall trédhearcach 1-picteilín timpeall gach tíl chun " +"fuiliú uigeachta a chosc nuair a chumasaítear scagadh. Moltar é seo a fhágáil " +"cumasaithe mura bhfuil tú ag rith isteach i saincheisteanna rindreáil mar " +"gheall ar stuáil uigeachta." + +msgid "" +"The position of the tile's top-left corner in the atlas. The position and " +"size must be within the atlas and can't overlap another tile.\n" +"Each painted tile has associated atlas coords, so changing this property may " +"cause your TileMaps to not display properly." +msgstr "" +"Suíomh chúinne barr ar chlé an tíl san atlas. Ní mór don suíomh agus méid a " +"bheith laistigh den atlas agus ní féidir forluí tíl eile.\n" +"Tá coords atlas gaolmhar ag gach tíl péinteáilte, mar sin d'fhéadfadh athrú " +"ar an maoin seo a chur faoi deara nach dtaispeánfar do TileMaps i gceart." + +msgid "The unit size of the tile." +msgstr "Méid aonaid an tíl." + +msgid "" +"Number of columns for the animation grid. If number of columns is lower than " +"number of frames, the animation will automatically adjust row count." +msgstr "" +"Líon na gcolún don ghreille beochana. Má tá líon na gcolún níos ísle ná líon " +"na bhfrámaí, déanfaidh an beochan comhaireamh as a chéile a choigeartú go " +"huathoibríoch." + +msgid "The space (in tiles) between each frame of the animation." +msgstr "An spás (i tíleanna) idir gach fráma den bheochan." + +msgid "Animation speed in frames per second." +msgstr "Luas beochana i bhfrámaí in aghaidh an tsoicind." + +msgid "" +"Determines how animation will start. In \"Default\" mode all tiles start " +"animating at the same frame. In \"Random Start Times\" mode, each tile starts " +"animation with a random offset." +msgstr "" +"Socraíonn sé conas a thosóidh beochan. I mód \"Réamhshocrú\" tosaíonn gach " +"tíleanna ag beochan ag an bhfráma céanna. I mód \"Random Start Times\", " +"tosaíonn gach tíl beochan le fritháireamh randamach." + +msgid "If [code]true[/code], the tile is horizontally flipped." +msgstr "Más rud é [code]fíor[/code], déantar an tíl a smeach go cothrománach." + +msgid "If [code]true[/code], the tile is vertically flipped." +msgstr "Más [code]fíor[/code] é, déantar an tíl a smeach go ceartingearach." + +msgid "" +"If [code]true[/code], the tile is rotated 90 degrees [i]counter-clockwise[/i] " +"and then flipped vertically. In practice, this means that to rotate a tile by " +"90 degrees clockwise without flipping it, you should enable [b]Flip H[/b] and " +"[b]Transpose[/b]. To rotate a tile by 180 degrees clockwise, enable [b]Flip " +"H[/b] and [b]Flip V[/b]. To rotate a tile by 270 degrees clockwise, enable " +"[b]Flip V[/b] and [b]Transpose[/b]." +msgstr "" +"Más rud é [code]fíor[/code], rothlaíonn an tíl 90 céim [i] go tuathalach[/i] " +"agus ansin iompaithe go hingearach é. Go praiticiúil, ciallaíonn sé seo gur " +"cheart duit [b] Smeach H[/b] agus [b]Transpose[/b] a chumasú chun tíl a " +"rothlú 90 céim deiseal gan é a smeach. Chun tíl a rothlú 180 céim deiseal, " +"cumasaigh [b] Smeach H[/b] agus [b] Smeach V[/b]. Chun tíl a rothlú 270 céim " +"ar deiseal, cumasaigh [b] Smeach V[/b] agus [b] Trasnaigh[/b]." + +msgid "" +"The origin to use for drawing the tile. This can be used to visually offset " +"the tile compared to the base tile." +msgstr "" +"An bunús a úsáid chun an tíl a tharraingt. Is féidir é seo a úsáid chun an " +"tíl a fhritháireamh go amhairc i gcomparáid leis an tíl bonn." + +msgid "The color multiplier to use when rendering the tile." +msgstr "An t-iolraitheoir datha le húsáid agus an tíl á rindreáil." + +msgid "" +"The material to use for this tile. This can be used to apply a different " +"blend mode or custom shaders to a single tile." +msgstr "" +"An t-ábhar atá le húsáid don tíl seo. Is féidir é seo a úsáid chun modh " +"cumaisc difriúil nó shaders saincheaptha a chur i bhfeidhm ar thíl amháin." + +msgid "" +"The sorting order for this tile. Higher values will make the tile render in " +"front of others on the same layer. The index is relative to the TileMap's own " +"Z index." +msgstr "" +"An t-ordú sórtála don tíl seo. Beidh luachanna níos airde a dhéanamh ar an " +"rindreáil tíl os comhair daoine eile ar an ciseal céanna. Tá an t-innéacs i " +"gcoibhneas le hinnéacs Z an TileMap féin." + +msgid "" +"The vertical offset to use for tile sorting based on its Y coordinate (in " +"pixels). This allows using layers as if they were on different height for top-" +"down games. Adjusting this can help alleviate issues with sorting certain " +"tiles. Only effective if Y Sort Enabled is true on the TileMap layer the tile " +"is placed on." +msgstr "" +"An fritháireamh ingearach le húsáid le haghaidh sórtáil tíl bunaithe ar a " +"chomhordanáid Y (i bpicteilíní). Ligeann sé seo sraitheanna a úsáid amhail is " +"dá mbeadh siad ar airde éagsúla le haghaidh cluichí anuas. Is féidir le " +"coigeartú seo cabhrú le saincheisteanna a mhaolú le tíleanna áirithe a " +"shórtáil. Níl sé éifeachtach ach amháin má tá Y Sort Enabled fíor ar an " +"gciseal TileMap cuirtear an tíl air." + +msgid "" +"The index of the terrain set this tile belongs to. [code]-1[/code] means it " +"will not be used in terrains." +msgstr "" +"Innéacs na sraithe tír-raon lena mbaineann an tíl seo. Ciallaíonn [code]-1[/" +"code] nach n-úsáidfear i dtír-raon é." + +msgid "" +"The index of the terrain inside the terrain set this tile belongs to. " +"[code]-1[/code] means it will not be used in terrains." +msgstr "" +"Innéacs an tír-raon taobh istigh den tír-raon a bhaineann leis an tíl seo. " +"Ciallaíonn [code]-1[/code] nach n-úsáidfear i dtír-raon é." + +msgid "" +"The relative probability of this tile appearing when painting with \"Place " +"Random Tile\" enabled." +msgstr "" +"An dóchúlacht choibhneasta an tíl le feiceáil nuair a phéinteáil le \"Cuir " +"Tíleanna Randamach\" cumasaithe." + +msgid "Setup" +msgstr "Socrú" + +msgid "" +"Atlas setup. Add/Remove tiles tool (use the shift key to create big tiles, " +"control for rectangle editing)." +msgstr "" +"Socrú Atlas. Cuir / Bain uirlis tíleanna (bain úsáid as an eochair athrú a " +"chruthú tíleanna móra, rialú le haghaidh eagarthóireacht dronuilleog)." + +msgid "Select tiles." +msgstr "Roghnaigh tíleanna." + +msgid "Paint" +msgstr "Péint" + +msgid "" +"No tiles selected.\n" +"Select one or more tiles from the palette to edit its properties." +msgstr "" +"Níor roghnaíodh tíleanna ar bith.\n" +"Roghnaigh tíleanna amháin nó níos mó ón bpailéad chun a airíonna a chur in " +"eagar." + +msgid "Paint Properties:" +msgstr "Airíonna Péinteála:" + +msgid "Create Tiles in Non-Transparent Texture Regions" +msgstr "Cruthaigh tíleanna i réigiúin uigeachta neamh-thrédhearcacha" + +msgid "Remove Tiles in Fully Transparent Texture Regions" +msgstr "Bain Tíleanna i Réigiúin Uigeachta Atá Go hiomlán Trédhearcach" + +msgid "" +"The current atlas source has tiles outside the texture.\n" +"You can clear it using \"%s\" option in the 3 dots menu." +msgstr "" +"Tá tíleanna lasmuigh den uigeacht ag an bhfoinse atlas reatha.\n" +"Is féidir é a ghlanadh leis an rogha \"%s\" sa roghchlár 3 phonc." + +msgid "Hold Ctrl to create multiple tiles." +msgstr "Coinnigh Ctrl a chruthú tíleanna il." + +msgid "Hold Shift to create big tiles." +msgstr "Coinnigh Shift chun tíleanna móra a chruthú." + +msgid "Create an Alternative Tile" +msgstr "Cruthaigh Tíl Mhalartach" + +msgid "Create a Tile" +msgstr "Cruthaigh Tíl" + +msgid "Auto Create Tiles in Non-Transparent Texture Regions?" +msgstr "" +"Tíleanna a chruthú go huathoibríoch i réigiúin uigeachta neamh-thrédhearcacha?" + +msgid "" +"The atlas's texture was modified.\n" +"Would you like to automatically create tiles in the atlas?" +msgstr "" +"Athraíodh uigeacht an atlais.\n" +"Ar mhaith leat tíleanna a chruthú go huathoibríoch san atlas?" + +msgid "Yes" +msgstr "Tá" + +msgid "No" +msgstr "Ní hea" + +msgid "Invalid texture selected." +msgstr "Uigeacht neamhbhailí roghnaithe." + +msgid "Add a new atlas source" +msgstr "Cuir foinse nua atlas leis" + +msgid "Remove source" +msgstr "Bain foinse" + +msgid "Add atlas source" +msgstr "Cuir foinse atlas leis" + +msgid "Sort Sources" +msgstr "Sórtáil Foinsí" + +msgid "A palette of tiles made from a texture." +msgstr "Pailéad tíleanna déanta as uigeacht." + +msgid "Scenes Collection" +msgstr "Bailiúchán Radharcanna" + +msgid "A collection of scenes that can be instantiated and placed as tiles." +msgstr "Bailiúchán radharcanna is féidir a mheandar agus a chur mar thíleanna." + +msgid "Open Atlas Merging Tool" +msgstr "Oscail Atlas Merging Uirlis" + +msgid "Manage Tile Proxies" +msgstr "Bainistigh Proxies Tíleanna" + +msgid "" +"No TileSet source selected. Select or create a TileSet source.\n" +"You can create a new source by using the Add button on the left or by " +"dropping a tileset texture onto the source list." +msgstr "" +"Níor roghnaíodh foinse TileSet. Roghnaigh nó cruthaigh foinse TileSet.\n" +"Is féidir leat foinse nua a chruthú tríd an gcnaipe Cuir ar chlé a úsáid nó " +"trí uigeacht tíleanna a scaoileadh ar an liosta foinseach." + +msgid "Add new patterns in the TileMap editing mode." +msgstr "Cuir patrúin nua leis an mód eagarthóireachta TileMap." + +msgid "" +"Warning: Modifying a source ID will result in all TileMaps using that source " +"to reference an invalid source instead. This may result in unexpected data " +"loss. Change this ID carefully." +msgstr "" +"Rabhadh: Má dhéantar ID foinseach a mhodhnú, beidh gach TileMaps ag baint " +"úsáide as an bhfoinse sin chun tagairt a dhéanamh d'fhoinse neamhbhailí ina " +"ionad. D'fhéadfadh caillteanas sonraí gan choinne a bheith mar thoradh air " +"seo. Athraigh an ID seo go cúramach." + +msgid "Add a Scene Tile" +msgstr "Cuir Tíl Radhairc Leis" + +msgid "Remove a Scene Tile" +msgstr "Bain Tíl Radhairc" + +msgid "Drag and drop scenes here or use the Add button." +msgstr "" +"Tarraing agus scaoil radhairc anseo nó bain úsáid as an gcnaipe Cuir leis." + +msgid "" +"The human-readable name for the scene collection. Use a descriptive name here " +"for organizational purposes (such as \"obstacles\", \"decoration\", etc.)." +msgstr "" +"An t-ainm atá inléite ag an duine don bhailiúchán radhairc. Bain úsáid as " +"ainm tuairisciúil anseo chun críocha eagrúcháin (mar shampla \"constaicí\", " +"\"maisiú\", etc.)." + +msgid "" +"ID of the scene tile in the collection. Each painted tile has associated ID, " +"so changing this property may cause your TileMaps to not display properly." +msgstr "" +"Aitheantas na tíl radhairc sa bhailiúchán. Tá aitheantas gaolmhar ag gach tíl " +"péinteáilte, mar sin d'fhéadfadh athrú a dhéanamh ar an maoin seo a bheith " +"ina chúis le do TileMaps gan taispeáint i gceart." + +msgid "Absolute path to the scene associated with this tile." +msgstr "Conair iomlán chuig an radharc a bhaineann leis an tíl seo." + +msgid "" +"If [code]true[/code], a placeholder marker will be displayed on top of the " +"scene's preview. The marker is displayed anyway if the scene has no valid " +"preview." +msgstr "" +"Más [code]fíor[/code], taispeánfar marcóir coinneála áitribh ar bharr " +"réamhamhairc an radhairc. Taispeántar an marcóir ar aon nós mura bhfuil " +"réamhamharc bailí ar an radharc." + +msgid "Scenes collection properties:" +msgstr "Airíonna bailithe radharcanna:" + +msgid "Tile properties:" +msgstr "Airíonna tílithe:" + +msgctxt "Tool" +msgid "Line" +msgstr "Líne" + +msgid "Rect" +msgstr "RectName" + +msgid "Bucket" +msgstr "Buicéad" + +msgid "Eraser" +msgstr "Scriosán" + +msgid "Picker" +msgstr "Roghnóir" + +msgid "TileMap" +msgstr "Mapa Tíl" + +msgid "Toggle TileMap Bottom Panel" +msgstr "Scoránaigh Painéal Bun TileMap" + +msgid "TileSet" +msgstr "Tacar Tíleanna" + +msgid "Toggle TileSet Bottom Panel" +msgstr "Scoránaigh Painéal Bun TileSet" + +msgid "" +"No VCS plugins are available in the project. Install a VCS plugin to use VCS " +"integration features." +msgstr "" +"Níl aon bhreiseáin VCS ar fáil sa tionscadal. Suiteáil breiseán VCS chun " +"gnéithe comhtháthaithe VCS a úsáid." + +msgid "Error" +msgstr "Earráid" + +msgid "" +"Remote settings are empty. VCS features that use the network may not work." +msgstr "" +"Tá socruithe cianda folamh. B'fhéidir nach n-oibreoidh gnéithe VCS a " +"úsáideann an líonra." + +msgid "Commit" +msgstr "Cuir i bhFeidhm" + +msgid "Open in editor" +msgstr "Oscail san eagarthóir" + +msgid "Discard changes" +msgstr "Ná sábháil athruithe" + +msgid "Staged Changes" +msgstr "Athruithe Céimnithe" + +msgid "Unstaged Changes" +msgstr "Athruithe Gan Athrú" + +msgid "Commit:" +msgstr "Tiomantas:" + +msgid "Date:" +msgstr "Dáta:" + +msgid "Subtitle:" +msgstr "Fotheideal:" + +msgid "Do you want to remove the %s branch?" +msgstr "An bhfuil fonn ort an brainse %s a bhaint?" + +msgid "Do you want to remove the %s remote?" +msgstr "An bhfuil fonn ort an cianda %s a bhaint?" + +msgid "Toggle Version Control Bottom Panel" +msgstr "Scoránaigh Painéal Bun Rialaithe Leagan" + +msgid "Create Version Control Metadata" +msgstr "Cruthaigh Meiteashonraí Rialaithe Leagain" + +msgid "Create VCS metadata files for:" +msgstr "Cruthaigh comhaid mheiteashonraí VCS le haghaidh:" + +msgid "Existing VCS metadata files will be overwritten." +msgstr "Déanfar comhaid mheiteashonraí VCS atá ann cheana a fhorscríobh." + +msgid "Local Settings" +msgstr "Socruithe Logánta" + +msgid "Apply" +msgstr "Iarratas a dhéanamh" + +msgid "VCS Provider" +msgstr "Soláthraí VCS" + +msgid "Connect to VCS" +msgstr "Ceangail le VCS" + +msgid "Remote Login" +msgstr "Logáil isteach cianda" + +msgid "Username" +msgstr "Ainm Úsáideora" + +msgid "Password" +msgstr "Pasfhocal" + +msgid "SSH Public Key Path" +msgstr "Cosán Eochair Phoiblí SSH" + +msgid "Select SSH public key path" +msgstr "Roghnaigh cosán eochracha poiblí SSH" + +msgid "SSH Private Key Path" +msgstr "Cosán Eochair Phríobháideach SSH" + +msgid "Select SSH private key path" +msgstr "Roghnaigh cosán eochair phríobháideach SSH" + +msgid "SSH Passphrase" +msgstr "Pasfhrása SSH" + +msgid "Detect new changes" +msgstr "Aimsigh athruithe nua" + +msgid "Discard all changes" +msgstr "Ná sábháil gach athrú" + +msgid "This operation is IRREVERSIBLE. Your changes will be deleted FOREVER." +msgstr "Tá an oibríocht seo dochúlaithe. Scriosfar do chuid athruithe GO DEO." + +msgid "Permanentally delete my changes" +msgstr "Scrios mo chuid athruithe go buan" + +msgid "Stage all changes" +msgstr "Céim gach athrú" + +msgid "Unstage all changes" +msgstr "Díscríobh gach athrú" + +msgid "Commit Message" +msgstr "Cuir Teachtaireacht i bhFeidhm" + +msgid "Commit Changes" +msgstr "Cuir Athruithe i bhFeidhm" + +msgid "Commit List" +msgstr "Cuir Liosta i bhFeidhm" + +msgid "Commit list size" +msgstr "Cuir méid an liosta i bhfeidhm" + +msgid "Branches" +msgstr "Craobhacha" + +msgid "Create New Branch" +msgstr "Cruthaigh Brainse Nua" + +msgid "Remove Branch" +msgstr "Bain Brainse" + +msgid "Branch Name" +msgstr "Ainm Brainse" + +msgid "Remotes" +msgstr "Cianda" + +msgid "Create New Remote" +msgstr "Cruthaigh Cianda Nua" + +msgid "Remove Remote" +msgstr "Bain Cianda" + +msgid "Remote Name" +msgstr "Ainm cianda" + +msgid "Remote URL" +msgstr "URL cianda" + +msgid "Fetch" +msgstr "Beir" + +msgid "Pull" +msgstr "Tarraingt" + +msgid "Push" +msgstr "Brúigh" + +msgid "Force Push" +msgstr "Fórsáil Brúigh" + +msgid "Modified" +msgstr "Athraithe" + +msgid "Renamed" +msgstr "Athainmnithe" + +msgid "Deleted" +msgstr "Scriosta" + +msgid "Typechange" +msgstr "Athrú cineáil" + +msgid "Unmerged" +msgstr "Gan sárú" + +msgid "View file diffs before committing them to the latest version" +msgstr "" +"Amharc ar dhifríochtaí comhaid sula ndéanann tú iad a thiomnú don leagan is " +"déanaí" + +msgid "View:" +msgstr "Amharc:" + +msgid "Split" +msgstr "Scoilt" + +msgid "Unified" +msgstr "Aontaithe" + +msgid "E constant (2.718282). Represents the base of the natural logarithm." +msgstr "E tairiseach (2.718282). Léiríonn sé seo bonn an logartaim nádúrtha." + +msgid "Epsilon constant (0.00001). Smallest possible scalar number." +msgstr "Tairiseach Epsilon (0.00001). An uimhir scalar is lú is féidir." + +msgid "Phi constant (1.618034). Golden ratio." +msgstr "Tairiseach Phi (1.618034). Cóimheas órga." + +msgid "Pi/4 constant (0.785398) or 45 degrees." +msgstr "Pi / 4 tairiseach (0.785398) nó 45 céim." + +msgid "Pi/2 constant (1.570796) or 90 degrees." +msgstr "Pi / 2 tairiseach (1.570796) nó 90 céim." + +msgid "Pi constant (3.141593) or 180 degrees." +msgstr "Pi tairiseach (3.141593) nó 180 céim." + +msgid "Tau constant (6.283185) or 360 degrees." +msgstr "Tau tairiseach (6.283185) nó 360 céim." + +msgid "Sqrt2 constant (1.414214). Square root of 2." +msgstr "Tairiseach Sqrt2 (1.414214). Fréamh cearnach de 2." + +msgid "Drag and drop nodes here to attach them." +msgstr "Tarraing agus scaoil nóid anseo chun iad a cheangal." + +msgid "Add Input" +msgstr "Cuir ionchur leis" + +msgid "Add Output" +msgstr "Cuir Aschur Leis" + +msgid "Float" +msgstr "Snámhphointe" + +msgid "Int" +msgstr "IntName" + +msgid "UInt" +msgstr "UInt" + +msgid "Vector2" +msgstr "Veicteoir 2" + +msgid "Vector3" +msgstr "Veicteoir 3" + +msgid "Vector4" +msgstr "Veicteoir 4" + +msgid "Boolean" +msgstr "BooleName" + +msgid "Sampler" +msgstr "SamplerName" + +msgid "[default]" +msgstr "[réamhshocrú]" + +msgid "" +"The 2D preview cannot correctly show the result retrieved from instance " +"parameter." +msgstr "" +"Ní féidir leis an réamhamharc 2D an toradh a aisghabháil ó pharaiméadar ásc a " +"thaispeáint i gceart." + +msgid "Add Input Port" +msgstr "Cuir Port Ionchurtha Leis" + +msgid "Add Output Port" +msgstr "Cuir Port Aschurtha Leis" + +msgid "Change Input Port Type" +msgstr "Athraigh Cineál an Phoirt Ionchurtha" + +msgid "Change Output Port Type" +msgstr "Athraigh Cineál an Phoirt Aschurtha" + +msgid "Change Input Port Name" +msgstr "Athraigh Ainm an Phoirt Ionchurtha" + +msgid "Change Output Port Name" +msgstr "Athraigh Ainm an Phoirt Aschurtha" + +msgid "Expand Output Port" +msgstr "Fairsingigh Port Aschurtha" + +msgid "Shrink Output Port" +msgstr "Laghdaigh Port Aschuir" + +msgid "Remove Input Port" +msgstr "Bain Port Ionchurtha" + +msgid "Remove Output Port" +msgstr "Bain Port Aschurtha" + +msgid "Set VisualShader Expression" +msgstr "Socraigh Slonn VisualShader" + +msgid "Resize VisualShader Node" +msgstr "Athraigh Méid Nód VisualShader" + +msgid "Hide Port Preview" +msgstr "Folaigh Réamhamharc an Phoirt" + +msgid "Show Port Preview" +msgstr "Taispeáin Réamhamharc Poirt" + +msgid "Set Frame Title" +msgstr "Socraigh Teideal an Fhráma" + +msgid "Set Tint Color" +msgstr "Socraigh Dath Tint" + +msgid "Toggle Frame Color" +msgstr "Scoránaigh Dath an Fhráma" + +msgid "Set Frame Color" +msgstr "Socraigh Dath an Fhráma" + +msgid "Toggle Auto Shrink" +msgstr "Scoránaigh Laghdaigh Uathoibríoch" + +msgid "Set Parameter Name" +msgstr "Socraigh Ainm an Phaiméadair" + +msgid "Set Input Default Port" +msgstr "Socraigh Port Réamhshocraithe Ionchurtha" + +msgid "Set Custom Node Option" +msgstr "Socraigh Rogha Nód Saincheaptha" + +msgid "Add Node to Visual Shader" +msgstr "Cuir Nód le Scáthóir Amhairc" + +msgid "Add Varying to Visual Shader: %s" +msgstr "Cuir Athrú leis an Scáthóir Amhairc: %s" + +msgid "Remove Varying from Visual Shader: %s" +msgstr "Bain Athrú ó Scáthóir Amhairc: %s" + +msgid "Move VisualShader Node(s)" +msgstr "Bog Nód(anna) VisualShader" + +msgid "Move and Attach VisualShader Node(s) to parent frame" +msgstr "Bog agus Ceangail Nód VisualShader le fráma tuismitheora" + +msgid "Insert node" +msgstr "Ionsáigh nód" + +msgid "Convert Constant Node(s) To Parameter(s)" +msgstr "Tiontaigh Nód (Nód) Tairiseach go Paraiméadar(í)" + +msgid "Convert Parameter Node(s) To Constant(s)" +msgstr "Tiontaigh nód paraiméadar go tairiseach (í)" + +msgid "Detach VisualShader Node(s) from Frame" +msgstr "Detach VisualShader Node(s) ó Frame" + +msgid "Delete VisualShader Node" +msgstr "Scrios Nód VisualShader" + +msgid "Delete VisualShader Node(s)" +msgstr "Scrios Nód(anna) VisualShader" + +msgid "Float Constants" +msgstr "Tairisigh Snámhphointe" + +msgid "Convert Constant(s) to Parameter(s)" +msgstr "Tiontaigh tairiseach (í) go paraiméadar (í)" + +msgid "Convert Parameter(s) to Constant(s)" +msgstr "Tiontaigh paraiméadar (í) go tairiseach (í)" + +msgid "Detach from Parent Frame" +msgstr "Scoite ó Fhráma Tuismitheora" + +msgid "Enable Auto Shrink" +msgstr "Cumasaigh Laghdaigh Go hUathoibríoch" + +msgid "Enable Tint Color" +msgstr "Cumasaigh Dath Tint" + +msgid "Duplicate VisualShader Node(s)" +msgstr "Dúblach VisualShader Node (í)" + +msgid "Paste VisualShader Node(s)" +msgstr "Greamaigh Nód(anna) VisualShader" + +msgid "Cut VisualShader Node(s)" +msgstr "Gearr Nód(anna) VisualShader" + +msgid "Visual Shader Input Type Changed" +msgstr "Athraíodh Cineál Ionchurtha an Scáthóra Amhairc" + +msgid "ParameterRef Name Changed" +msgstr "ParaiméadarRef Name changed" + +msgid "Varying Name Changed" +msgstr "Athraíodh ainm éagsúil" + +msgid "Set Constant: %s" +msgstr "Socraigh Tairiseach: %s" + +msgid "Invalid name for varying." +msgstr "Ainm neamhbhailí le haghaidh athraithe." + +msgid "Varying with that name is already exist." +msgstr "Tá éagsúlacht leis an ainm sin ann cheana féin." + +msgid "Add Node(s) to Visual Shader" +msgstr "Cuir nód(anna) le Scáthóir Amhairc" + +msgid "Vertex" +msgstr "Stuaic" + +msgid "Fragment" +msgstr "Blúire" + +msgid "Light" +msgstr "Solas" + +msgid "Process" +msgstr "Próiseas" + +msgid "Collide" +msgstr "Imbhualadh" + +msgid "Sky" +msgstr "Spéir" + +msgid "Fog" +msgstr "Ceo" + +msgid "Manage Varyings" +msgstr "Bainistigh Athruithe" + +msgid "Add Varying" +msgstr "Cuir Athrú Leis" + +msgid "Remove Varying" +msgstr "Bain Athrú" + +msgid "Show generated shader code." +msgstr "Taispeáin cód shader ginte." + +msgid "Generated Shader Code" +msgstr "Cód Scáthóra Ginte" + +msgid "Add Node" +msgstr "Cuir Nód Leis" + +msgid "Clear Copy Buffer" +msgstr "Glan an Maolán Cóipeála" + +msgid "Insert New Node" +msgstr "Ionsáigh Nód Nua" + +msgid "Insert New Reroute" +msgstr "Ionsáigh Athródú Nua" + +msgid "High-end node" +msgstr "Nód ard-deireadh" + +msgid "Create Shader Node" +msgstr "Cruthaigh Nód Scáthaigh" + +msgid "Create Shader Varying" +msgstr "Cruthaigh Scáthóir Éagsúil" + +msgid "Delete Shader Varying" +msgstr "Scrios Scáthóir ag Athrú" + +msgid "Color function." +msgstr "Feidhm datha." + +msgid "Color operator." +msgstr "Oibreoir datha." + +msgid "Grayscale function." +msgstr "Feidhm liathscála." + +msgid "Converts HSV vector to RGB equivalent." +msgstr "Athraíonn veicteoir HSV go coibhéis RGB." + +msgid "Converts RGB vector to HSV equivalent." +msgstr "Athraíonn veicteoir RGB go coibhéis HSV." + +msgid "Sepia function." +msgstr "Feidhm Sepia." + +msgid "Burn operator." +msgstr "Oibreoir dó." + +msgid "Darken operator." +msgstr "Oibreoir dorcha." + +msgid "Difference operator." +msgstr "Oibreoir difríochta." + +msgid "Dodge operator." +msgstr "Dodge oibreoir." + +msgid "HardLight operator." +msgstr "Oibreoir HardLight." + +msgid "Lighten operator." +msgstr "Oibreoir éadrom." + +msgid "Overlay operator." +msgstr "Oibreoir forleagan." + +msgid "Screen operator." +msgstr "Oibreoir scáileáin." + +msgid "SoftLight operator." +msgstr "Oibreoir SoftLight." + +msgid "Color constant." +msgstr "Tairiseach datha." + +msgid "Color parameter." +msgstr "Paraiméadar datha." + +msgid "(Fragment/Light mode only) Derivative function." +msgstr "(Blúire / Mód solais amháin) Feidhm dhíorthach." + +msgid "Returns the boolean result of the %s comparison between two parameters." +msgstr "Tuairisceáin toradh Boole na comparáide %s idir dhá pharaiméadar." + +msgid "Equal (==)" +msgstr "Cothrom (==)" + +msgid "Greater Than (>)" +msgstr "Níos mó ná (>)" + +msgid "Greater Than or Equal (>=)" +msgstr "Níos mó ná nó Comhionann (>=)" + +msgid "" +"Returns an associated vector if the provided scalars are equal, greater or " +"less." +msgstr "" +"Filleann veicteoir gaolmhar má tá na scalars atá curtha ar fáil comhionann, " +"níos mó nó níos lú." + +msgid "" +"Returns the boolean result of the comparison between INF and a scalar " +"parameter." +msgstr "" +"Tuairisceáin toradh Boole na comparáide idir INF agus paraiméadar scalar." + +msgid "" +"Returns the boolean result of the comparison between NaN and a scalar " +"parameter." +msgstr "" +"Tuairisceáin toradh Boole na comparáide idir NaN agus paraiméadar scalar." + +msgid "Less Than (<)" +msgstr "Níos lú ná (<)" + +msgid "Less Than or Equal (<=)" +msgstr "Níos lú ná nó Comhionann (<=)" + +msgid "Not Equal (!=)" +msgstr "Níl sé cothrom (!=)" + +msgid "" +"Returns an associated 2D vector if the provided boolean value is true or " +"false." +msgstr "" +"Filleann veicteoir gaolmhar 2D má tá an luach Boole a sholáthraítear fíor nó " +"bréagach." + +msgid "" +"Returns an associated 3D vector if the provided boolean value is true or " +"false." +msgstr "" +"Filleann veicteoir gaolmhar 3D má tá an luach Boole a sholáthraítear fíor nó " +"bréagach." + +msgid "" +"Returns an associated 4D vector if the provided boolean value is true or " +"false." +msgstr "" +"Filleann veicteoir gaolmhar 4D má tá an luach Boole a sholáthraítear fíor nó " +"bréagach." + +msgid "" +"Returns an associated boolean if the provided boolean value is true or false." +msgstr "" +"Tuairisceáin boole gaolmhar má tá an luach Boole ar fáil fíor nó bréagach." + +msgid "" +"Returns an associated floating-point scalar if the provided boolean value is " +"true or false." +msgstr "" +"Tuairisceáin scalar snámhphointe gaolmhar má tá an luach Boole ar fáil fíor " +"nó bréagach." + +msgid "" +"Returns an associated integer scalar if the provided boolean value is true or " +"false." +msgstr "" +"Tuairisceáin scalar slánuimhir gaolmhar má tá an luach Boole ar fáil fíor nó " +"bréagach." + +msgid "" +"Returns an associated transform if the provided boolean value is true or " +"false." +msgstr "" +"Tuairisceáin claochlú gaolmhar má tá an luach Boole ar fáil fíor nó bréagach." + +msgid "" +"Returns an associated unsigned integer scalar if the provided boolean value " +"is true or false." +msgstr "" +"Tuairisceáin scalar slánuimhir gan síniú gaolmhar má tá an luach Boole ar " +"fáil fíor nó bréagach." + +msgid "Returns the boolean result of the comparison between two parameters." +msgstr "Tuairisceáin toradh Boole na comparáide idir dhá pharaiméadar." + +msgid "" +"Returns the boolean result of the comparison between INF (or NaN) and a " +"scalar parameter." +msgstr "" +"Tuairisceáin toradh Boole na comparáide idir INF (nó NaN) agus paraiméadar " +"scalar." + +msgid "Boolean constant." +msgstr "Tairiseach Boole." + +msgid "Boolean parameter." +msgstr "Paraiméadar Boole." + +msgid "Translated to '%s' in Godot Shading Language." +msgstr "Aistrithe go '%s' i dteanga scáthaithe Godot." + +msgid "'%s' input parameter for all shader modes." +msgstr "Paraiméadar ionchurtha '%s' do gach modh scáthaithe." + +msgid "Input parameter." +msgstr "Paraiméadar ionchurtha." + +msgid "'%s' input parameter for vertex and fragment shader modes." +msgstr "" +"Paraiméadar ionchurtha '%s' le haghaidh modhanna stuaic agus scáthóra " +"ilroinnte." + +msgid "'%s' input parameter for fragment and light shader modes." +msgstr "" +"Paraiméadar ionchuir '%s' le haghaidh modhanna blúire agus scáthaithe solais." + +msgid "'%s' input parameter for fragment shader mode." +msgstr "Paraiméadar ionchurtha '%s' le haghaidh mód scáthaithe ilroinnte." + +msgid "'%s' input parameter for sky shader mode." +msgstr "Paraiméadar ionchurtha '%s' don mhód scáthaithe spéire." + +msgid "'%s' input parameter for fog shader mode." +msgstr "Paraiméadar ionchurtha '%s' le haghaidh mód scáthaithe ceo." + +msgid "'%s' input parameter for light shader mode." +msgstr "Paraiméadar ionchurtha '%s' don mhód scáthaithe solais." + +msgid "'%s' input parameter for vertex shader mode." +msgstr "Paraiméadar ionchurtha '%s' le haghaidh mód shader vertex." + +msgid "'%s' input parameter for start shader mode." +msgstr "Paraiméadar ionchurtha '%s' don mhód scáthaithe tosaithe." + +msgid "'%s' input parameter for process shader mode." +msgstr "Paraiméadar ionchurtha '%s' le haghaidh mód scáthaithe próisis." + +msgid "'%s' input parameter for start and process shader modes." +msgstr "" +"Paraiméadar ionchurtha '%s' le haghaidh modhanna scáthaithe tosaithe agus " +"próisis." + +msgid "'%s' input parameter for process and collide shader modes." +msgstr "" +"Paraiméadar ionchuir '%s' le haghaidh modhanna scáthaithe próisis agus " +"imbhuailte." + +msgid "" +"A node for help to multiply a position input vector by rotation using " +"specific axis. Intended to work with emitters." +msgstr "" +"Nód chun cabhair a thabhairt veicteoir ionchuir suímh a iolrú trí rothlú ag " +"baint úsáide as ais ar leith. Tá sé beartaithe oibriú le hastaírí." + +msgid "Float function." +msgstr "Feidhm snámhphointe." + +msgid "Float operator." +msgstr "Oibreoir snámhphointe." + +msgid "Integer function." +msgstr "Feidhm slánuimhir." + +msgid "Integer operator." +msgstr "Oibreoir slánuimhir." + +msgid "Unsigned integer function." +msgstr "Feidhm slánuimhir gan síniú." + +msgid "Unsigned integer operator." +msgstr "Oibreoir slánuimhir gan síniú." + +msgid "Returns the absolute value of the parameter." +msgstr "Tuairisceáin luach absalóideach an pharaiméadair." + +msgid "Returns the arc-cosine of the parameter." +msgstr "Tuairisceáin an stua-cosine an pharaiméadair." + +msgid "Returns the inverse hyperbolic cosine of the parameter." +msgstr "Tuairisceáin an cosine hyperbolic inbhéartach an pharaiméadair." + +msgid "Returns the arc-sine of the parameter." +msgstr "Tuairisceáin an stua-sine an pharaiméadair." + +msgid "Returns the inverse hyperbolic sine of the parameter." +msgstr "Tuairisceáin an sine hyperbolic inbhéartach an pharaiméadair." + +msgid "Returns the arc-tangent of the parameter." +msgstr "Tuairisceáin an stua-tangent an pharaiméadair." + +msgid "Returns the arc-tangent of the parameters." +msgstr "Tuairisceáin an stua-tangent de na paraiméadair." + +msgid "Returns the inverse hyperbolic tangent of the parameter." +msgstr "Tuairisceáin an tangent hyperbolic inbhéartach an pharaiméadair." + +msgid "Returns the result of bitwise NOT (~a) operation on the integer." +msgstr "Tuairisceáin an toradh ar bitwise NACH (~ a) oibriú ar an slánuimhir." + +msgid "" +"Returns the result of bitwise NOT (~a) operation on the unsigned integer." +msgstr "" +"Tuairisceáin an toradh ar bitwise NACH (~ a) oibriú ar an slánuimhir unsigned." + +msgid "" +"Finds the nearest integer that is greater than or equal to the parameter." +msgstr "" +"Aimsíonn seo an slánuimhir is gaire atá níos mó ná nó cothrom leis an " +"bparaiméadar." + +msgid "Constrains a value to lie between two further values." +msgstr "Cuireann sé srian ar luach a bheidh idir dhá luach eile." + +msgid "Returns the cosine of the parameter." +msgstr "Tuairisceáin an cosine an paraiméadar." + +msgid "Returns the hyperbolic cosine of the parameter." +msgstr "Tuairisceáin an cosine hyperbolic an pharaiméadair." + +msgid "Converts a quantity in radians to degrees." +msgstr "Athraíonn cainníocht i radians go céimeanna." + +msgid "" +"(Fragment/Light mode only) (Scalar) Derivative in 'x' using local " +"differencing." +msgstr "" +"(Blúire / Mód solais amháin) (Scalar) Díorthach i 'x' ag baint úsáide as " +"difríocht áitiúil." + +msgid "" +"(Fragment/Light mode only) (Scalar) Derivative in 'y' using local " +"differencing." +msgstr "" +"(Blúire / Mód solais amháin) (Scalar) Díorthach i 'y' ag baint úsáide as " +"difríocht áitiúil." + +msgid "Base-e Exponential." +msgstr "Bonn-e Easpónantúil." + +msgid "Base-2 Exponential." +msgstr "Bonn-2 Easpónantúil." + +msgid "Finds the nearest integer less than or equal to the parameter." +msgstr "" +"Aimsíonn seo an slánuimhir is gaire níos lú ná nó cothrom leis an " +"bparaiméadar." + +msgid "Computes the fractional part of the argument." +msgstr "Ríomhann sé an chuid chodánach den argóint." + +msgid "Returns the inverse of the square root of the parameter." +msgstr "Tuairisceáin an inbhéartach an fhréamh cearnach an pharaiméadair." + +msgid "Natural logarithm." +msgstr "Logartam nádúrtha." + +msgid "Base-2 logarithm." +msgstr "Logartam bonn-2." + +msgid "Returns the greater of two values." +msgstr "Tuairisceáin an níos mó de dhá luach." + +msgid "Returns the lesser of two values." +msgstr "Tuairisceáin an ceann is lú de dhá luach." + +msgid "Linear interpolation between two scalars." +msgstr "Idirshuíomh líneach idir dhá scalars." + +msgid "Performs a fused multiply-add operation (a * b + c) on scalars." +msgstr "Déanann sé oibríocht iolraithe comhleáite (a * b + c) ar scalars." + +msgid "Returns the opposite value of the parameter." +msgstr "Tuairisceáin luach os coinne an pharaiméadair." + +msgid "1.0 - scalar" +msgstr "1.0 - Scalar" + +msgid "" +"Returns the value of the first parameter raised to the power of the second." +msgstr "" +"Tuairisceáin luach an chéad pharaiméadair a ardaíodh le cumhacht an dara." + +msgid "Converts a quantity in degrees to radians." +msgstr "Athraíonn cainníocht i gcéimeanna go radians." + +msgid "1.0 / scalar" +msgstr "1.0 / scálach" + +msgid "Finds the nearest integer to the parameter." +msgstr "Aimsíonn seo an slánuimhir is gaire don pharaiméadar." + +msgid "Finds the nearest even integer to the parameter." +msgstr "Aimsíonn seo an slánuimhir is gaire fiú don pharaiméadar." + +msgid "Clamps the value between 0.0 and 1.0." +msgstr "Clampaí an luach idir 0.0 agus 1.0." + +msgid "Extracts the sign of the parameter." +msgstr "Sleachta an comhartha an paraiméadar." + +msgid "Returns the sine of the parameter." +msgstr "Tuairisceáin an sine an paraiméadar." + +msgid "Returns the hyperbolic sine of the parameter." +msgstr "Tuairisceáin an sine hyperbolic an pharaiméadair." + +msgid "Returns the square root of the parameter." +msgstr "Tuairisceáin an fhréamh cearnach an pharaiméadair." + +msgid "" +"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using " +"Hermite polynomials." +msgstr "" +"Feidhm SmoothStep (scalar (edge0), scalar (edge1), scalar (x) ).\n" +"\n" +"Tuairisceáin 0.0 má tá 'x' níos lú ná 'edge0' agus 1.0 má tá x níos mó ná " +"'edge1'. Seachas sin déantar an luach fillte a idirshuíomh idir 0.0 agus 1.0 " +"ag baint úsáide as polynomials Hermite." + +msgid "" +"Step function( scalar(edge), scalar(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" +"Céim fheidhm (scalar (imeall), scalar (x) ).\n" +"\n" +"Tuairisceáin 0. 0 má tá 'x' níos lú ná 'imeall' agus ar shlí eile 1.0." + +msgid "" +"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and 'y'." +msgstr "" +"(Blúire / Mód solais amháin) (Scalar) Suim an fhíordhíorthaigh in 'x' agus " +"'y'." + +msgid "Returns the tangent of the parameter." +msgstr "Tuairisceáin an tangent an paraiméadar." + +msgid "Returns the hyperbolic tangent of the parameter." +msgstr "Tuairisceáin an tangent hyperbolic an paraiméadar." + +msgid "Finds the truncated value of the parameter." +msgstr "Aimsíonn seo luach teasctha an pharaiméadair." + +msgid "Sums two floating-point scalars." +msgstr "Suimeanna dhá scalar snámhphointe." + +msgid "Sums two integer scalars." +msgstr "Suimeanna dhá scalar slánuimhir." + +msgid "Sums two unsigned integer scalars." +msgstr "Suimeanna dhá scalars slánuimhir gan síniú." + +msgid "Returns the result of bitwise AND (a & b) operation for two integers." +msgstr "Filleann sé toradh oibríocht bitwise AND (a & b) do dhá shlánuimhir." + +msgid "" +"Returns the result of bitwise AND (a & b) operation for two unsigned integers." +msgstr "" +"Filleann sé toradh oibríocht bitwise AND (a & b) do dhá shlánuimhir gan síniú." + +msgid "" +"Returns the result of bitwise left shift (a << b) operation on the integer." +msgstr "" +"Filleann sé toradh na hoibríochta seal beag ar chlé (a <<b) ar an tslánuimhir." + +msgid "" +"Returns the result of bitwise left shift (a << b) operation on the unsigned " +"integer." +msgstr "" +"Filleann sé toradh oibríocht seala clé bitwise (a <<b) ar an tslánuimhir gan " +"síniú." + +msgid "Returns the result of bitwise OR (a | b) operation for two integers." +msgstr "" +"Tuairisceáin an toradh bitwise NÓ (a | b) oibriú ar feadh dhá slánuimhir." + +msgid "" +"Returns the result of bitwise OR (a | b) operation for two unsigned integers." +msgstr "" +"Tuairisceáin an toradh bitwise NÓ (a | b) oibriú le haghaidh dhá slánuimhir " +"unsigned." + +msgid "" +"Returns the result of bitwise right shift (a >> b) operation on the integer." +msgstr "" +"Filleann sé toradh oibríocht aistrithe ar dheis bitwise (a >> b) ar an " +"tslánuimhir." + +msgid "" +"Returns the result of bitwise right shift (a >> b) operation on the unsigned " +"integer." +msgstr "" +"Filleann sé toradh na hoibríochta bitwise right shift (a >> b) ar an " +"tslánuimhir gan síniú." + +msgid "Returns the result of bitwise XOR (a ^ b) operation on the integer." +msgstr "" +"Tuairisceáin an toradh ar oibríocht XOR bitwise (a ^ b) ar an slánuimhir." + +msgid "" +"Returns the result of bitwise XOR (a ^ b) operation on the unsigned integer." +msgstr "" +"Tuairisceáin an toradh ar oibríocht XOR bitwise (a ^ b) ar an slánuimhir " +"neamhshínithe." + +msgid "Divides two floating-point scalars." +msgstr "Roinneann sé dhá scalars snámhphointe." + +msgid "Divides two integer scalars." +msgstr "Roinneann sé dhá scalar slánuimhir." + +msgid "Divides two unsigned integer scalars." +msgstr "Roinneann seo dhá scalar slánuimhir gan síniú." + +msgid "Multiplies two floating-point scalars." +msgstr "Iolraíonn sé dhá scalars snámhphointe." + +msgid "Multiplies two integer scalars." +msgstr "Iolraíonn sé dhá scalars slánuimhir." + +msgid "Multiplies two unsigned integer scalars." +msgstr "Iolraíonn sé dhá scalars slánuimhir gan síniú." + +msgid "Returns the remainder of the two floating-point scalars." +msgstr "Filleann sé an chuid eile den dá scalars snámhphointe." + +msgid "Returns the remainder of the two integer scalars." +msgstr "Tuairisceáin an chuid eile den dá scalar slánuimhir." + +msgid "Returns the remainder of the two unsigned integer scalars." +msgstr "Tuairisceáin an chuid eile den dá scalar slánuimhir gan síniú." + +msgid "Subtracts two floating-point scalars." +msgstr "Dealaíonn seo dhá scalars snámhphointe." + +msgid "Subtracts two integer scalars." +msgstr "Dealaíonn sé dhá scalar slánuimhir." + +msgid "Subtracts two unsigned integer scalars." +msgstr "Dealaíonn seo dhá scalars slánuimhir gan síniú." + +msgid "Scalar floating-point constant." +msgstr "Tairiseach snámhphointe scalar." + +msgid "Scalar integer constant." +msgstr "Tairiseach slánuimhir scalar." + +msgid "Scalar unsigned integer constant." +msgstr "Scalar tairiseach slánuimhir gan síniú." + +msgid "Scalar floating-point parameter." +msgstr "Paraiméadar snámhphointe scalar." + +msgid "Scalar integer parameter." +msgstr "Paraiméadar slánuimhir scalar." + +msgid "Scalar unsigned integer parameter." +msgstr "Paraiméadar slánuimhir gan síniú scalar." + +msgid "Converts screen UV to a SDF." +msgstr "Athraíonn UV scáileán go SDF." + +msgid "Casts a ray against the screen SDF and returns the distance travelled." +msgstr "" +"Caitheann sé ga i gcoinne an SDF scáileáin agus filleann sé an t-achar a " +"thaistealaítear." + +msgid "Converts a SDF to screen UV." +msgstr "Athraíonn SDF chun UV a scagadh." + +msgid "Performs a SDF texture lookup." +msgstr "Déanann sé cuardach uigeachta SDF." + +msgid "Performs a SDF normal texture lookup." +msgstr "Déanann sé gnáthchuardach uigeachta SDF." + +msgid "Function to be applied on texture coordinates." +msgstr "Feidhm le cur i bhfeidhm ar chomhordanáidí uigeachta." + +msgid "Polar coordinates conversion applied on texture coordinates." +msgstr "Comhordanáidí Polar comhshó i bhfeidhm ar chomhordanáidí uigeachta." + +msgid "Perform the cubic texture lookup." +msgstr "Déan an lookup uigeacht ciúbach." + +msgid "Perform the curve texture lookup." +msgstr "Déan an cuardach uigeachta cuar." + +msgid "Perform the three components curve texture lookup." +msgstr "Déan an cuardach uigeachta cuar trí chomhpháirt." + +msgid "" +"Returns the depth value obtained from the depth prepass in a linear space." +msgstr "" +"Tuairisceáin an luach doimhneachta a fhaightear ón prepass doimhneacht i spás " +"líneach." + +msgid "Reconstructs the World Position of the Node from the depth texture." +msgstr "Athchruthaíonn sé Seasamh Domhanda an Nód ón uigeacht doimhneachta." + +msgid "Unpacks the Screen Normal Texture in World Space" +msgstr "Díphacáil gnáthuigeacht an scáileáin i spás an domhain" + +msgid "Perform the 2D texture lookup." +msgstr "Déan an cuardach uigeachta 2D." + +msgid "Perform the 2D-array texture lookup." +msgstr "Déan an lookup uigeachta 2D-eagar." + +msgid "Perform the 3D texture lookup." +msgstr "Déan an cuardach uigeachta 3D." + +msgid "Apply panning function on texture coordinates." +msgstr "Cuir feidhm panning i bhfeidhm ar chomhordanáidí uigeachta." + +msgid "Apply scaling function on texture coordinates." +msgstr "Cuir feidhm scálaithe i bhfeidhm ar chomhordanáidí uigeachta." + +msgid "Cubic texture parameter lookup." +msgstr "Lookup paraiméadar uigeacht ciúbach." + +msgid "2D texture parameter lookup." +msgstr "Lookup paraiméadar uigeachta 2D." + +msgid "2D texture parameter lookup with triplanar." +msgstr "Lookup paraiméadar uigeachta 2D le triplanar." + +msgid "2D array of textures parameter lookup." +msgstr "Sraith 2D de lookup paraiméadar uigeachtaí." + +msgid "3D texture parameter lookup." +msgstr "Lookup paraiméadar uigeachta 3D." + +msgid "Transform function." +msgstr "Trasfhoirmigh feidhm." + +msgid "Transform operator." +msgstr "Oibreoir trasfhoirmithe." + +msgid "" +"Calculate the outer product of a pair of vectors.\n" +"\n" +"OuterProduct treats the first parameter 'c' as a column vector (matrix with " +"one column) and the second parameter 'r' as a row vector (matrix with one " +"row) and does a linear algebraic matrix multiply 'c * r', yielding a matrix " +"whose number of rows is the number of components in 'c' and whose number of " +"columns is the number of components in 'r'." +msgstr "" +"Ríomh táirge seachtrach péire veicteoirí.\n" +"\n" +"Déileálann OuterProduct leis an gcéad pharaiméadar 'c' mar veicteoir colúin " +"(maitrís le colún amháin) agus an dara paraiméadar 'r' mar veicteoir as a " +"chéile (maitrís le sraith amháin) agus méadaíonn maitrís ailgéabrach líneach " +"'c * r', rud a thugann maitrís arb é líon na sraitheanna líon na " +"gcomhpháirteanna i 'c' agus arb é líon na gcolún líon na gcomhpháirteanna in " +"'r'." + +msgid "Composes transform from four vectors." +msgstr "Athraíonn na cumadóirí ó cheithre veicteoir." + +msgid "Decomposes transform to four vectors." +msgstr "Athraíonn dianscaoileadh go ceithre veicteoir." + +msgid "Calculates the determinant of a transform." +msgstr "Ríomhann sé deitéarmanant claochlaithe." + +msgid "" +"Calculates how the object should face the camera to be applied on Model View " +"Matrix output port for 3D objects." +msgstr "" +"Ríomhann sé conas ba chóir don réad aghaidh a thabhairt ar an gceamara atá le " +"cur i bhfeidhm ar phort aschuir Model View Matrix le haghaidh rudaí 3D." + +msgid "Calculates the inverse of a transform." +msgstr "Ríomhann sé inbhéartach claochlaithe." + +msgid "Calculates the transpose of a transform." +msgstr "Ríomhann seo trasuíomh claochlaithe." + +msgid "Sums two transforms." +msgstr "Suimeanna dhá chlaochlú." + +msgid "Divides two transforms." +msgstr "Roinneann sé dhá chlaochlú." + +msgid "Multiplies two transforms." +msgstr "Iolraíonn sé dhá chlaochlú." + +msgid "Performs per-component multiplication of two transforms." +msgstr "Déanann sé iolrú in aghaidh na comhpháirte ar dhá chlaochlú." + +msgid "Subtracts two transforms." +msgstr "Dealaíonn sé dhá chlaochlú." + +msgid "Multiplies vector by transform." +msgstr "Iolraíonn veicteoir trí athrú." + +msgid "Transform constant." +msgstr "Trasfhoirmigh tairiseach." + +msgid "Transform parameter." +msgstr "Paraiméadar trasfhoirmithe." + +msgid "" +"The distance fade effect fades out each pixel based on its distance to " +"another object." +msgstr "" +"Céimníonn an éifeacht fadaithe amach gach picteilín bunaithe ar a fhad go " +"réad eile." + +msgid "" +"The proximity fade effect fades out each pixel based on its distance to " +"another object." +msgstr "" +"Céimníonn an éifeacht céimnithe cóngarachta amach gach picteilín bunaithe ar " +"a fhad le réad eile." + +msgid "Returns a random value between the minimum and maximum input values." +msgstr "" +"Tuairisceáin luach randamach idir na luachanna ionchuir íosta agus uasta." + +msgid "Remaps a given input from the input range to the output range." +msgstr "Remaps ionchur ar leith ón raon ionchur go dtí an raon aschur." + +msgid "" +"Builds a rotation matrix from the given axis and angle, multiply the input " +"vector by it and returns both this vector and a matrix." +msgstr "" +"Tógann sé maitrís rothlaithe ón ais agus ón uillinn a thugtar, méadaigh an " +"veicteoir ionchuir leis agus filleann sé an veicteoir seo agus maitrís araon." + +msgid "Vector function." +msgstr "Feidhm veicteora." + +msgid "Vector operator." +msgstr "Oibreoir veicteora." + +msgid "Composes vector from scalars." +msgstr "Cum veicteoir ó scalars." + +msgid "Decomposes vector to scalars." +msgstr "Díscaoileann veicteoir go scalars." + +msgid "Composes 2D vector from two scalars." +msgstr "Comhdhéanta veicteoir 2D ó dhá scalars." + +msgid "Decomposes 2D vector to two scalars." +msgstr "Díscaoileann veicteoir 2D go dhá scalars." + +msgid "Composes 3D vector from three scalars." +msgstr "Comhdhéanta veicteoir 3D ó thrí scalars." + +msgid "Decomposes 3D vector to three scalars." +msgstr "Díscaoileann veicteoir 3D go trí scalars." + +msgid "Composes 4D vector from four scalars." +msgstr "Comhdhéanta veicteoir 4D ó cheithre scalars." + +msgid "Decomposes 4D vector to four scalars." +msgstr "Díscaoileann veicteoir 4D go ceithre scalars." + +msgid "Calculates the cross product of two vectors." +msgstr "Ríomhann sé trastháirge dhá veicteoir." + +msgid "" +"(Fragment/Light mode only) (Vector) Derivative in 'x' using local " +"differencing." +msgstr "" +"(Blúire / Mód solais amháin) (Veicteoir) Díorthach i 'x' ag baint úsáide as " +"difríocht áitiúil." + +msgid "" +"(Fragment/Light mode only) (Vector) Derivative in 'y' using local " +"differencing." +msgstr "" +"(Blúire / Mód solais amháin) (Veicteoir) Díorthach i 'y' ag baint úsáide as " +"difríocht áitiúil." + +msgid "Returns the distance between two points." +msgstr "Filleann sé an fad idir dhá phointe." + +msgid "Calculates the dot product of two vectors." +msgstr "Ríomhann seo an táirge ponc de dhá veicteoir." + +msgid "" +"Returns the vector that points in the same direction as a reference vector. " +"The function has three vector parameters : N, the vector to orient, I, the " +"incident vector, and Nref, the reference vector. If the dot product of I and " +"Nref is smaller than zero the return value is N. Otherwise -N is returned." +msgstr "" +"Tuairisceáin an veicteoir a léiríonn sa treo céanna le veicteoir tagartha. Tá " +"trí pharaiméadar veicteora ag an bhfeidhm: N, an veicteoir le treorú, I, an " +"veicteoir teagmhais, agus Nref, an veicteoir tagartha. Má tá an táirge ponc " +"de I agus Nref níos lú ná nialas is é an luach tuairisceáin N. Seachas sin -N " +"ar ais." + +msgid "" +"Returns falloff based on the dot product of surface normal and view direction " +"of camera (pass associated inputs to it)." +msgstr "" +"Tuairisceáin falloff bunaithe ar an táirge ponc dromchla gnáth agus treo " +"féachaint ar cheamara (pas ionchuir a bhaineann leis)." + +msgid "Calculates the length of a vector." +msgstr "Ríomhann seo fad veicteora." + +msgid "Linear interpolation between two vectors." +msgstr "Idirshuíomh líneach idir dhá veicteoir." + +msgid "Linear interpolation between two vectors using scalar." +msgstr "Idirshuíomh líneach idir dhá veicteoir ag baint úsáide as scalar." + +msgid "Performs a fused multiply-add operation (a * b + c) on vectors." +msgstr "Déanann sé oibríocht iolraithe comhleáite (a * b + c) ar veicteoirí." + +msgid "Calculates the normalize product of vector." +msgstr "Ríomhann seo an táirge normalú veicteoir." + +msgid "1.0 - vector" +msgstr "1.0 - veicteoir" + +msgid "1.0 / vector" +msgstr "1.0 / veicteoir" + +msgid "" +"Returns the vector that points in the direction of reflection ( a : incident " +"vector, b : normal vector )." +msgstr "" +"Tuairisceáin an veicteoir go pointí i dtreo an mhachnaimh (a: veicteoir " +"teagmhas, b: veicteoir gnáth)." + +msgid "Returns the vector that points in the direction of refraction." +msgstr "Tuairisceáin an veicteoir a léiríonn i dtreo athraonta." + +msgid "" +"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using " +"Hermite polynomials." +msgstr "" +"Feidhm SmoothStep (veicteoir (edge0), veicteoir (edge1), veicteoir (x) ).\n" +"\n" +"Tuairisceáin 0.0 má tá 'x' níos lú ná 'edge0' agus 1.0 má tá 'x' níos mó ná " +"'edge1'. Seachas sin déantar an luach fillte a idirshuíomh idir 0.0 agus 1.0 " +"ag baint úsáide as polynomials Hermite." + +msgid "" +"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using " +"Hermite polynomials." +msgstr "" +"Feidhm SmoothStep (scalar (edge0), scalar (edge1), veicteoir(x).\n" +"\n" +"Tuairisceáin 0.0 má tá 'x' níos lú ná 'edge0' agus 1.0 má tá 'x' níos mó ná " +"'edge1'. Seachas sin déantar an luach fillte a idirshuíomh idir 0.0 agus 1.0 " +"ag baint úsáide as polynomials Hermite." + +msgid "" +"Step function( vector(edge), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" +"Céim fheidhm (veicteoir (imeall), veicteoir (x) ).\n" +"\n" +"Tuairisceáin 0. 0 má tá 'x' níos lú ná 'imeall' agus ar shlí eile 1.0." + +msgid "" +"Step function( scalar(edge), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" +"Céim fheidhm (scalar (imeall), veicteoir(x) ).\n" +"\n" +"Tuairisceáin 0. 0 má tá 'x' níos lú ná 'imeall' agus ar shlí eile 1.0." + +msgid "" +"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and 'y'." +msgstr "" +"(Blúire / Mód solais amháin) (Veicteoir) Suim an fhíordhíorthaigh in 'x' agus " +"'y'." + +msgid "Adds 2D vector to 2D vector." +msgstr "Cuireann veicteoir 2D le veicteoir 2D." + +msgid "Adds 3D vector to 3D vector." +msgstr "Cuireann veicteoir 3D le veicteoir 3D." + +msgid "Adds 4D vector to 4D vector." +msgstr "Cuireann veicteoir 4D le veicteoir 4D." + +msgid "Divides 2D vector by 2D vector." +msgstr "Roinneann veicteoir 2D le veicteoir 2D." + +msgid "Divides 3D vector by 3D vector." +msgstr "Roinneann veicteoir 3D le veicteoir 3D." + +msgid "Divides 4D vector by 4D vector." +msgstr "Roinneann veicteoir 4D le veicteoir 4D." + +msgid "Multiplies 2D vector by 2D vector." +msgstr "Iolraíonn veicteoir 2D faoi veicteoir 2D." + +msgid "Multiplies 3D vector by 3D vector." +msgstr "Iolraíonn veicteoir 3D faoi veicteoir 3D." + +msgid "Multiplies 4D vector by 4D vector." +msgstr "Iolraíonn veicteoir 4D faoi veicteoir 4D." + +msgid "Returns the remainder of the two 2D vectors." +msgstr "Filleann sé an chuid eile den dá veicteoir 2D." + +msgid "Returns the remainder of the two 3D vectors." +msgstr "Filleann sé an chuid eile den dá veicteoir 3D." + +msgid "Returns the remainder of the two 4D vectors." +msgstr "Filleann sé an chuid eile den dá veicteoir 4D." + +msgid "Subtracts 2D vector from 2D vector." +msgstr "Dealaíonn veicteoir 2D ó veicteoir 2D." + +msgid "Subtracts 3D vector from 3D vector." +msgstr "Dealaíonn veicteoir 3D ó veicteoir 3D." + +msgid "Subtracts 4D vector from 4D vector." +msgstr "Dealaíonn veicteoir 4D ó veicteoir 4D." + +msgid "2D vector constant." +msgstr "Tairiseach veicteoir 2D." + +msgid "2D vector parameter." +msgstr "Paraiméadar veicteora 2D." + +msgid "3D vector constant." +msgstr "Tairiseach veicteoir 3D." + +msgid "3D vector parameter." +msgstr "Paraiméadar veicteora 3D." + +msgid "4D vector constant." +msgstr "Tairiseach veicteoir 4D." + +msgid "4D vector parameter." +msgstr "Paraiméadar veicteora 4D." + +msgid "" +"A rectangular area with a description string for better graph organization." +msgstr "" +"Limistéar dronuilleogach le teaghrán cur síos d'eagraíocht graf níos fearr." + +msgid "" +"Custom Godot Shader Language expression, with custom amount of input and " +"output ports. This is a direct injection of code into the vertex/fragment/" +"light function, do not use it to write the function declarations inside." +msgstr "" +"Saincheaptha Godot Shader Teanga léiriú, le méid saincheaptha ionchur agus " +"calafoirt aschur. Is instealladh díreach cód é seo isteach sa fheidhm " +"vertex / fragment / light, ná húsáid é chun na dearbhuithe feidhme a scríobh " +"taobh istigh." + +msgid "" +"Custom Godot Shader Language expression, which is placed on top of the " +"resulted shader. You can place various function definitions inside and call " +"it later in the Expressions. You can also declare varyings, parameters and " +"constants." +msgstr "" +"Custom Godot Shader Language expression, a chuirtear ar bharr an shader mar " +"thoradh air. Is féidir leat sainmhínithe feidhme éagsúla a chur taobh istigh " +"agus é a ghlaoch níos déanaí sna Nathanna. Is féidir leat a dhearbhú freisin " +"éagsúla, paraiméadair agus tairisigh." + +msgid "A reference to an existing parameter." +msgstr "Tagairt do pharaiméadar atá ann cheana." + +msgid "Get varying parameter." +msgstr "Faigh paraiméadar éagsúla." + +msgid "Set varying parameter." +msgstr "Socraigh paraiméadar éagsúil." + +msgid "" +"Reroute connections freely, can be used to connect multiple input ports to " +"single output port." +msgstr "" +"Is féidir naisc athródaithe faoi shaoirse a úsáid chun calafoirt ionchuir " +"iolracha a nascadh le calafort aschuir aonair." + +msgid "Edit Visual Property: %s" +msgstr "Cuir Amharc-Mhaoin in Eagar: %s" + +msgid "Visual Shader Mode Changed" +msgstr "Athraíodh mód scáthóra amhairc" + +msgid "Voxel GI data is not local to the scene." +msgstr "Níl sonraí Voxel GI áitiúil don radharc." + +msgid "Voxel GI data is part of an imported resource." +msgstr "Tá sonraí Voxel GI mar chuid d'acmhainn allmhairithe." + +msgid "Voxel GI data is an imported resource." +msgstr "Is acmhainn allmhairithe é sonraí Voxel GI." + +msgid "Bake VoxelGI" +msgstr "Bácáil VoxelGI" + +msgid "Select path for VoxelGI Data File" +msgstr "Roghnaigh conair le haghaidh Comhad Sonraí VoxelGI" + +msgid "Go Online and Open Asset Library" +msgstr "Téigh ar Líne agus Leabharlann Sócmhainní Oscailte" + +msgid "Are you sure to run %d projects at once?" +msgstr "An bhfuil tú cinnte go rithfidh tú %d tionscadal ag an am céanna?" + +msgid "" +"Can't run project: Project has no main scene defined.\n" +"Please edit the project and set the main scene in the Project Settings under " +"the \"Application\" category." +msgstr "" +"Ní féidir tionscadal a rith: Níl aon phríomh-radharc sainithe ag an " +"tionscadal.\n" +"Cuir an tionscadal in eagar agus socraigh an príomh-radharc sna Socruithe " +"Tionscadail faoin gcatagóir \"Feidhmchlár\"." + +msgid "" +"Can't run project: Assets need to be imported first.\n" +"Please edit the project to trigger the initial import." +msgstr "" +"Ní féidir tionscadal a reáchtáil: Ní mór sócmhainní a iompórtáil ar dtús.\n" +"Cuir an tionscadal in eagar chun tús a chur leis an iompórtáil tosaigh." + +msgid "" +"Can't open project at '%s'.\n" +"Project file doesn't exist or is inaccessible." +msgstr "" +"Ní féidir tionscadal a oscailt ag '%s'.\n" +"Níl comhad tionscadail ann nó tá sé dorochtana." + +msgid "" +"Can't open project at '%s'.\n" +"Failed to start the editor." +msgstr "" +"Ní féidir tionscadal a oscailt ag '%s'.\n" +"Theip ar an eagarthóir a thosú." + +msgid "" +"You requested to open %d projects in parallel. Do you confirm?\n" +"Note that usual checks for engine version compatibility will be bypassed." +msgstr "" +"D'iarr tú tionscadail %d a oscailt go comhthreomhar. An ndeimhníonn tú?\n" +"Tabhair faoi deara go ndéanfar na gnáthseiceálacha ar chomhoiriúnacht leagan " +"innill a sheachbhóthar." + +msgid "" +"The selected project \"%s\" does not specify its supported Godot version in " +"its configuration file (\"project.godot\").\n" +"\n" +"Project path: %s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"\n" +"Warning: You won't be able to open the project with previous versions of the " +"engine anymore." +msgstr "" +"Ní shonraíonn an tionscadal roghnaithe \"%s\" a leagan Godot tacaithe ina " +"chomhad cumraíochta (\"project.godot\").\n" +"\n" +"Conair tionscadail: %s\n" +"\n" +"Má théann tú ar aghaidh lena oscailt, déanfar é a thiontú go formáid comhaid " +"cumraíochta reatha Godot.\n" +"\n" +"Rabhadh: Ní bheidh tú in ann an tionscadal a oscailt le leaganacha roimhe seo " +"den inneall níos mó." + +msgid "" +"The selected project \"%s\" was generated by Godot 3.x, and needs to be " +"converted for Godot 4.x.\n" +"\n" +"Project path: %s\n" +"\n" +"You have three options:\n" +"- Convert only the configuration file (\"project.godot\"). Use this to open " +"the project without attempting to convert its scenes, resources and scripts.\n" +"- Convert the entire project including its scenes, resources and scripts " +"(recommended if you are upgrading).\n" +"- Do nothing and go back.\n" +"\n" +"Warning: If you select a conversion option, you won't be able to open the " +"project with previous versions of the engine anymore." +msgstr "" +"Gineadh an tionscadal roghnaithe \"%s\" ag Godot 3.x, agus ní mór é a thiontú " +"le haghaidh Godot 4.x.\n" +"\n" +"Conair tionscadail: %s\n" +"\n" +"Tá trí rogha agat:\n" +"- Tiontaigh ach an comhad cumraíochta (\"project.godot\"). Bain úsáid as seo " +"chun an tionscadal a oscailt gan iarracht a dhéanamh a radhairc, acmhainní " +"agus scripteanna a thiontú.\n" +"- Tiontaigh an tionscadal ar fad lena n-áirítear a radhairc, acmhainní agus " +"scripteanna (molta má tá tú ag uasghrádú).\n" +"- Ná déan faic agus téigh ar ais.\n" +"\n" +"Rabhadh: Má roghnaíonn tú rogha comhshó, ní bheidh tú in ann an tionscadal a " +"oscailt le leaganacha roimhe seo den inneall níos mó." + +msgid "Convert project.godot Only" +msgstr "Tiontaigh project.godot amháin" + +msgid "" +"The selected project \"%s\" was generated by an older engine version, and " +"needs to be converted for this version.\n" +"\n" +"Project path: %s\n" +"\n" +"Do you want to convert it?\n" +"\n" +"Warning: You won't be able to open the project with previous versions of the " +"engine anymore." +msgstr "" +"Gineadh an tionscadal roghnaithe \"%s\" le leagan innill níos sine, agus ní " +"mór é a thiontú don leagan seo.\n" +"\n" +"Conair tionscadail: %s\n" +"\n" +"An bhfuil fonn ort é a thiontú?\n" +"\n" +"Rabhadh: Ní bheidh tú in ann an tionscadal a oscailt le leaganacha roimhe seo " +"den inneall níos mó." + +msgid "Convert project.godot" +msgstr "Tiontaigh project.godot" + +msgid "" +"Can't open project \"%s\" at the following path:\n" +"\n" +"%s\n" +"\n" +"The project settings were created by a newer engine version, whose settings " +"are not compatible with this version." +msgstr "" +"Ní féidir tionscadal \"%s\" a oscailt ag an gcosán seo a leanas:\n" +"\n" +"%s\n" +"\n" +"Cruthaíodh na socruithe tionscadail ag leagan inneall níos nuaí, nach bhfuil " +"a socruithe comhoiriúnach leis an leagan seo." + +msgid "" +"Warning: This project uses double precision floats, but this version of\n" +"Godot uses single precision floats. Opening this project may cause data " +"loss.\n" +"\n" +msgstr "" +"Rabhadh: Úsáideann an tionscadal seo snámháin cruinneas dúbailte, ach an " +"leagan seo de\n" +"Úsáideann Godot snámháin cruinneas amháin. D'fhéadfadh caillteanas sonraí a " +"bheith mar thoradh ar an tionscadal seo a oscailt.\n" +"\n" + +msgid "" +"Warning: This project uses C#, but this build of Godot does not have\n" +"the Mono module. If you proceed you will not be able to use any C# scripts.\n" +"\n" +msgstr "" +"Rabhadh: Úsáideann an tionscadal seo C #, ach níl an tógáil seo de Godot\n" +"an modúl Mono. Má théann tú ar aghaidh ní bheidh tú in ann aon scripteanna C " +"# a úsáid.\n" +"\n" + +msgid "" +"Warning: This project was last edited in Godot %s. Opening will change it to " +"Godot %s.\n" +"\n" +msgstr "" +"Rabhadh: Cuireadh an tionscadal seo in eagar go deireanach in Godot %s. " +"Athróidh an oscailt é go Godot %s.\n" +"\n" + +msgid "" +"Warning: This project uses the following features not supported by this build " +"of Godot:\n" +"\n" +"%s\n" +"\n" +msgstr "" +"Rabhadh: Úsáideann an tionscadal seo na gnéithe seo a leanas nach dtacaíonn " +"an tógáil seo de Godot leo:\n" +"\n" +"%s\n" +"\n" + +msgid "Open anyway? Project will be modified." +msgstr "Oscailte ar aon nós? Athrófar an tionscadal." + +msgid "Remove %d projects from the list?" +msgstr "Bain %d tionscadal ón liosta?" + +msgid "Remove this project from the list?" +msgstr "Bain an tionscadal seo ón liosta?" + +msgid "" +"Remove all missing projects from the list?\n" +"The project folders' contents won't be modified." +msgstr "" +"Bain gach tionscadal atá ar iarraidh ón liosta?\n" +"Ní dhéanfar inneachar na bhfillteán tionscadail a mhodhnú." + +msgid "Couldn't load project at '%s'. It may be missing or corrupted." +msgstr "" +"Níorbh fhéidir an tionscadal a luchtú ag '%s'. D'fhéadfadh sé a bheith ar " +"iarraidh nó truaillithe." + +msgid "Couldn't save project at '%s' (error %d)." +msgstr "Níorbh fhéidir tionscadal a shábháil ag '%s' (earráid %d)." + +msgid "Tag name can't be empty." +msgstr "Ní féidir ainm na clibe a bheith folamh." + +msgid "Tag name can't contain spaces." +msgstr "Ní féidir spásanna a bheith in ainm na clibe." + +msgid "These characters are not allowed in tags: %s." +msgstr "Ní cheadaítear na carachtair seo i gclibeanna: %s." + +msgid "Tag name must be lowercase." +msgstr "Ní mór ainm na clibe a bheith níos ísle." + +msgctxt "Application" +msgid "Project Manager" +msgstr "Bainisteoir Tionscadail" + +msgid "Settings" +msgstr "Socruithe" + +msgid "Projects" +msgstr "Tionscadail" + +msgid "New Project" +msgstr "Tionscadal Nua" + +msgid "Import Project" +msgstr "Iompórtáil Tionscadal" + +msgid "Scan" +msgstr "Scanadh" + +msgid "Scan Projects" +msgstr "Tionscadail Scan" + +msgid "Loading, please wait..." +msgstr "Á Luchtú, fan go fóill..." + +msgid "Filter Projects" +msgstr "Tionscadail Scagaire" + +msgid "" +"This field filters projects by name and last path component.\n" +"To filter projects by name and full path, the query must contain at least one " +"`/` character." +msgstr "" +"Scagann an réimse seo tionscadail de réir ainm agus comhpháirt chosáin " +"dheireanaigh.\n" +"Chun tionscadail a scagadh de réir ainm agus cosán iomlán, ní mór carachtar " +"'/' amháin ar a laghad a bheith san iarratas." + +msgid "Last Edited" +msgstr "An tEagarthóir Is Déanaí" + +msgid "Tags" +msgstr "Clibeanna" + +msgid "You don't have any projects yet." +msgstr "Níl aon tionscadal agat go fóill." + +msgid "" +"Get started by creating a new one,\n" +"importing one that exists, or by downloading a project template from the " +"Asset Library!" +msgstr "" +"Tús a chur le ceann nua a chruthú,\n" +"iompórtáil ceann atá ann, nó trí theimpléad tionscadail a íoslódáil ón " +"Leabharlann Sócmhainní!" + +msgid "Create New Project" +msgstr "Cruthaigh Tionscadal Nua" + +msgid "Import Existing Project" +msgstr "Iompórtáil Tionscadal Atá Ann Cheana" + +msgid "" +"Note: The Asset Library requires an online connection and involves sending " +"data over the internet." +msgstr "" +"Tabhair faoi deara: Teastaíonn nasc ar líne ón Leabharlann Sócmhainní agus is " +"éard atá i gceist léi ná sonraí a sheoladh ar an idirlíon." + +msgid "Edit Project" +msgstr "Cuir Tionscadal in Eagar" + +msgid "Rename Project" +msgstr "Athainmnigh Tionscadal" + +msgid "Manage Tags" +msgstr "Bainistigh Clibeanna" + +msgid "Remove Project" +msgstr "Bain Tionscadal" + +msgid "Remove Missing" +msgstr "Bain Ar Iarraidh" + +msgid "" +"Asset Library not available (due to using Web editor, or because SSL support " +"disabled)." +msgstr "" +"Níl Leabharlann Sócmhainní ar fáil (mar gheall ar eagarthóir Gréasáin a " +"úsáid, nó toisc go bhfuil tacaíocht SSL díchumasaithe)." + +msgid "Select a Folder to Scan" +msgstr "Roghnaigh Fillteán le Scanadh" + +msgid "Remove All" +msgstr "Bain Gach Rud" + +msgid "Convert Full Project" +msgstr "Tiontaigh Tionscadal Iomlán" + +msgid "" +"This option will perform full project conversion, updating scenes, resources " +"and scripts from Godot 3 to work in Godot 4.\n" +"\n" +"Note that this is a best-effort conversion, i.e. it makes upgrading the " +"project easier, but it will not open out-of-the-box and will still require " +"manual adjustments.\n" +"\n" +"IMPORTANT: Make sure to backup your project before converting, as this " +"operation makes it impossible to open it in older versions of Godot." +msgstr "" +"Beidh an rogha seo a dhéanamh comhshó tionscadal iomlán, radhairc a " +"nuashonrú, acmhainní agus scripteanna ó Godot 3 a bheith ag obair i Godot 4.\n" +"\n" +"Tabhair faoi deara gur tiontú sáriarrachta é seo, i.e. déanann sé uasghrádú " +"ar an tionscadal níos éasca, ach ní osclóidh sé lasmuigh den bhosca agus " +"beidh coigeartuithe láimhe ag teastáil fós.\n" +"\n" +"TÁBHACHTACH: Déan cinnte cúltaca a dhéanamh ar do thionscadal sula n-" +"athraíonn tú, mar go bhfágann an oibríocht seo nach féidir é a oscailt i " +"leaganacha níos sine de Godot." + +msgid "Manage Project Tags" +msgstr "Bainistigh Clibeanna Tionscadail" + +msgid "Project Tags" +msgstr "Clibeanna Tionscadail" + +msgid "Click tag to remove it from the project." +msgstr "Cliceáil clib chun é a bhaint den tionscadal." + +msgid "All Tags" +msgstr "Gach Clib" + +msgid "Click tag to add it to the project." +msgstr "Cliceáil clib chun é a chur leis an tionscadal." + +msgid "Create New Tag" +msgstr "Cruthaigh Clib Nua" + +msgid "Tags are capitalized automatically when displayed." +msgstr "" +"Déantar clibeanna a chaipitliú go huathoibríoch nuair a thaispeántar iad." + +msgid "It would be a good idea to name your project." +msgstr "Smaoineamh maith a bheadh ann do thionscadal a ainmniú." + +msgid "Invalid \".zip\" project file; it is not in ZIP format." +msgstr "Comhad tionscadail neamhbhailí \".zip\"; níl sé i bhformáid ZIP." + +msgid "" +"Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file." +msgstr "" +"Comhad tionscadail neamhbhailí \".zip\"; níl comhad \"project.godot\" ann." + +msgid "Valid project found at path." +msgstr "Tionscadal bailí le fáil ag an gcosán." + +msgid "" +"Please choose a \"project.godot\", a directory with one, or a \".zip\" file." +msgstr "" +"Roghnaigh \"project.godot\", eolaire le ceann amháin, nó comhad \".zip\"." + +msgid "The path specified is invalid." +msgstr "Tá an cosán sonraithe neamhbhailí." + +msgid "" +"The directory name specified contains invalid characters or trailing " +"whitespace." +msgstr "" +"Tá carachtair neamhbhailí nó spás bán trailing in ainm an eolaire a " +"shonraítear." + +msgid "" +"Creating a project at the engine's working directory or executable directory " +"is not allowed, as it would prevent the project manager from starting." +msgstr "" +"Ní cheadaítear tionscadal a chruthú ag eolaire oibre nó eolaire inrite an " +"innill, mar go gcuirfeadh sé cosc ar an mbainisteoir tionscadail tosú." + +msgid "" +"You cannot save a project at the selected path. Please create a subfolder or " +"choose a new path." +msgstr "" +"Ní féidir leat tionscadal a shábháil ag an gcosán roghnaithe. Cruthaigh " +"fofhillteán nó roghnaigh cosán nua." + +msgid "The parent directory of the path specified doesn't exist." +msgstr "Níl máthairchomhadlann an chosáin sonraithe ann." + +msgid "The project folder already exists and is empty." +msgstr "Tá fillteán an tionscadail ann cheana féin agus tá sé folamh." + +msgid "The project folder will be automatically created." +msgstr "Cruthófar fillteán an tionscadail go huathoibríoch." + +msgid "The path specified doesn't exist." +msgstr "Níl an cosán sonraithe ann." + +msgid "The project folder exists and is empty." +msgstr "Tá fillteán an tionscadail ann agus tá sé folamh." + +msgid "" +"The selected path is not empty. Choosing an empty folder is highly " +"recommended." +msgstr "Níl an cosán roghnaithe folamh. Moltar go mór fillteán folamh a roghnú." + +msgid "New Game Project" +msgstr "Tionscadal Cluiche Nua" + +msgid "Supports desktop platforms only." +msgstr "Tacaíonn sé le hardáin deisce amháin." + +msgid "Advanced 3D graphics available." +msgstr "Ardghrafaicí 3D ar fáil." + +msgid "Can scale to large complex scenes." +msgstr "Is féidir scála a dhéanamh le radhairc chasta mhóra." + +msgid "Uses RenderingDevice backend." +msgstr "Úsáideann an páiste inneall RenderingDevice." + +msgid "Slower rendering of simple scenes." +msgstr "Rindreáil níos moille de radhairc shimplí." + +msgid "Supports desktop + mobile platforms." +msgstr "Tacaíochtaí deisce + ardáin soghluaiste." + +msgid "Less advanced 3D graphics." +msgstr "Grafaicí 3D níos lú chun cinn." + +msgid "Less scalable for complex scenes." +msgstr "Níos lú inscálaithe le haghaidh radhairc chasta." + +msgid "Fast rendering of simple scenes." +msgstr "Rindreáil tapa radhairc shimplí." + +msgid "Supports desktop, mobile + web platforms." +msgstr "Tacaíochtaí deisce, soghluaiste + ardáin ghréasáin." + +msgid "Least advanced 3D graphics (currently work-in-progress)." +msgstr "Grafaicí 3D is lú chun cinn (obair idir lámha faoi láthair)." + +msgid "Intended for low-end/older devices." +msgstr "Beartaithe le haghaidh feistí íseal-deireadh/níos sine." + +msgid "Uses OpenGL 3 backend (OpenGL 3.3/ES 3.0/WebGL2)." +msgstr "Úsáideann inneall OpenGL 3 (OpenGL 3.3 / ES 3.0 / WebGL2)." + +msgid "Fastest rendering of simple scenes." +msgstr "Rindreáil is tapúla de radhairc shimplí." + +msgid "Warning: This folder is not empty" +msgstr "Rabhadh: Níl an fillteán seo folamh" + +msgid "" +"You are about to create a Godot project in a non-empty folder.\n" +"The entire contents of this folder will be imported as project resources!\n" +"\n" +"Are you sure you wish to continue?" +msgstr "" +"Tá tú ar tí tionscadal Godot a chruthú i bhfillteán neamhfholamh.\n" +"Déanfar inneachar iomlán an fhillteáin seo a iompórtáil mar acmhainní " +"tionscadail!\n" +"\n" +"An bhfuil tú cinnte gur mian leat leanúint ar aghaidh?" + +msgid "Couldn't create project directory, check permissions." +msgstr "Níorbh fhéidir comhadlann tionscadail a chruthú, ceadanna a sheiceáil." + +msgid "Couldn't create project.godot in project path." +msgstr "Níorbh fhéidir project.godot a chruthú i gcosán tionscadail." + +msgid "Couldn't create icon.svg in project path." +msgstr "Níorbh fhéidir icon.svg a chruthú i gcosán tionscadail." + +msgid "Error opening package file, not in ZIP format." +msgstr "Earráid agus comhad pacáiste á oscailt, ní i bhformáid ZIP." + +msgid "The following files failed extraction from package:" +msgstr "Theip ar na comhaid seo a leanas eastóscadh ón bpacáiste:" + +msgid "" +"Couldn't load project at '%s' (error %d). It may be missing or corrupted." +msgstr "" +"Níorbh fhéidir an tionscadal a luchtú ag '%s' (earráid %d). D'fhéadfadh sé a " +"bheith ar iarraidh nó truaillithe." + +msgid "Import & Edit" +msgstr "Iompórtáil agus Cuir in Eagar" + +msgid "Create & Edit" +msgstr "Cruthaigh & Cuir in Eagar" + +msgid "Install Project:" +msgstr "Suiteáil Tionscadal:" + +msgid "Install & Edit" +msgstr "Suiteáil & Eagar" + +msgid "Project Name:" +msgstr "Ainm an Tionscadail:" + +msgid "Project Path:" +msgstr "Conair an Tionscadail:" + +msgid "Project Installation Path:" +msgstr "Conair Suiteála Tionscadail:" + +msgid "Renderer:" +msgstr "Rindreálaí:" + +msgid "The renderer can be changed later, but scenes may need to be adjusted." +msgstr "" +"Is féidir an rindreálaí a athrú níos déanaí, ach b'fhéidir go gcaithfear " +"radhairc a choigeartú." + +msgid "Version Control Metadata:" +msgstr "Meiteashonraí Rialaithe Leagain:" + +msgid "Git" +msgstr "Git" + +msgid "This project was last edited in a different Godot version: " +msgstr "Cuireadh an tionscadal seo in eagar go deireanach i leagan Godot eile: " + +msgid "This project uses features unsupported by the current build:" +msgstr "" +"Baineann an tionscadal seo úsáid as gnéithe nach dtacaíonn an tógáil reatha " +"leo:" + +msgid "Error: Project is missing on the filesystem." +msgstr "Earráid: Tá an tionscadal ar iarraidh ar an gcóras comhad." + +msgid "Last edited timestamp" +msgstr "Stampa ama is déanaí curtha in eagar" + +msgid "Missing Project" +msgstr "Tionscadal ar Iarraidh" + +msgid "Restart Now" +msgstr "Atosaigh Anois" + +msgid "Quick Settings" +msgstr "Socruithe Tapa" + +msgid "Interface Theme" +msgstr "Téama Comhéadain" + +msgid "Custom preset can be further configured in the editor." +msgstr "" +"Is féidir réamhshocraithe saincheaptha a chumrú tuilleadh san eagarthóir." + +msgid "Display Scale" +msgstr "Scála Taispeána" + +msgid "Network Mode" +msgstr "Mód Líonra" + +msgid "Directory Naming Convention" +msgstr "Coinbhinsiún Ainmniú Eolaire" + +msgid "" +"Settings changed! The project manager must be restarted for changes to take " +"effect." +msgstr "" +"Athraíodh na socruithe! Ní mór an bainisteoir tionscadail a atosú chun " +"athruithe a chur i bhfeidhm." + +msgid "Add Project Setting" +msgstr "Cuir Socrú Tionscadail Leis" + +msgid "Delete Item" +msgstr "Scrios Mír" + +msgid "(All)" +msgstr "(Gach)" + +msgid "Add Input Action" +msgstr "Cuir Gníomh Ionchurtha Leis" + +msgid "Change Action deadzone" +msgstr "Athraigh deadzone Gníomh" + +msgid "Change Input Action Event(s)" +msgstr "Athraigh Teagmhas(anna) Gníomhaíochta Ionchurtha" + +msgid "Erase Input Action" +msgstr "Scrios Gníomh Ionchurtha" + +msgid "Rename Input Action" +msgstr "Athainmnigh Gníomh Ionchurtha" + +msgid "Update Input Action Order" +msgstr "Nuashonraigh an tOrdú Gníomhaíochta Ionchurtha" + +msgid "Project Settings (project.godot)" +msgstr "Socruithe Tionscadail (project.godot)" + +msgid "Advanced Settings" +msgstr "Ardsocruithe" + +msgid "Select a Setting or Type its Name" +msgstr "Roghnaigh Socrú nó Clóscríobh a Ainm" + +msgid "Changed settings will be applied to the editor after restarting." +msgstr "Cuirfear socruithe athraithe i bhfeidhm ar an eagarthóir tar éis atosú." + +msgid "Input Map" +msgstr "Mapa Ionchurtha" + +msgid "Localization" +msgstr "Logánú" + +msgid "Globals" +msgstr "Domhandaigh" + +msgid "Autoload" +msgstr "Uathluchtaigh" + +msgid "Shader Globals" +msgstr "Shader Domhanda" + +msgid "Plugins" +msgstr "Breiseáin" + +msgid "Import Defaults" +msgstr "Réamhshocruithe Iompórtála" + +msgid "Select Property" +msgstr "Roghnaigh Maoin" + +msgid "Select Virtual Method" +msgstr "Roghnaigh Modh Fíorúil" + +msgid "Batch Rename" +msgstr "Athainmnigh Baisc" + +msgid "Prefix:" +msgstr "Réimír:" + +msgid "Suffix:" +msgstr "Iarmhír:" + +msgid "Use Regular Expressions" +msgstr "Úsáid Slonn Ionadaíochta" + +msgid "Substitute" +msgstr "Ionadaí" + +msgid "Node name." +msgstr "Ainm nód." + +msgid "Node's parent name, if available." +msgstr "Máthairainm nód, má tá sé ar fáil." + +msgid "Node type." +msgstr "Cineál nód." + +msgid "Current scene name." +msgstr "Ainm an radhairc reatha." + +msgid "Root node name." +msgstr "Ainm nód fréimhe." + +msgid "" +"Sequential integer counter.\n" +"Compare counter options." +msgstr "" +"Cuntar slánuimhir seicheamhach.\n" +"Déan comparáid idir roghanna cuntair." + +msgid "Per-level Counter" +msgstr "Cuntar in aghaidh an leibhéil" + +msgid "If set, the counter restarts for each group of child nodes." +msgstr "Má shocraítear é, atosaigh an cuntar do gach grúpa nóid leanaí." + +msgid "Initial value for the counter." +msgstr "Luach tosaigh don chuntar." + +msgid "Step" +msgstr "Céim" + +msgid "Amount by which counter is incremented for each node." +msgstr "An méid a incrimintítear an cuntar in aghaidh gach nód." + +msgid "Padding" +msgstr "Stuáil" + +msgid "" +"Minimum number of digits for the counter.\n" +"Missing digits are padded with leading zeros." +msgstr "" +"Líon íosta na ndigití don chuntar.\n" +"Tá digití ar iarraidh padded le nialais tosaigh." + +msgid "Post-Process" +msgstr "Iarphróiseas" + +msgid "Style" +msgstr "Stíl" + +msgid "PascalCase to snake_case" +msgstr "PascalCase go snake_case" + +msgid "snake_case to PascalCase" +msgstr "snake_case go PascalCase" + +msgid "Case" +msgstr "Cás" + +msgid "To Lowercase" +msgstr "Go Cás Íochtair" + +msgid "To Uppercase" +msgstr "Go dtí an Cás Uachtarach" + +msgid "Reset" +msgstr "Athshocraigh" + +msgid "Regular Expression Error:" +msgstr "Earráid Slonn Ionadaíochta:" + +msgid "At character %s" +msgstr "Ag carachtar %s" + +msgid "Reparent Node" +msgstr "Nód Reparent" + +msgid "Select new parent:" +msgstr "Roghnaigh tuismitheoir nua:" + +msgid "Keep Global Transform" +msgstr "Coinnigh Trasfhoirmigh Dhomhanda" + +msgid "Reparent" +msgstr "ReparentName" + +msgid "Run Instances" +msgstr "Rith Cásanna" + +msgid "Enable Multiple Instances" +msgstr "Cumasaigh Ilchásanna" + +msgid "Main Run Args:" +msgstr "Príomh-Args Rith:" + +msgid "Main Feature Tags:" +msgstr "Príomh-Ghné Clibeanna:" + +msgid "Space-separated arguments, example: host player1 blue" +msgstr "Argóintí spás-scartha, mar shampla: imreoir óstach1 gorm" + +msgid "Comma-separated tags, example: demo, steam, event" +msgstr "Clibeanna camóg-scartha, mar shampla: taispeántas, gaile, imeacht" + +msgid "Instance Configuration" +msgstr "Cumraíocht Ásc" + +msgid "Override Main Run Args" +msgstr "Sáraigh Príomh-Args Rith" + +msgid "Launch Arguments" +msgstr "Seoladh Argóintí" + +msgid "Override Main Tags" +msgstr "Sáraigh na Príomhchlibeanna" + +msgid "Feature Tags" +msgstr "Clibeanna Gné" + +msgid "Pick Root Node Type" +msgstr "Roghnaigh Cineál Nód Fréimhe" + +msgid "Pick" +msgstr "Pioc" + +msgid "Scene name is empty." +msgstr "Tá ainm an radhairc folamh." + +msgid "File name invalid." +msgstr "Ainm comhaid neamhbhailí." + +msgid "File name begins with a dot." +msgstr "Tosaíonn ainm comhaid le ponc." + +msgid "File already exists." +msgstr "Tá an comhad ann cheana." + +msgid "Leave empty to derive from scene name" +msgstr "Fág folamh le teacht ó ainm an radhairc" + +msgid "Invalid root node name." +msgstr "Ainm nód fréimhe neamhbhailí." + +msgid "Invalid root node name characters have been replaced." +msgstr "Cuireadh carachtair neamhbhailí ainm nód fréimhe in ionad." + +msgid "Root Type:" +msgstr "Cineál Fréimhe:" + +msgid "2D Scene" +msgstr "Radharc 2D" + +msgid "3D Scene" +msgstr "Radharc 3T" + +msgid "User Interface" +msgstr "Comhéadan Úsáideora" + +msgid "Scene Name:" +msgstr "Ainm an Radhairc:" + +msgid "Root Name:" +msgstr "Fréamhainm:" + +msgid "" +"When empty, the root node name is derived from the scene name based on the " +"\"editor/naming/node_name_casing\" project setting." +msgstr "" +"Nuair a bhíonn sé folamh, díorthaítear ainm an nód fréimhe ó ainm an radhairc " +"bunaithe ar shuíomh an tionscadail \"eagarthóir / ainmniú / " +"node_name_casing\"." + +msgid "Scene name is valid." +msgstr "Tá ainm an radhairc bailí." + +msgid "Root node valid." +msgstr "Nód fréimhe bailí." + +msgid "Create New Scene" +msgstr "Cruthaigh Radharc Nua" + +msgid "No parent to instantiate a child at." +msgstr "Níl aon tuismitheoir a instantiate leanbh ag." + +msgid "No parent to instantiate the scenes at." +msgstr "Níl aon tuismitheoir a instantiate na radhairc ag." + +msgid "Error loading scene from %s" +msgstr "Earráid agus radharc á luchtú ó %s" + +msgid "Error instantiating scene from %s" +msgstr "Earráid agus radharc á mheandar ó %s" + +msgid "" +"Cannot instantiate the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" +"Ní féidir an radharc '%s' a mheandar toisc go bhfuil an radharc reatha " +"laistigh de cheann dá nóid." + +msgid "Instantiate Scene" +msgid_plural "Instantiate Scenes" +msgstr[0] "Radharc ar an toirt" +msgstr[1] "Láithreacha Meandaracha" +msgstr[2] "Láithreacha Meandaracha" +msgstr[3] "Láithreacha Meandaracha" +msgstr[4] "Láithreacha Meandaracha" + +msgid "Error loading audio stream from %s" +msgstr "Earráid agus sruth fuaime á luchtú ó %s" + +msgid "Create AudioStreamPlayer" +msgid_plural "Create AudioStreamPlayers" +msgstr[0] "Cruthaigh AudioStreamPlayer" +msgstr[1] "Cruthaigh AudioStreamPlayers" +msgstr[2] "Cruthaigh AudioStreamPlayers" +msgstr[3] "Cruthaigh AudioStreamPlayers" +msgstr[4] "Cruthaigh AudioStreamPlayers" + +msgid "Replace with Branch Scene" +msgstr "Cuir Radharc na Craoibhe in ionad" + +msgid "Instantiate Child Scene" +msgstr "Radharc Leanaí Instantiate" + +msgid "Detach Script" +msgstr "Script Scoite" + +msgid "This operation can't be done on the tree root." +msgstr "Ní féidir an oibríocht seo a dhéanamh ar fhréamh an chrainn." + +msgid "Move Node in Parent" +msgstr "Bog Nód sa Tuismitheoir" + +msgid "Move Nodes in Parent" +msgstr "Bog Nóid i dTuismitheoir" + +msgid "Duplicate Node(s)" +msgstr "Nód(anna) Dúblacha" + +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" +"Ní féidir nóid a athshealbhú i radhairc oidhreacht, ní féidir ord nóid a " +"athrú." + +msgid "Node must belong to the edited scene to become root." +msgstr "" +"Caithfidh nód a bheith páirteach sa radharc eagarthóireachta le bheith " +"fréamhaithe." + +msgid "Instantiated scenes can't become root" +msgstr "Ní féidir le radhairc mheandaracha a bheith fréamhaithe" + +msgid "Make node as Root" +msgstr "Déan nód mar Fhréamh" + +msgid "Delete %d nodes and any children?" +msgstr "Scrios nóid %d agus aon pháistí?" + +msgid "Delete %d nodes?" +msgstr "Scrios nóid %d?" + +msgid "Delete the root node \"%s\"?" +msgstr "Scrios an nód fréimhe \"%s\"?" + +msgid "Delete node \"%s\" and its children?" +msgstr "Scrios nód \"%s\" agus a pháistí?" + +msgid "Delete node \"%s\"?" +msgstr "Scrios nód \"%s\"?" + +msgid "Some nodes are referenced by animation tracks." +msgstr "Déantar tagairt do roinnt nóid le rianta beochana." + +msgid "Saving the branch as a scene requires having a scene open in the editor." +msgstr "" +"Chun an chraobh a shábháil mar radharc, ní mór radharc a bheith ar oscailt " +"san eagarthóir." + +msgid "" +"Saving the branch as a scene requires selecting only one node, but you have " +"selected %d nodes." +msgstr "" +"Ní gá ach nód amháin a roghnú chun an brainse a shábháil mar radharc, ach " +"roghnaigh tú nóid %d." + +msgid "" +"Can't save the root node branch as an instantiated scene.\n" +"To create an editable copy of the current scene, duplicate it using the " +"FileSystem dock context menu\n" +"or create an inherited scene using Scene > New Inherited Scene... instead." +msgstr "" +"Ní féidir brainse an bhunnóid a shábháil mar radharc láithreach.\n" +"Chun cóip ineagarthóireachta den radharc reatha a chruthú, déan é a dhúbailt " +"trí úsáid a bhaint as roghchlár comhthéacs duga FileSystem\n" +"nó cruthaigh radharc oidhreachta ag úsáid Radharc > Radharc Oidhreacht Nua... " +"ina ionad sin." + +msgid "" +"Can't save the branch of an already instantiated scene.\n" +"To create a variation of a scene, you can make an inherited scene based on " +"the instantiated scene using Scene > New Inherited Scene... instead." +msgstr "" +"Ní féidir an brainse de radharc a cuireadh ar an toirt cheana féin a " +"shábháil.\n" +"Chun éagsúlacht radharc a chruthú, is féidir leat radharc oidhreachta a " +"dhéanamh bunaithe ar an radharc ar an toirt trí úsáid a bhaint as Radharc > " +"Radharc Oidhreacht Nua... ina ionad sin." + +msgid "" +"Can't save a branch which is a child of an already instantiated scene.\n" +"To save this branch into its own scene, open the original scene, right click " +"on this branch, and select \"Save Branch as Scene\"." +msgstr "" +"Ní féidir brainse a shábháil atá ina leanbh de radharc atá ar an toirt cheana " +"féin.\n" +"Chun an brainse seo a shábháil ina radharc féin, oscail an radharc bunaidh, " +"cliceáil ar dheis ar an mbrainse seo, agus roghnaigh \"Save Branch as Scene\"." + +msgid "" +"Can't save a branch which is part of an inherited scene.\n" +"To save this branch into its own scene, open the original scene, right click " +"on this branch, and select \"Save Branch as Scene\"." +msgstr "" +"Ní féidir craobh atá mar chuid de radharc oidhreachtúil a shábháil.\n" +"Chun an brainse seo a shábháil ina radharc féin, oscail an radharc bunaidh, " +"cliceáil ar dheis ar an mbrainse seo, agus roghnaigh \"Save Branch as Scene\"." + +msgid "Save New Scene As..." +msgstr "Sábháil Radharc Nua Mar..." + +msgid "" +"Disabling \"editable_instance\" will cause all properties of the node to be " +"reverted to their default." +msgstr "" +"Má dhíchumasaítear \"editable_instance\" cuirfear gach maoin den nód ar ais " +"chuig a mainneachtain." + +msgid "" +"Enabling \"Load as Placeholder\" will disable \"Editable Children\" and cause " +"all properties of the node to be reverted to their default." +msgstr "" +"Má chumasaítear \"Luchtaigh mar Ionadchoinneálaí\" díchumasófar \"Leanaí " +"Ineagarthóireachta\" agus cuirfidh sé faoi deara go gcuirfear gach maoin den " +"nód ar ais chuig a mainneachtain." + +msgid "Make Local" +msgstr "Déan Áitiúil" + +msgid "Can't toggle unique name for nodes in subscene!" +msgstr "Ní féidir ainm uathúil a scoránú le haghaidh nóid i subscene!" + +msgid "Enable Scene Unique Name(s)" +msgstr "Cumasaigh ainm(neacha) uathúla radhairc" + +msgid "Unique names already used by another node in the scene:" +msgstr "Ainmneacha uathúla a d'úsáid nód eile sa radharc cheana féin:" + +msgid "Disable Scene Unique Name(s)" +msgstr "Díchumasaigh Ainm(neacha) Uathúla Radhairc" + +msgid "New Scene Root" +msgstr "Fréamh an Radhairc Nua" + +msgid "Create Root Node:" +msgstr "Cruthaigh Nód Fréimhe:" + +msgid "Toggle the display of favorite nodes." +msgstr "Scoránaigh taispeáint na nóid is fearr leat." + +msgid "Other Node" +msgstr "Nód Eile" + +msgid "Paste From Clipboard" +msgstr "Greamaigh ón Ghearrthaisce" + +msgid "Filters" +msgstr "Scagairí" + +msgid "Can't operate on nodes from a foreign scene!" +msgstr "Ní féidir oibriú ar nóid ó radharc eachtrach!" + +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "Ní féidir oibriú ar nóid a fhaigheann an radharc reatha le hoidhreacht!" + +msgid "This operation can't be done on instantiated scenes." +msgstr "Ní féidir an oibríocht seo a dhéanamh ar radhairc mheandaracha." + +msgid "Attach Script" +msgstr "Ceangail Script" + +msgid "Set Shader" +msgstr "Socraigh Scáthóir" + +msgid "Toggle Editable Children" +msgstr "Scoránaigh Leanaí Ineagarthóireachta" + +msgid "Cut Node(s)" +msgstr "Gearr Nód(anna)" + +msgid "Remove Node(s)" +msgstr "Bain Nód(anna)" + +msgid "Change type of node(s)" +msgstr "Athraigh cineál nód(anna)" + +msgid "This operation requires a single selected node." +msgstr "Tá nód roghnaithe amháin de dhíth ar an oibríocht seo." + +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" +"Níorbh fhéidir radharc nua a shábháil. Níorbh fhéidir spleáchais dhóchúla " +"(cásanna) a shásamh." + +msgid "Error saving scene." +msgstr "Earráid agus radharc á shábháil." + +msgid "Error duplicating scene to save it." +msgstr "Earráid agus radharc á dhúbláil chun é a shábháil." + +msgid "Instantiate Script" +msgstr "Script Mheandarach" + +msgid "Sub-Resources" +msgstr "Fo-Acmhainní" + +msgid "Revoke Unique Name" +msgstr "Cúlghair Ainm Uathúil" + +msgid "Access as Unique Name" +msgstr "Rochtain mar Ainm Uathúil" + +msgid "Clear Inheritance" +msgstr "Oidhreacht Ghlan" + +msgid "Editable Children" +msgstr "Leanaí Ineagarthóireachta" + +msgid "Load as Placeholder" +msgstr "Luchtaigh mar Ionadchoinneálaí" + +msgid "Auto Expand to Selected" +msgstr "Leathnaigh go hUathoibríoch go Roghnaithe" + +msgid "Center Node on Reparent" +msgstr "Nód Ionaid ar Reparent" + +msgid "" +"If enabled, Reparent to New Node will create the new node in the center of " +"the selected nodes, if possible." +msgstr "" +"Má chumasaítear é, cruthóidh Reparent to New Node an nód nua i lár na nóid " +"roghnaithe, más féidir." + +msgid "All Scene Sub-Resources" +msgstr "Gach Fo-Acmhainní Radhairc" + +msgid "" +"Filter nodes by entering a part of their name, type (if prefixed with \"type:" +"\" or \"t:\")\n" +"or group (if prefixed with \"group:\" or \"g:\"). Filtering is case-" +"insensitive." +msgstr "" +"Scag nóid trí chuid dá n-ainm, cineál (má réimír iad le \"cineál:\" nó \"t:" +"\")\n" +"nó grúpa (má réimír é le \"grúpa:\" nó \"g:\"). Tá scagadh cás-neamhíogair." + +msgid "Filter by Type" +msgstr "Scag de réir Cineáil" + +msgid "Filter by Group" +msgstr "Scag de réir Grúpa" + +msgid "Selects all Nodes of the given type." +msgstr "Roghnaigh gach Nóid den chineál a thugtar." + +msgid "" +"Selects all Nodes belonging to the given group.\n" +"If empty, selects any Node belonging to any group." +msgstr "" +"Roghnaigh gach Nóid a bhaineann leis an ngrúpa ar leith.\n" +"Má tá sé folamh, roghnaigh aon Nód a bhaineann le haon ghrúpa." + +msgid "" +"Cannot attach a script: there are no languages registered.\n" +"This is probably because this editor was built with all language modules " +"disabled." +msgstr "" +"Ní féidir script a cheangal: níl aon teanga cláraithe.\n" +"Is dócha gur tógadh an t-eagarthóir seo le gach modúl teanga faoi mhíchumas." + +msgid "Can't paste root node into the same scene." +msgstr "Ní féidir nód fréimhe a ghreamú isteach sa radharc céanna." + +msgid "Paste Node(s) as Sibling of %s" +msgstr "Greamaigh nód(anna) mar shiblíní de %s" + +msgid "Paste Node(s) as Child of %s" +msgstr "Greamaigh nód(anna) mar pháiste de %s" + +msgid "Paste Node(s) as Root" +msgstr "Greamaigh nód(anna) mar fhréamh" + +msgid "<Unnamed> at %s" +msgstr "<Gan ainm> ag %s" + +msgid "(used %d times)" +msgstr "(úsáidtear %d uair)" + +msgid "Batch Rename..." +msgstr "Baisc Athainmnigh..." + +msgid "Add Child Node..." +msgstr "Cuir Nód Linbh Leis..." + +msgid "Instantiate Child Scene..." +msgstr "Radharc an linbh mheandarach..." + +msgid "Expand/Collapse Branch" +msgstr "Fairsingigh/Laghdaigh an Brainse" + +msgid "Paste as Sibling" +msgstr "Greamaigh mar Shiblíní" + +msgid "Change Type..." +msgstr "Athraigh Cineál..." + +msgid "Attach Script..." +msgstr "Ceangail Script..." + +msgid "Reparent..." +msgstr "Tuismitheoir..." + +msgid "Reparent to New Node..." +msgstr "Reparent go Nód Nua..." + +msgid "Make Scene Root" +msgstr "Déan Fréamh an Radhairc" + +msgid "Save Branch as Scene..." +msgstr "Sábháil an Brainse mar Radharc..." + +msgid "Toggle Access as Unique Name" +msgstr "Scoránaigh Rochtain mar Ainm Uathúil" + +msgid "Delete (No Confirm)" +msgstr "Scrios (Gan Deimhnigh)" + +msgid "Add/Create a New Node." +msgstr "Cuir/Cruthaigh Nód Nua." + +msgid "" +"Instantiate a scene file as a Node. Creates an inherited scene if no root " +"node exists." +msgstr "" +"Instantiate comhad radharc mar Nód. Cruthaíonn radharc oidhreacht mura bhfuil " +"aon nód fréimhe ann." + +msgid "Filter: name, t:type, g:group" +msgstr "Scagaire: ainm, t: cineál, g: grúpa" + +msgid "Attach a new or existing script to the selected node." +msgstr "Ceangail script nua nó script atá ann cheana leis an nód roghnaithe." + +msgid "Detach the script from the selected node." +msgstr "Scar an script ón nód roghnaithe." + +msgid "Extra scene options." +msgstr "Roghanna radhairc breise." + +msgid "Remote" +msgstr "Cianda" + +msgid "" +"If selected, the Remote scene tree dock will cause the project to stutter " +"every time it updates.\n" +"Switch back to the Local scene tree dock to improve performance." +msgstr "" +"Má roghnaítear é, cuirfidh an duga crann radharc cianda faoi deara an " +"tionscadal a stutter gach uair a nuashonraíonn sé.\n" +"Téigh ar ais go dtí an duga crann radharc Áitiúil chun feidhmíocht a fheabhsú." + +msgid "Local" +msgstr "Áitiúil" + +msgid "Delete Related Animation Tracks" +msgstr "Scrios Rianta Beochana Gaolmhara" + +msgid "Clear Inheritance? (No Undo!)" +msgstr "Oidhreacht Shoiléir? (Gan Cealaigh!)" + +msgid "Path is empty." +msgstr "Tá an cosán folamh." + +msgid "Filename is empty." +msgstr "Tá ainm comhaid folamh." + +msgid "Filename is invalid." +msgstr "Tá ainm comhaid neamhbhailí." + +msgid "Path is not local." +msgstr "Níl an cosán áitiúil." + +msgid "Base path is invalid." +msgstr "Tá an bunchonair neamhbhailí." + +msgid "A directory with the same name exists." +msgstr "Tá comhadlann ann leis an ainm céanna." + +msgid "File does not exist." +msgstr "Níl an comhad ann." + +msgid "Invalid extension." +msgstr "Iarmhír neamhbhailí." + +msgid "Extension doesn't match chosen language." +msgstr "Ní hionann síneadh agus an teanga roghnaithe." + +msgid "Template:" +msgstr "Teimpléad:" + +msgid "Error - Could not create script in filesystem." +msgstr "Earráid - Níorbh fhéidir script a chruthú sa chóras comhad." + +msgid "Error loading script from %s" +msgstr "Earráid agus script á luchtú ó %s" + +msgid "Open Script / Choose Location" +msgstr "Oscail Script / Roghnaigh Suíomh" + +msgid "Open Script" +msgstr "Oscail Script" + +msgid "Inherit %s" +msgstr "Faigh %s le hoidhreacht" + +msgid "Inherit" +msgstr "Oidhreacht" + +msgid "Invalid path." +msgstr "Cosán neamhbhailí." + +msgid "Invalid inherited parent name or path." +msgstr "Ainm nó cosán neamhbhailí a fuarthas le hoidhreacht." + +msgid "File exists, it will be reused." +msgstr "Tá an comhad ann, déanfar é a athúsáid." + +msgid "" +"Note: Built-in scripts have some limitations and can't be edited using an " +"external editor." +msgstr "" +"Nóta: Tá roinnt teorainneacha ag scripteanna tógtha agus ní féidir iad a chur " +"in eagar ag baint úsáide as eagarthóir seachtrach." + +msgid "" +"Warning: Having the script name be the same as a built-in type is usually not " +"desired." +msgstr "" +"Rabhadh: Ní bhíonn an t-ainm scripte mar an gcéanna le cineál tógtha de " +"ghnáth." + +msgid "Built-in script (into scene file)." +msgstr "Tógtha-i script (i gcomhad radharc)." + +msgid "Using existing script file." +msgstr "Ag baint úsáide as comhad scripte atá ann cheana." + +msgid "Will load an existing script file." +msgstr "Lódálfaidh sé comhad scripte atá ann cheana." + +msgid "Script file already exists." +msgstr "Tá an comhad scripte ann cheana." + +msgid "No suitable template." +msgstr "Níl aon teimpléad oiriúnach." + +msgid "Empty" +msgstr "Folamh" + +msgid "Script path/name is valid." +msgstr "Tá cosán/ainm na scripte bailí." + +msgid "Will create a new script file." +msgstr "Cruthóidh sé comhad scripte nua." + +msgid "Built-in Script:" +msgstr "Script Tógtha:" + +msgid "Attach Node Script" +msgstr "Ceangail Script nód" + +msgid "Error - Could not create shader include in filesystem." +msgstr "Earráid - Níorbh fhéidir scáthóir a chruthú sa chóras comhad." + +msgid "Error - Could not create shader in filesystem." +msgstr "Earráid - Níorbh fhéidir scáthóir a chruthú sa chóras comhad." + +msgid "Error loading shader from %s" +msgstr "Earráid agus scáthóir á luchtú ó %s" + +msgid "N/A" +msgstr "N/A" + +msgid "Open Shader / Choose Location" +msgstr "Oscail Scáthóir / Roghnaigh Suíomh" + +msgid "Invalid base path." +msgstr "Bunchonair neamhbhailí." + +msgid "Wrong extension chosen." +msgstr "Síneadh mícheart roghnaithe." + +msgid "Note: Built-in shaders can't be edited using an external editor." +msgstr "" +"Nóta: Ní féidir shaders tógtha a chur in eagar ag baint úsáide as eagarthóir " +"seachtrach." + +msgid "Built-in shader (into scene file)." +msgstr "Tógtha-i shader (i gcomhad radharc)." + +msgid "Will load an existing shader file." +msgstr "An mbeidh luchtú comhad shader atá ann cheana féin." + +msgid "Shader file already exists." +msgstr "Tá an comhad scáthaigh ann cheana féin." + +msgid "Shader path/name is valid." +msgstr "Tá cosán / ainm an scáthóra bailí." + +msgid "Will create a new shader file." +msgstr "Cruthóidh sé comhad nua shader." + +msgid "Mode:" +msgstr "Mód:" + +msgid "Built-in Shader:" +msgstr "Tógtha-i Shader:" + +msgid "Create Shader" +msgstr "Cruthaigh Scáthóir" + +msgid "Set Shader Global Variable" +msgstr "Socraigh Athróg Dhomhanda Shader" + +msgid "Name cannot be empty." +msgstr "Ní féidir leis an ainm a bheith folamh." + +msgid "Name must be a valid identifier." +msgstr "Ní mór an t-ainm a bheith ina aitheantóir bailí." + +msgid "Global shader parameter '%s' already exists." +msgstr "Tá paraiméadar scáthaithe domhanda '%s' ann cheana." + +msgid "Name '%s' is a reserved shader language keyword." +msgstr "Is eochairfhocal teanga shader forchoimeádta é an t-ainm '%s'." + +msgid "Add Shader Global Parameter" +msgstr "Cuir Paraiméadar Domhanda Shader Leis" + +msgid "" +"This project uses meshes with an outdated mesh format from previous Godot " +"versions. The engine needs to update the format in order to use those meshes. " +"Please use the 'Upgrade Mesh Surfaces' tool from the 'Project > Tools' menu. " +"You can ignore this message and keep using outdated meshes, but keep in mind " +"that this leads to increased load times every time you load the project." +msgstr "" +"Úsáideann an tionscadal seo mogaill le formáid mogaill atá as dáta ó " +"leaganacha Godot roimhe seo. Ní mór don inneall an fhormáid a nuashonrú chun " +"na mogaill sin a úsáid. Bain úsáid as an uirlis 'Uasghrádú Dromchlaí Mogall' " +"ón roghchlár 'Project > Tools'. Is féidir leat neamhaird a dhéanamh den " +"teachtaireacht seo agus leanúint ar aghaidh ag baint úsáide as mogaill atá as " +"dáta, ach cuimhnigh go n-eascraíonn amanna ualaigh méadaithe gach uair a " +"lódálann tú an tionscadal." + +msgid "" +"This project uses meshes with an outdated mesh format. Check the output log." +msgstr "" +"Úsáideann an tionscadal seo mogaill le formáid mogalra atá as dáta. Seiceáil " +"an logchomhad aschuir." + +msgid "Upgrading All Meshes in Project" +msgstr "Uasghrádú Gach Mogalra sa Tionscadal" + +msgid "Attempting to re-save " +msgstr "Ag iarraidh ath-shábháil " + +msgid "Attempting to remove " +msgstr "Ag iarraidh a bhaint " + +msgid "" +"The mesh format has changed in Godot 4.2, which affects both imported meshes " +"and meshes authored inside of Godot. The engine needs to update the format in " +"order to use those meshes.\n" +"\n" +"If your project predates Godot 4.2 and contains meshes, we recommend you run " +"this one time conversion tool. This update will restart the editor and may " +"take several minutes. Upgrading will make the meshes incompatible with " +"previous versions of Godot.\n" +"\n" +"You can still use your existing meshes as is. The engine will update each " +"mesh in memory, but the update will not be saved. Choosing this option will " +"lead to slower load times every time this project is loaded." +msgstr "" +"Tá an fhormáid mogalra athrú i Godot 4.2, a théann i bhfeidhm ar an dá " +"mogalra allmhairithe agus mogalraí údaraithe taobh istigh de Godot. Ní mór " +"don inneall an fhormáid a nuashonrú chun na mogaill sin a úsáid.\n" +"\n" +"Má predates do thionscadal Godot 4.2 agus tá mogalra, molaimid duit a " +"reáchtáil an uirlis comhshó am amháin. Atosóidh an nuashonrú seo an t-" +"eagarthóir agus b'fhéidir go dtógfaidh sé roinnt nóiméad. Beidh uasghrádú a " +"dhéanamh ar an mogalra neamh-chomhoiriúnach le leaganacha roimhe seo de " +"Godot.\n" +"\n" +"Is féidir leat do mhogaill atá ann cheana féin a úsáid mar atá. Déanfaidh an " +"t-inneall gach mogalra a nuashonrú sa chuimhne, ach ní shábhálfar an " +"nuashonrú. Má roghnaíonn tú an rogha seo, beidh amanna ualaigh níos moille " +"ann gach uair a luchtaítear an tionscadal seo." + +msgid "Restart & Upgrade" +msgstr "Atosaigh agus Uasghrádaigh" + +msgid "Make this panel floating in the screen %d." +msgstr "Cuir an painéal seo ar snámh sa scáileán %d." + +msgid "" +"Make this panel floating.\n" +"Right-click to open the screen selector." +msgstr "" +"Déan an painéal seo ar snámh.\n" +"Deaschliceáil chun an roghnóir scáileáin a oscailt." + +msgid "Select Screen" +msgstr "Roghnaigh Scáileán" + +msgid "Change Cylinder Radius" +msgstr "Athraigh Ga an tSorcóra" + +msgid "Change Cylinder Height" +msgstr "Athraigh Airde an tSorcóra" + +msgid "Change Torus Inner Radius" +msgstr "Athraigh Ga Istigh Torus" + +msgid "Change Torus Outer Radius" +msgstr "Athraigh Ga Seachtrach Torus" + +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "Argóint cineál neamhbhailí a thiontú (), úsáid TYPE_* tairisigh." + +msgid "Cannot resize array." +msgstr "Ní féidir méid an eagair a athrú." + +msgid "Step argument is zero!" +msgstr "Is argóint Céim náid!" + +msgid "Not a script with an instance" +msgstr "Ní script le sampla" + +msgid "Not based on a script" +msgstr "Gan a bheith bunaithe ar script" + +msgid "Not based on a resource file" +msgstr "Gan a bheith bunaithe ar chomhad acmhainne" + +msgid "Invalid instance dictionary format (missing @path)" +msgstr "Formáid neamhbhailí foclóra ásc (@path ar iarraidh)" + +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "Formáid neamhbhailí foclóra ásc (ní féidir script a luchtú ag @path)" + +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "Formáid neamhbhailí an fhoclóra ásc (script neamhbhailí ag @path)" + +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "Foclóir ásc neamhbhailí (fo-aicmí neamhbhailí)" + +msgid "Cannot instantiate GDScript class." +msgstr "Ní féidir rang GDScript a mheandar." + +msgid "Value of type '%s' can't provide a length." +msgstr "Ní féidir fad a chur le luach an chineáil '%s'." + +msgid "" +"Invalid type argument for is_instance_of(), use TYPE_* constants for built-in " +"types." +msgstr "" +"Argóint cineál neamhbhailí le haghaidh is_instance_of (), bain úsáid as " +"tairisigh TYPE_* le haghaidh cineálacha tógtha." + +msgid "Type argument is a previously freed instance." +msgstr "Is cás saor in aisce roimhe seo é argóint cineál." + +msgid "" +"Invalid type argument for is_instance_of(), should be a TYPE_* constant, a " +"class or a script." +msgstr "" +"Ba chóir go mbeadh argóint neamhbhailí cineál le haghaidh is_instance_of (), " +"tairiseach TYPE_* , rang nó script." + +msgid "Value argument is a previously freed instance." +msgstr "Is argóint luach ásc saor in aisce roimhe seo." + +msgid "Export Scene to glTF 2.0 File" +msgstr "Easpórtáil Radharc go comhad glTF 2.0" + +msgid "Export Settings:" +msgstr "Socruithe Easpórtála:" + +msgid "glTF 2.0 Scene..." +msgstr "glTF 2.0 radharc..." + +msgid "Path does not point to a valid executable." +msgstr "Ní dhíríonn an cosán ar inrite bailí." + +msgid "Couldn't run Blender executable." +msgstr "Níorbh fhéidir inrite cumascóra a rith." + +msgid "Unexpected --version output from Blender executable at: %s." +msgstr "Aschur gan choinne - leagan ó inrite Cumascóir ag: %s." + +msgid "Couldn't extract version information from Blender executable at: %s." +msgstr "Níorbh fhéidir faisnéis leagain a bhaint as inrite cumascóra ag: %s." + +msgid "" +"Found Blender version %d.x, which is too old for this importer (3.0+ is " +"required)." +msgstr "" +"Aimsíodh leagan cumascóra %d.x, atá róshean don iompórtálaí seo (tá 3.0+ ag " +"teastáil)." + +msgid "Path to Blender executable is valid (Autodetected)." +msgstr "Tá conair inrite cumascóra bailí (Autodetected)." + +msgid "Path to Blender executable is valid." +msgstr "Tá conair inrite cumascóra bailí." + +msgid "Configure Blender Importer" +msgstr "Cumraigh Iompórtálaí Cumascóra" + +msgid "" +"Blender 3.0+ is required to import '.blend' files.\n" +"Please provide a valid path to a Blender executable." +msgstr "" +"Tá cumascóir 3.0+ ag teastáil chun comhaid '.blend' a iompórtáil.\n" +"Cuir cosán bailí ar fáil do inrite Cumascóir." + +msgid "" +"On macOS, this should be the `Contents/MacOS/blender` file within the Blender " +"`.app` folder." +msgstr "" +"Ar macOS, ba chóir gurb é seo an comhad 'Clár ábhair / MacOS / cumascóir' " +"laistigh den fhillteán '.app' Cumascóir." + +msgid "Disable '.blend' Import" +msgstr "Díchumasaigh Iompórtáil '.blend'" + +msgid "" +"Disables Blender '.blend' files import for this project. Can be re-enabled in " +"Project Settings." +msgstr "" +"Díchumasaigh iompórtáil comhad cumascóra '.blend' don tionscadal seo. Is " +"féidir é a athchumasú i Socruithe Tionscadail." + +msgid "Disabling '.blend' file import requires restarting the editor." +msgstr "" +"Ní mór an t-eagarthóir a atosú chun iompórtáil comhad '.blend' a dhíchumasú." + +msgid "Next Plane" +msgstr "An Chéad Phlána Eile" + +msgid "Previous Plane" +msgstr "Plána Roimhe Seo" + +msgid "Plane:" +msgstr "Eitleán:" + +msgid "Next Floor" +msgstr "An Chéad Urlár Eile" + +msgid "Previous Floor" +msgstr "An tUrlár Roimhe Seo" + +msgid "Floor:" +msgstr "Urlár:" + +msgid "GridMap Delete Selection" +msgstr "GridMap Scrios Roghnúchán" + +msgid "GridMap Fill Selection" +msgstr "GridMap Líon Roghnúchán" + +msgid "GridMap Paste Selection" +msgstr "Roghnú Greamaigh GridMap" + +msgid "GridMap Paint" +msgstr "Péint Mapa Greille" + +msgid "GridMap Selection" +msgstr "Roghnú Mapa Greille" + +msgid "Edit X Axis" +msgstr "Cuir Ais X in Eagar" + +msgid "Edit Y Axis" +msgstr "Cuir Ais Y in Eagar" + +msgid "Edit Z Axis" +msgstr "Cuir Ais Z in Eagar" + +msgid "Cursor Rotate X" +msgstr "Rothlaigh an cúrsóir X" + +msgid "Cursor Rotate Y" +msgstr "Rothlaigh Y an Chúrsóra" + +msgid "Cursor Rotate Z" +msgstr "Rothlaigh Cúrsóir Z" + +msgid "Cursor Back Rotate X" +msgstr "Rothlaigh an cúrsóir ar ais X" + +msgid "Cursor Back Rotate Y" +msgstr "Cúrsóir Ar Ais Rothlaigh Y" + +msgid "Cursor Back Rotate Z" +msgstr "Cúrsóir Ar Ais Rothlaigh Z" + +msgid "Cursor Clear Rotation" +msgstr "Rothlú Glan an Chúrsóra" + +msgid "Paste Selects" +msgstr "Greamaigh Roghanna" + +msgid "Cut Selection" +msgstr "Gearr an Roghnúchán" + +msgid "Clear Selection" +msgstr "Glan an Roghnúchán" + +msgid "Fill Selection" +msgstr "Líon an Roghnúchán" + +msgid "Grid Map" +msgstr "Mapa Greille" + +msgid "GridMap Settings" +msgstr "Socruithe Mapa Greille" + +msgid "Pick Distance:" +msgstr "Roghnaigh Fad:" + +msgid "Filter Meshes" +msgstr "Mogalraí Scag" + +msgid "Give a MeshLibrary resource to this GridMap to use its meshes." +msgstr "Tabhair acmhainn MeshLibrary don GridMap seo chun a mhogaill a úsáid." + +msgid "All Clips" +msgstr "Gach Gearrthóg" + +msgid "Add Clip" +msgstr "Cuir Gearrthóg Leis" + +msgid "Add Stream" +msgstr "Cuir Sruth Leis" + +msgid "Disabled" +msgstr "Díchumasaithe" + +msgid "Fade-In" +msgstr "Céimnigh Isteach" + +msgid "Fade-Out" +msgstr "Céimnigh Amach" + +msgid "Cross-Fade" +msgstr "Tras-Céimnithe" + +msgid "Automatic" +msgstr "Uathoibríoch" + +msgid "Edit Transitions" +msgstr "Cuir Aistrithe in Eagar" + +msgid "Using Any Clip -> %s." +msgstr "Ag Úsáid Gearrthóg ar bith -> %s." + +msgid "Using %s -> Any Clip." +msgstr "Ag baint úsáid as %s -> Clip ar bith." + +msgid "Using All Clips -> Any Clip." +msgstr "Ag baint úsáide as Gach Gearrthóg -> Aon Clip." + +msgid "No transition available." +msgstr "Níl aon aistriú ar fáil." + +msgid "Next Beat" +msgstr "An Chéad Bhuille Eile" + +msgid "Next Bar" +msgstr "An Chéad Bharra Eile" + +msgid "Clip End" +msgstr "Deireadh Gearrthóg" + +msgctxt "Transition Time Position" +msgid "Same" +msgstr "Mar an gcéanna" + +msgctxt "Transition Time Position" +msgid "Start" +msgstr "Tosaigh" + +msgctxt "Transition Time Position" +msgid "Prev" +msgstr "PrevGenericName" + +msgid "From / To" +msgstr "Ó / Go" + +msgid "Any Clip" +msgstr "Aon Ghearrthóg" + +msgid "AudioStreamInteractive Transition Editor" +msgstr "Eagarthóir Aistrithe AudioStreamInteractive" + +msgid "Use Transition:" +msgstr "Úsáid Aistriú:" + +msgid "Transition From:" +msgstr "Aistriú Ó:" + +msgid "Transition To:" +msgstr "Aistriú chuig:" + +msgid "Same Position" +msgstr "An Seasamh Céanna" + +msgid "Clip Start" +msgstr "Tús Gearrthóg" + +msgid "Prev Position" +msgstr "Ionad Prev" + +msgid "Fade Mode:" +msgstr "Mód Céimnithe:" + +msgid "Fade Beats:" +msgstr "Buillí Céimnithe:" + +msgid "Filler Clip:" +msgstr "Fáiscín Filler:" + +msgid "Hold Previous:" +msgstr "Coinnigh Roimhe Seo:" + +msgid "Determining optimal atlas size" +msgstr "An méid atlas is fearr is féidir a chinneadh" + +msgid "Blitting albedo and emission" +msgstr "Blitting albedo agus astaíocht" + +msgid "Plotting mesh into acceleration structure %d/%d" +msgstr "Mogalra á bhreacadh i struchtúr luasghéaraithe %d/%d" + +msgid "Optimizing acceleration structure" +msgstr "Struchtúr luasghéaraithe a bharrfheabhsú" + +msgid "Begin Bake" +msgstr "Tosaigh Bácáil" + +msgid "Preparing shaders" +msgstr "Ag ullmhú shaders" + +msgid "Un-occluding geometry" +msgstr "Geoiméadracht neamh-occluding" + +msgid "Plot direct lighting" +msgstr "Breacadh soilsiú díreach" + +msgid "Integrate indirect lighting" +msgstr "Comhtháthaigh soilsiú indíreach" + +msgid "Integrate indirect lighting %d%%" +msgstr "Comhtháthaigh soilsiú indíreach %d%%" + +msgid "Baking lightprobes" +msgstr "Lightprobes bácála" + +msgid "Integrating light probes %d%%" +msgstr "Tóireadóirí solais %d%% á gcomhtháthú" + +msgid "Denoising" +msgstr "Dífuaimiú" + +msgid "Retrieving textures" +msgstr "Uigeachtaí á n-aisghabháil" + +msgid "Class name can't be a reserved keyword" +msgstr "Ní féidir le hainm ranga a bheith ina eochairfhocal forchoimeádta" + +msgid "Class name must be a valid identifier" +msgstr "Ní mór ainm ranga a bheith ina aitheantóir bailí" + +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "Ní leor bearta chun bearta díchódaithe, nó formáid neamhbhailí." + +msgid "" +"Unable to load .NET runtime, no compatible version was found.\n" +"Attempting to create/edit a project will lead to a crash.\n" +"\n" +"Please install the .NET SDK 6.0 or later from https://dotnet.microsoft.com/en-" +"us/download and restart Godot." +msgstr "" +"Ní féidir am rite .NET a luchtú, níor aimsíodh aon leagan comhoiriúnach.\n" +"Má dhéantar iarracht tionscadal a chruthú / a chur in eagar, beidh timpiste " +"ann.\n" +"\n" +"Suiteáil an .NET SDK 6.0 nó níos déanaí ó https://dotnet.microsoft.com/en-us/" +"download agus atosaigh Godot." + +msgid "Failed to load .NET runtime" +msgstr "Níorbh fhéidir am rite .NET a luchtú" + +msgid "" +"Unable to find the .NET assemblies directory.\n" +"Make sure the '%s' directory exists and contains the .NET assemblies." +msgstr "" +"Ní féidir an chomhadlann tionóil .NET a aimsiú.\n" +"Cinntigh go bhfuil an chomhadlann '%s' ann agus go bhfuil na tionóil .NET ann." + +msgid ".NET assemblies not found" +msgstr "Ní bhfuarthas tionóil .NET" + +msgid "" +"Unable to load .NET runtime, specifically hostfxr.\n" +"Attempting to create/edit a project will lead to a crash.\n" +"\n" +"Please install the .NET SDK 6.0 or later from https://dotnet.microsoft.com/en-" +"us/download and restart Godot." +msgstr "" +"Ní féidir am rite .NET a luchtú, go sonrach hostfxr.\n" +"Má dhéantar iarracht tionscadal a chruthú / a chur in eagar, beidh timpiste " +"ann.\n" +"\n" +"Suiteáil an .NET SDK 6.0 nó níos déanaí ó https://dotnet.microsoft.com/en-us/" +"download agus atosaigh Godot." + +msgid "%d (%s)" +msgstr "%d (%s)" + +msgid "%s/s" +msgstr "%s/s" + +msgctxt "Network" +msgid "Down" +msgstr "An Dún" + +msgctxt "Network" +msgid "Up" +msgstr "Suas" + +msgid "Incoming RPC" +msgstr "RPC isteach" + +msgid "Outgoing RPC" +msgstr "RPC atá ag dul as oifig" + +msgid "Synchronizer" +msgstr "Sioncrónóir" + +msgid "Config" +msgstr "Cumraíocht" + +msgid "Count" +msgstr "Comhaireamh" + +msgid "Network Profiler" +msgstr "Próifíleoir Líonra" + +msgid "Replication" +msgstr "Macasamhlú" + +msgid "Toggle Replication Bottom Panel" +msgstr "Scoránaigh an Painéal Bun Macasamhlaithe" + +msgid "Select a replicator node in order to pick a property to add to it." +msgstr "Roghnaigh nód macasamhlaithe chun maoin a roghnú le cur leis." + +msgid "Not possible to add a new property to synchronize without a root." +msgstr "Ní féidir maoin nua a chur leis chun sioncrónú gan fréamh." + +msgid "Property is already being synchronized." +msgstr "Tá maoin á sioncrónú cheana féin." + +msgid "Add property to synchronizer" +msgstr "Cuir maoin leis an sioncrónóir" + +msgid "Pick a node to synchronize:" +msgstr "Roghnaigh nód le sioncrónú:" + +msgid "Add property to sync..." +msgstr "Cuir maoin le sioncronú..." + +msgid "Add from path" +msgstr "Cuir leis ón gcosán" + +msgid "Pin replication editor" +msgstr "Eagarthóir macasamhlaithe bioráin" + +msgid "Spawn" +msgstr "Sceith" + +msgid "Replicate" +msgstr "Macasamhlú" + +msgid "" +"Add properties using the options above, or\n" +"drag them from the inspector and drop them here." +msgstr "" +"Cuir airíonna leis ag baint úsáide as na roghanna thuas, nó\n" +"tarraing ón gcigire iad agus scaoil anseo iad." + +msgid "Please select a MultiplayerSynchronizer first." +msgstr "Roghnaigh MultiplayerSynchronizer ar dtús." + +msgid "The MultiplayerSynchronizer needs a root path." +msgstr "Teastaíonn cosán fréimhe ón MultiplayerSynchronizer." + +msgid "Property/path must not be empty." +msgstr "Ní ceadmhach maoin/cosán a bheith folamh." + +msgid "Invalid property path: '%s'" +msgstr "Conair neamhbhailí maoine: '%s'" + +msgid "Set spawn property" +msgstr "Socraigh maoin sceite" + +msgid "Set sync property" +msgstr "Socraigh maoin shioncronaithe" + +msgid "" +"Each MultiplayerSynchronizer can have no more than 64 watched properties." +msgstr "" +"Ní féidir le gach MultiplayerSynchronizer níos mó ná 64 airíonna faire a " +"bheith acu." + +msgid "Delete Property?" +msgstr "Scrios Maoin?" + +msgid "Remove Property" +msgstr "Bain Maoin" + +msgid "Property of this type not supported." +msgstr "Ní thacaítear le maoin den chineál seo." + +msgctxt "Replication Mode" +msgid "Never" +msgstr "Riamh" + +msgctxt "Replication Mode" +msgid "Always" +msgstr "I gcónaí" + +msgctxt "Replication Mode" +msgid "On Change" +msgstr "Ar Athrú" + +msgid "" +"A valid NodePath must be set in the \"Spawn Path\" property in order for " +"MultiplayerSpawner to be able to spawn Nodes." +msgstr "" +"Ní mór Cosán Nód bailí a shocrú sa mhaoin \"Cosán Sceite\" chun go mbeidh " +"MultiplayerSpawner in ann Nóid a sceitheadh." + +msgid "" +"A valid NodePath must be set in the \"Root Path\" property in order for " +"MultiplayerSynchronizer to be able to synchronize properties." +msgstr "" +"Ní mór NodePath bailí a shocrú sa mhaoin \"Root Path\" chun go mbeidh " +"MultiplayerSynchronizer in ann airíonna a shioncrónú." + +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" +"Ní mór acmhainn NavigationMesh a shocrú nó a chruthú chun go n-oibreoidh an " +"nód seo." + +msgid "" +"Cannot generate navigation mesh because it does not belong to the edited " +"scene. Make it unique first." +msgstr "" +"Ní féidir mogalra nascleanúna a ghiniúint toisc nach mbaineann sé leis an " +"radharc atheagraithe. Déan uathúil é ar dtús." + +msgid "" +"Cannot generate navigation mesh because it belongs to a resource which was " +"imported." +msgstr "" +"Ní féidir mogall nascleanúna a ghiniúint toisc go mbaineann sé le hacmhainn a " +"allmhairíodh." + +msgid "" +"Cannot generate navigation mesh because the resource was imported from " +"another type." +msgstr "" +"Ní féidir mogall nascleanúna a ghiniúint toisc gur iompórtáladh an acmhainn ó " +"chineál eile." + +msgid "Bake NavigationMesh" +msgstr "Bácáil NascleanúintMesh" + +msgid "" +"Bakes the NavigationMesh by first parsing the scene for source geometry and " +"then creating the navigation mesh vertices and polygons." +msgstr "" +"Bácáil an NavigationMesh tríd an radharc a pharsáil ar dtús le haghaidh " +"geoiméadracht foinse agus ansin na vertices mogalra nascleanúna agus polagáin " +"a chruthú." + +msgid "Clear NavigationMesh" +msgstr "Glan NascleanúintMesh" + +msgid "Clears the internal NavigationMesh vertices and polygons." +msgstr "Clears an vertices nascleanúint inmheánachMesh agus polagáin." + +msgid "Toggles whether the noise preview is computed in 3D space." +msgstr "Scoránaigh cibé an ríomhtar an réamhamharc torainn i spás 3D." + +msgid "Rename Action" +msgstr "Athainmnigh Gníomh" + +msgid "Rename Actions Localized name" +msgstr "Athainmnigh Gníomhartha Ainm logánaithe" + +msgid "Change Action Type" +msgstr "Athraigh Cineál Gnímh" + +msgid "Remove action" +msgstr "Bain gníomh" + +msgid "Add action set" +msgstr "Cuir tacar gníomhartha leis" + +msgid "Remove action set" +msgstr "Bain tacar gníomhartha" + +msgid "Add interaction profile" +msgstr "Cuir próifíl idirghníomhaíochta leis" + +msgid "Error loading %s: %s." +msgstr "Earráid agus %s á luchtú: %s." + +msgid "Error saving file %s: %s" +msgstr "Earráid agus comhad %s á shábháil: %s" + +msgid "OpenXR Action map:" +msgstr "Mapa gníomhaíochta OpenXR:" + +msgid "Remove interaction profile" +msgstr "Bain próifíl idirghníomhaíochta" + +msgid "Action Map" +msgstr "Mapa Gníomhaíochta" + +msgid "Add Action Set" +msgstr "Cuir Tacar Gníomhartha Leis" + +msgid "Add an action set." +msgstr "Cuir tacar gníomhaíochta leis." + +msgid "Add profile" +msgstr "Cuir próifíl leis" + +msgid "Add an interaction profile." +msgstr "Cuir próifíl idirghníomhaíochta leis." + +msgid "Save this OpenXR action map." +msgstr "Sábháil an léarscáil ghníomhaíochta OpenXR seo." + +msgid "Reset to default OpenXR action map." +msgstr "Athshocraigh go mapa réamhshocraithe gníomhaíochta OpenXR." + +msgid "Action Sets" +msgstr "Seiteanna Gníomhaíochta" + +msgid "Rename Action Set" +msgstr "Athainmnigh Tacar Gníomhartha" + +msgid "Rename Action Sets Localized name" +msgstr "Athainmnigh Seiteanna Gníomhaíochta Ainm logánaithe" + +msgid "Change Action Sets priority" +msgstr "Athraigh Gníomh Socraigh tosaíocht" + +msgid "Add action" +msgstr "Cuir gníomh leis" + +msgid "Delete action" +msgstr "Scrios gníomh" + +msgid "Add action." +msgstr "Cuir gníomh leis." + +msgid "Remove action set." +msgstr "Bain tacar gníomhaíochta." + +msgid "OpenXR Action Map" +msgstr "Mapa Gníomhaíochta OpenXR" + +msgid "Toggle OpenXR Action Map Bottom Panel" +msgstr "Scoránaigh Bunphainéal Mapa Gníomhaíochta OpenXR" + +msgid "Remove action from interaction profile" +msgstr "Bain gníomh ón bpróifíl idirghníomhaíochta" + +msgid "Add binding" +msgstr "Cuir ceangal leis" + +msgid "Remove binding" +msgstr "Bain ceangal" + +msgid "Pose" +msgstr "Údar" + +msgid "Haptic" +msgstr "Haptach" + +msgid "Unknown" +msgstr "Neamhaithnid" + +msgid "Select an action" +msgstr "Roghnaigh gníomh" + +msgid "Select an interaction profile" +msgstr "Roghnaigh próifíl idirghníomhaíochta" + +msgid "Choose an XR runtime." +msgstr "Roghnaigh am rite XR." + +msgid "" +"Cannot use the same SubViewport with multiple OpenXR composition layers. " +"Clear it from its current layer first." +msgstr "" +"Ní féidir an SubViewport céanna a úsáid le sraitheanna comhdhéanamh OpenXR " +"iolracha. Glan é óna chiseal reatha ar dtús." + +msgid "OpenXR composition layers must have an XROrigin3D node as their parent." +msgstr "" +"Ní mór nód XROrigin3D a bheith ag sraitheanna comhdhéanamh OpenXR mar " +"thuismitheoir." + +msgid "" +"OpenXR composition layers must have orthonormalized transforms (ie. no scale " +"or shearing)." +msgstr "" +"Ní mór go mbeadh claochluithe orthonormalized ag sraitheanna comhdhéanamh " +"OpenXR (ie gan aon scála nó lomadh)." + +msgid "" +"Hole punching won't work as expected unless the sort order is less than zero." +msgstr "" +"Ní oibreoidh polladh poll mar a bheifí ag súil leis mura bhfuil an t-ordú " +"sórtála níos lú ná nialas." + +msgid "Package name is missing." +msgstr "Tá ainm an phacáiste ar iarraidh." + +msgid "Package segments must be of non-zero length." +msgstr "Ní mór do dheighleoga pacáiste a bheith ar fhad neamh-nialasach." + +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" +"Ní cheadaítear an carachtar '%s' in ainmneacha pacáiste feidhmchlár Android." + +msgid "A digit cannot be the first character in a package segment." +msgstr "Ní féidir le digit a bheith ar an gcéad charachtar i mír phacáiste." + +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" +"Ní féidir leis an gcarachtar '%s' a bheith ar an gcéad charachtar i mír " +"phacáiste." + +msgid "The package must have at least one '.' separator." +msgstr "Ní mór deighilteoir '.' amháin ar a laghad a bheith sa phacáiste." + +msgid "Error creating keystores directory:" +msgstr "Earráid agus comhadlann keystores á cruthú:" + +msgid "Invalid public key for APK expansion." +msgstr "Eochair phoiblí neamhbhailí le haghaidh leathnú APK." + +msgid "Invalid package name:" +msgstr "Ainm neamhbhailí an phacáiste:" + +msgid "\"Use Gradle Build\" must be enabled to use the plugins." +msgstr "Ní mór \"Úsáid Gradle Build\" a chumasú chun na breiseáin a úsáid." + +msgid "OpenXR requires \"Use Gradle Build\" to be enabled" +msgstr "Éilíonn OpenXR \"Use Gradle Build\" a chumasú" + +msgid "" +"\"Compress Native Libraries\" is only valid when \"Use Gradle Build\" is " +"enabled." +msgstr "" +"Níl \"Compress Native Libraries\" bailí ach amháin nuair a chumasaítear \"Use " +"Gradle Build\"." + +msgid "\"Export AAB\" is only valid when \"Use Gradle Build\" is enabled." +msgstr "" +"Níl \"Export AAB\" bailí ach amháin nuair a chumasaítear \"Use Gradle Build\"." + +msgid "\"Min SDK\" can only be overridden when \"Use Gradle Build\" is enabled." +msgstr "" +"Ní féidir \"Min SDK\" a shárú ach amháin nuair a chumasaítear \"Use Gradle " +"Build\"." + +msgid "\"Min SDK\" should be a valid integer, but got \"%s\" which is invalid." +msgstr "" +"Ba chóir go mbeadh \"Min SDK\" ina slánuimhir bhailí, ach fuair sé \"%s\" atá " +"neamhbhailí." + +msgid "" +"\"Min SDK\" cannot be lower than %d, which is the version needed by the Godot " +"library." +msgstr "" +"Ní féidir le \"Min SDK\" a bheith níos ísle ná %d, is é sin an leagan a " +"theastaíonn ó leabharlann Godot." + +msgid "" +"\"Target SDK\" can only be overridden when \"Use Gradle Build\" is enabled." +msgstr "" +"Ní féidir \"Sprioc SDK\" a shárú ach amháin nuair a chumasaítear \"Use Gradle " +"Build\"." + +msgid "" +"\"Target SDK\" should be a valid integer, but got \"%s\" which is invalid." +msgstr "" +"Ba chóir go mbeadh \"Sprioc SDK\" ina slánuimhir bhailí, ach fuair sé \"%s\" " +"atá neamhbhailí." + +msgid "\"Target SDK\" version must be greater or equal to \"Min SDK\" version." +msgstr "" +"Ní mór leagan \"Sprioc SDK\" a bheith níos mó nó cothrom le leagan \"Min " +"SDK\"." + +msgid "Select device from the list" +msgstr "Roghnaigh gléas ón liosta" + +msgid "Running on %s" +msgstr "Ag rith ar %s" + +msgid "Exporting APK..." +msgstr "APK á easpórtáil..." + +msgid "Uninstalling..." +msgstr "Á Dhíshuiteáil..." + +msgid "Installing to device, please wait..." +msgstr "Ag suiteáil ar an ngléas, fan go fóill..." + +msgid "Could not install to device: %s" +msgstr "Níorbh fhéidir suiteáil sa ghléas: %s" + +msgid "Running on device..." +msgstr "Ag rith ar an ngléas..." + +msgid "Could not execute on device." +msgstr "Níorbh fhéidir rith ar an ngléas." + +msgid "Error: There was a problem validating the keystore username and password" +msgstr "" +"Earráid: Bhí fadhb ann ainm úsáideora agus pasfhocal an keystore a bhailíochtú" + +msgid "Exporting to Android when using C#/.NET is experimental." +msgstr "Tá onnmhairiú chuig Android agus C #/.NET á úsáid turgnamhach." + +msgid "Android architecture %s not supported in C# projects." +msgstr "Ní thacaítear le hailtireacht Android %s i dtionscadail C#." + +msgid "Custom Android source template not found." +msgstr "Níor aimsíodh teimpléad foinse Android saincheaptha." + +msgid "" +"Android build template not installed in the project. Install it from the " +"Project menu." +msgstr "" +"Teimpléad tógála Android nach bhfuil suiteáilte sa tionscadal. Suiteáil é ón " +"roghchlár Tionscadail." + +msgid "" +"Either Debug Keystore, Debug User AND Debug Password settings must be " +"configured OR none of them." +msgstr "" +"Ní mór socruithe Debug Keystore, Debug User AND Debug Password a chumrú NÓ " +"aon cheann acu." + +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" +"Dífhabhtaigh an siopa eochrach nach bhfuil cumraithe i Socruithe an " +"Eagarthóra ná sa réamhshocrú." + +msgid "" +"Either Release Keystore, Release User AND Release Password settings must be " +"configured OR none of them." +msgstr "" +"Ní mór ceachtar Keystore Scaoileadh, Scaoileadh Úsáideora AGUS Scaoileadh " +"Pasfhocal socruithe a chumrú NÓ aon cheann acu." + +msgid "Release keystore incorrectly configured in the export preset." +msgstr "" +"Scaoil an siopa eochrach cumraithe go mícheart sa réamhshocrú easpórtála." + +msgid "A valid Java SDK path is required in Editor Settings." +msgstr "Tá cosán bailí Java SDK ag teastáil i Socruithe Eagarthóra." + +msgid "Invalid Java SDK path in Editor Settings." +msgstr "Cosán neamhbhailí Java SDK i Socruithe Eagarthóra." + +msgid "Missing 'bin' directory!" +msgstr "Comhadlann 'bin' ar iarraidh!" + +msgid "Unable to find 'java' command using the Java SDK path." +msgstr "Ní féidir ordú 'java' a aimsiú le cosán Java SDK." + +msgid "Please check the Java SDK directory specified in Editor Settings." +msgstr "Seiceáil an chomhadlann Java SDK atá sonraithe i Socruithe Eagarthóra." + +msgid "A valid Android SDK path is required in Editor Settings." +msgstr "Tá cosán SDK Android bailí ag teastáil i Socruithe Eagarthóra." + +msgid "Invalid Android SDK path in Editor Settings." +msgstr "Cosán SDK Android neamhbhailí i Socruithe Eagarthóra." + +msgid "Missing 'platform-tools' directory!" +msgstr "Comhadlann 'platform-tools' ar iarraidh!" + +msgid "Unable to find Android SDK platform-tools' adb command." +msgstr "Ní féidir ordú adb Android SDK ardán-uirlisí a aimsiú." + +msgid "Please check in the Android SDK directory specified in Editor Settings." +msgstr "" +"Seiceáil le do thoil san eolaire SDK Android atá sonraithe i Socruithe " +"Eagarthóir." + +msgid "Missing 'build-tools' directory!" +msgstr "Comhadlann 'build-tools' ar iarraidh!" + +msgid "Unable to find Android SDK build-tools' apksigner command." +msgstr "Ní féidir ordú apksigner Android SDK a aimsiú." + +msgid "" +"\"Target SDK\" %d is higher than the default version %d. This may work, but " +"wasn't tested and may be unstable." +msgstr "" +"Tá \"Sprioc SDK\" %d níos airde ná an leagan réamhshocraithe %d. D'fhéadfadh " +"sé seo a bheith ag obair, ach níor tástáladh é agus d'fhéadfadh sé a bheith " +"éagobhsaí." + +msgid "" +"The \"%s\" renderer is designed for Desktop devices, and is not suitable for " +"Android devices." +msgstr "" +"Tá an rindreálaí \"%s\" deartha le haghaidh gléasanna Deisce, agus níl sé " +"oiriúnach do ghléasanna Android." + +msgid "\"Min SDK\" should be greater or equal to %d for the \"%s\" renderer." +msgstr "" +"Ba chóir go mbeadh \"Min SDK\" níos mó nó cothrom le %d don rindreálaí \"%s\"." + +msgid "" +"The project name does not meet the requirement for the package name format " +"and will be updated to \"%s\". Please explicitly specify the package name if " +"needed." +msgstr "" +"Ní chomhlíonann ainm an tionscadail an riachtanas maidir le formáid ainm an " +"phacáiste agus nuashonrófar é go \"%s\". Sonraigh ainm an phacáiste go " +"sainráite más gá." + +msgid "Code Signing" +msgstr "Síniú an Chóid" + +msgid "" +"All 'apksigner' tools located in Android SDK 'build-tools' directory failed " +"to execute. Please check that you have the correct version installed for your " +"target sdk version. The resulting %s is unsigned." +msgstr "" +"Theip ar gach uirlis 'apksigner' atá lonnaithe in eolaire 'uirlisí tógála' " +"Android SDK a fhorghníomhú. Seiceáil le do thoil go bhfuil an leagan ceart " +"suiteáilte agat le do spriocleagan SDK. Tá an %s mar thoradh air gan síniú." + +msgid "" +"'apksigner' could not be found. Please check that the command is available in " +"the Android SDK build-tools directory. The resulting %s is unsigned." +msgstr "" +"Níorbh fhéidir 'apksigner' a aimsiú. Seiceáil le do thoil go bhfuil an t-ordú " +"ar fáil san eolaire uirlisí tógála SDK Android. Tá an %s mar thoradh air gan " +"síniú." + +msgid "Signing debug %s..." +msgstr "Dífhabhtú %s á shíniú..." + +msgid "Signing release %s..." +msgstr "Eisiúint %s á shíniú..." + +msgid "Could not find keystore, unable to export." +msgstr "Níorbh fhéidir siopa eochrach a aimsiú, gan a bheith in ann easpórtáil." + +msgid "Could not start apksigner executable." +msgstr "Níorbh fhéidir inrite apksigner a thosú." + +msgid "'apksigner' returned with error #%d" +msgstr "'apksigner' ar ais le earráid #%d" + +msgid "" +"output: \n" +"%s" +msgstr "" +"aschur: \n" +"%s" + +msgid "Verifying %s..." +msgstr "%s á fhíorú..." + +msgid "'apksigner' verification of %s failed." +msgstr "Theip ar fhíorú 'apksigner' ar %s." + +msgid "Target folder does not exist or is inaccessible: \"%s\"" +msgstr "Níl an spriocfhillteán ann nó níl sé dorochtana: \"%s\"" + +msgid "Exporting for Android" +msgstr "Easpórtáil le haghaidh Android" + +msgid "Invalid filename! Android App Bundle requires the *.aab extension." +msgstr "Ainm neamhbhailí comhaid! Éilíonn Beart App Android an síneadh *.aab." + +msgid "APK Expansion not compatible with Android App Bundle." +msgstr "Leathnú APK nach bhfuil comhoiriúnach le Beart App Android." + +msgid "Invalid filename! Android APK requires the *.apk extension." +msgstr "Ainm neamhbhailí comhaid! Éilíonn Android APK an síneadh *.apk." + +msgid "Unsupported export format!" +msgstr "Formáid easpórtála gan tacaíocht!" + +msgid "" +"Trying to build from a gradle built template, but no version info for it " +"exists. Please reinstall from the 'Project' menu." +msgstr "" +"Ag iarraidh a thógáil ó teimpléad gradle tógtha, ach níl aon eolas leagan " +"chun é ann. Athshuiteáil ón roghchlár 'Tionscadal'." + +msgid "" +"Java SDK path must be configured in Editor Settings at 'export/android/" +"java_sdk_path'." +msgstr "" +"Ní mór cosán Java SDK a chumrú i Socruithe Eagarthóra ag 'export / android / " +"java_sdk_path'." + +msgid "" +"Android SDK path must be configured in Editor Settings at 'export/android/" +"android_sdk_path'." +msgstr "" +"Ní mór cosán SDK Android a chumrú i Socruithe Eagarthóra ag 'export / " +"android / android_sdk_path'." + +msgid "Unable to overwrite res/*.xml files with project name." +msgstr "Ní féidir comhaid res / * .xml a fhorscríobh le hainm an tionscadail." + +msgid "Could not export project files to gradle project." +msgstr "" +"Níorbh fhéidir comhaid tionscadail a easpórtáil go tionscadal grádaithe." + +msgid "Could not write expansion package file!" +msgstr "Níorbh fhéidir comhad pacáiste leathnaithe a scríobh!" + +msgid "Building Android Project (gradle)" +msgstr "Tionscadal Android a Thógáil (gradle)" + +msgid "Building of Android project failed, check output for the error:" +msgstr "Theip ar thógáil an tionscadail Android, seiceáil aschur don earráid:" + +msgid "Moving output" +msgstr "Aschur á bhogadh" + +msgid "Unable to copy and rename export file:" +msgstr "Ní féidir an comhad easpórtála a chóipeáil agus a athainmniú:" + +msgid "Package not found: \"%s\"." +msgstr "Níor aimsíodh an pacáiste: \"%s\"." + +msgid "Creating APK..." +msgstr "APK á chruthú..." + +msgid "Could not find template APK to export: \"%s\"." +msgstr "Níorbh fhéidir teimpléad APK a aimsiú le heaspórtáil: \"%s\"." + +msgid "" +"Missing libraries in the export template for the selected architectures: %s. " +"Please build a template with all required libraries, or uncheck the missing " +"architectures in the export preset." +msgstr "" +"Leabharlanna ar iarraidh sa teimpléad easpórtála do na hailtireachtaí " +"roghnaithe: %s. Tóg teimpléad le gach leabharlann riachtanach, nó díthiceáil " +"na hailtireachtaí atá ar iarraidh sa réamhshocrú easpórtála." + +msgid "Adding files..." +msgstr "Comhaid á gcur leis..." + +msgid "Could not export project files." +msgstr "Níorbh fhéidir comhaid tionscadail a easpórtáil." + +msgid "Aligning APK..." +msgstr "APK á ailíniú..." + +msgid "Could not unzip temporary unaligned APK." +msgstr "Níorbh fhéidir APK sealadach gan síniú a unzip." + +msgid "App Store Team ID not specified." +msgstr "Níor sonraíodh aitheantas Fhoireann App Store." + +msgid "Invalid Identifier:" +msgstr "Aitheantóir neamhbhailí:" + +msgid "At least one file timestamp access reason should be selected." +msgstr "Ba cheart cúis rochtana stampa ama comhaid amháin ar a laghad a roghnú." + +msgid "At least one disk space access reason should be selected." +msgstr "Ba cheart cúis rochtana spáis diosca amháin ar a laghad a roghnú." + +msgid "At least one system boot time access reason should be selected." +msgstr "Ba chóir cúis rochtana ama tosaithe córais amháin ar a laghad a roghnú." + +msgid "Export Icons" +msgstr "Easpórtáil Deilbhíní" + +msgid "Could not open a directory at path \"%s\"." +msgstr "Níorbh fhéidir comhadlann a oscailt ag conair \"%s\"." + +msgid "Could not write to a file at path \"%s\"." +msgstr "Níorbh fhéidir scríobh chuig comhad ag conair \"%s\"." + +msgid "Exporting for iOS (Project Files Only)" +msgstr "Easpórtáil le haghaidh iOS (Comhaid Tionscadail Amháin)" + +msgid "Exporting for iOS" +msgstr "Easpórtáil le haghaidh iOS" + +msgid "Prepare Templates" +msgstr "Ullmhaigh Teimpléid" + +msgid "Export template not found." +msgstr "Níor aimsíodh teimpléad easpórtála." + +msgid "" +"Unexpected files found in the export destination directory \"%s.xcodeproj\", " +"delete it manually or select another destination." +msgstr "" +"Aimsíodh comhaid gan choinne sa chomhadlann easpórtála \"%s.xcodeproj\", " +"scrios de láimh é nó roghnaigh ceann scríbe eile." + +msgid "" +"Unexpected files found in the export destination directory \"%s\", delete it " +"manually or select another destination." +msgstr "" +"Aimsíodh comhaid gan choinne sa chomhadlann easpórtála \"%s\", scrios de " +"láimh é nó roghnaigh ceann scríbe eile." + +msgid "Failed to create the directory: \"%s\"" +msgstr "Theip ar chruthú na comhadlainne: \"%s\"" + +msgid "Could not create and open the directory: \"%s\"" +msgstr "Níorbh fhéidir an chomhadlann a chruthú agus a oscailt: \"%s\"" + +msgid "iOS Plugins" +msgstr "Breiseáin iOS" + +msgid "Failed to export iOS plugins with code %d. Please check the output log." +msgstr "" +"Theip ar bhreiseáin iOS a easpórtáil le cód %d. Seiceáil an logchomhad " +"aschuir." + +msgid "Could not create a directory at path \"%s\"." +msgstr "Níorbh fhéidir comhadlann a chruthú ag conair \"%s\"." + +msgid "" +"Requested template library '%s' not found. It might be missing from your " +"template archive." +msgstr "" +"Níor aimsíodh leabharlann teimpléid '%s' iarrtha. D'fhéadfadh sé a bheith ar " +"iarraidh ó do chartlann teimpléad." + +msgid "ARM64 simulator library, generating from device library." +msgstr "Leabharlann Insamhlóir ARM64, a ghineann ó leabharlann gléas." + +msgid "Unable to generate ARM64 simulator library." +msgstr "Ní féidir leabharlann Insamhlóir ARM64 a ghiniúint." + +msgid "Could not copy a file at path \"%s\" to \"%s\"." +msgstr "Níorbh fhéidir comhad a chóipeáil ag conair \"%s\" go \"%s\"." + +msgid "Could not access the filesystem." +msgstr "Níorbh fhéidir an córas comhad a rochtain." + +msgid "Failed to create a file at path \"%s\" with code %d." +msgstr "Theip ar chruthú comhaid ag conair \"%s\" le cód %d." + +msgid "Code signing failed, see editor log for details." +msgstr "" +"Theip ar shíniú an chóid, féach logchomhad an eagarthóra le haghaidh sonraí." + +msgid "Xcode Build" +msgstr "Tógáil XcodeName" + +msgid "Failed to run xcodebuild with code %d" +msgstr "Theip ar rith xcodebuild le cód %d" + +msgid "Xcode project build failed, see editor log for details." +msgstr "" +"Theip ar thógáil tionscadail Xcode, féach logchomhad an eagarthóra le " +"haghaidh sonraí." + +msgid ".ipa export failed, see editor log for details." +msgstr "" +"Theip ar easpórtáil .ipa, féach logchomhad an eagarthóra le haghaidh sonraí." + +msgid "" +".ipa can only be built on macOS. Leaving Xcode project without building the " +"package." +msgstr "" +"Ní féidir .ipa a thógáil ach ar macOS. Ag fágáil tionscadal Xcode gan an " +"pacáiste a thógáil." + +msgid "Exporting to iOS when using C#/.NET is experimental and requires macOS." +msgstr "" +"Tá onnmhairiú chuig iOS agus C #/.NET á úsáid turgnamhach agus éilíonn macOS." + +msgid "Exporting to iOS when using C#/.NET is experimental." +msgstr "Tá onnmhairiú chuig iOS agus C #/.NET á úsáid turgnamhach." + +msgid "Invalid additional PList content: " +msgstr "Ábhar breise PList neamhbhailí: " + +msgid "Identifier is missing." +msgstr "Tá an t-aitheantóir ar iarraidh." + +msgid "The character '%s' is not allowed in Identifier." +msgstr "Ní cheadaítear an carachtar '%s' san Aitheantóir." + +msgid "Could not start simctl executable." +msgstr "Níorbh fhéidir comhad inrite simctl a thosú." + +msgid "Installation failed, see editor log for details." +msgstr "Theip ar shuiteáil, féach logchomhad an eagarthóra le haghaidh sonraí." + +msgid "Running failed, see editor log for details." +msgstr "Theip ar rith, féach logchomhad an eagarthóra le haghaidh sonraí." + +msgid "Could not start ios-deploy executable." +msgstr "Níorbh fhéidir inrite ios-deploy a thosú." + +msgid "Installation/running failed, see editor log for details." +msgstr "" +"Theip ar shuiteáil / rith, féach logchomhad an eagarthóra le haghaidh sonraí." + +msgid "Could not start device executable." +msgstr "Níorbh fhéidir comhad inrite an ghléis a thosú." + +msgid "Could not start devicectl executable." +msgstr "Níorbh fhéidir comhad inrite devicectl a thosú." + +msgid "Debug Script Export" +msgstr "Easpórtáil Scripte Dífhabhtaithe" + +msgid "Could not open file \"%s\"." +msgstr "Níorbh fhéidir comhad \"%s\" a oscailt." + +msgid "Debug Console Export" +msgstr "Easpórtáil Consóil Dífhabhtaithe" + +msgid "Could not create console wrapper." +msgstr "Níorbh fhéidir fillteán consóil a chruthú." + +msgid "Failed to open executable file \"%s\"." +msgstr "Níorbh fhéidir comhad inrite \"%s\" a oscailt." + +msgid "Executable file header corrupted." +msgstr "Ceanntásc comhaid inrite truaillithe." + +msgid "32-bit executables cannot have embedded data >= 4 GiB." +msgstr "Ní féidir sonraí leabaithe >= 4 GiB a bheith ag feidhmchláir 32-giotán." + +msgid "Executable \"pck\" section not found." +msgstr "Níor aimsíodh an rannán \"pck\" inrite." + +msgid "Stop and uninstall" +msgstr "Stop agus díshuiteáil" + +msgid "Run on remote Linux/BSD system" +msgstr "Rith ar chóras cianda Linux / BSD" + +msgid "Stop and uninstall running project from the remote system" +msgstr "Stop agus díshuiteáil an tionscadal reatha ón gcóras cianda" + +msgid "Run exported project on remote Linux/BSD system" +msgstr "Rith tionscadal onnmhairithe ar chóras iargúlta Linux / BSD" + +msgid "Running..." +msgstr "Ag rith..." + +msgid "Could not create temp directory:" +msgstr "Níorbh fhéidir comhadlann ama a chruthú:" + +msgid "Exporting project..." +msgstr "Tionscadal á easpórtáil..." + +msgid "Creating temporary directory..." +msgstr "Comhadlann shealadach á cruthú..." + +msgid "Uploading archive..." +msgstr "Cartlann á huaslódáil..." + +msgid "Uploading scripts..." +msgstr "Scripteanna á uasluchtú..." + +msgid "Starting project..." +msgstr "Tionscadal á thosú..." + +msgid "All Files" +msgstr "Gach Comhad" + +msgid "Invalid bundle identifier:" +msgstr "Aitheantóir cuachta neamhbhailí:" + +msgid "App Store distribution with ad-hoc code signing is not supported." +msgstr "Ní thacaítear le dáileadh App Store le síniú cód ad-hoc." + +msgid "Notarization with an ad-hoc signature is not supported." +msgstr "Ní thacaítear le nodaireacht le síniú ad-hoc." + +msgid "Apple Team ID is required for App Store distribution." +msgstr "Tá ID Foirne Apple ag teastáil le haghaidh dáileadh App Store." + +msgid "Apple Team ID is required for notarization." +msgstr "Tá ID Foireann Apple ag teastáil le haghaidh nótaireachta." + +msgid "Provisioning profile is required for App Store distribution." +msgstr "Tá próifíl soláthair ag teastáil le haghaidh dáileadh App Store." + +msgid "Installer signing identity is required for App Store distribution." +msgstr "" +"Tá aitheantas sínithe suiteálaí ag teastáil le haghaidh dáileadh App Store." + +msgid "App sandbox is required for App Store distribution." +msgstr "Tá bosca gainimh app ag teastáil le haghaidh dáileadh App Store." + +msgid "" +"'rcodesign' doesn't support signing applications with embedded dynamic " +"libraries (GDExtension or .NET)." +msgstr "" +"Ní thacaíonn 'rcodesign' le hiarratais a shíniú le leabharlanna dinimiciúla " +"leabaithe (GDExtension nó .NET)." + +msgid "Code signing is required for App Store distribution." +msgstr "Tá síniú cóid ag teastáil le haghaidh dáileadh App Store." + +msgid "Code signing is required for notarization." +msgstr "Tá síniú an chóid ag teastáil le haghaidh nótaireachta." + +msgid "" +"Neither Apple ID name nor App Store Connect issuer ID name not specified." +msgstr "" +"Níor sonraíodh ainm Apple ID ná ainm aitheantais eisitheora App Store Connect." + +msgid "" +"Both Apple ID name and App Store Connect issuer ID name are specified, only " +"one should be set at the same time." +msgstr "" +"Sonraítear ainm Apple ID agus ainm aitheantais eisitheora App Store Connect, " +"níor cheart ach ceann amháin a shocrú ag an am céanna." + +msgid "Apple ID password not specified." +msgstr "Níor sonraíodh pasfhocal Apple ID." + +msgid "App Store Connect API key ID not specified." +msgstr "Níor sonraíodh aitheantas eochair API App Store Connect." + +msgid "App Store Connect issuer ID name not specified." +msgstr "Níor sonraíodh ainm aitheantais eisitheora App Store Connect." + +msgid "Microphone access is enabled, but usage description is not specified." +msgstr "Cumasaítear rochtain micreafóin, ach ní shonraítear cur síos úsáide." + +msgid "Camera access is enabled, but usage description is not specified." +msgstr "Cumasaítear rochtain ar cheamara, ach ní shonraítear cur síos úsáide." + +msgid "" +"Location information access is enabled, but usage description is not " +"specified." +msgstr "" +"Cumasaítear rochtain ar fhaisnéis suímh, ach ní shonraítear cur síos úsáide." + +msgid "Address book access is enabled, but usage description is not specified." +msgstr "" +"Cumasaítear rochtain ar an leabhar seoltaí, ach ní shonraítear cur síos " +"úsáide." + +msgid "Calendar access is enabled, but usage description is not specified." +msgstr "Cumasaítear rochtain féilire, ach ní shonraítear cur síos úsáide." + +msgid "Photo library access is enabled, but usage description is not specified." +msgstr "" +"Cumasaítear rochtain leabharlainne grianghraf, ach ní shonraítear cur síos " +"úsáide." + +msgid "Notarization" +msgstr "Nodaireacht" + +msgid "" +"rcodesign path is not set. Configure rcodesign path in the Editor Settings " +"(Export > macOS > rcodesign)." +msgstr "" +"nach bhfuil cosán rcodesign socraithe. Cumraigh conair rcodesign sna " +"Socruithe Eagarthóra (Easpórtáil > macOS > rcodesign)." + +msgid "Could not start rcodesign executable." +msgstr "Níorbh fhéidir inrite rcodesign a thosú." + +msgid "Notarization failed, see editor log for details." +msgstr "" +"Theip ar notarization, féach logchomhad an eagarthóra le haghaidh sonraí." + +msgid "Notarization request UUID: \"%s\"" +msgstr "Iarratas nótaireachta UUID: \"%s\"" + +msgid "The notarization process generally takes less than an hour." +msgstr "De ghnáth tógann an próiseas notarization níos lú ná uair an chloig." + +msgid "" +"You can check progress manually by opening a Terminal and running the " +"following command:" +msgstr "" +"Is féidir leat dul chun cinn a sheiceáil de láimh trí Theirminéal a oscailt " +"agus an t-ordú seo a leanas a rith:" + +msgid "" +"Run the following command to staple the notarization ticket to the exported " +"application (optional):" +msgstr "" +"Rith an t-ordú seo a leanas chun an ticéad nótaireachta a stápláil chuig an " +"bhfeidhmchlár a onnmhairítear (roghnach):" + +msgid "Xcode command line tools are not installed." +msgstr "Níl uirlisí líne ordaithe Xcode suiteáilte." + +msgid "Could not start xcrun executable." +msgstr "Níorbh fhéidir comhad inrite xcrun a thosú." + +msgid "Built-in CodeSign failed with error \"%s\"." +msgstr "Theip ar CodeSign ionsuite le hearráid \"%s\"." + +msgid "Built-in CodeSign require regex module." +msgstr "Tógtha-i CodeSign cheangal modúl regex." + +msgid "" +"Xrcodesign path is not set. Configure rcodesign path in the Editor Settings " +"(Export > macOS > rcodesign)." +msgstr "" +"Níl cosán xrcodesign socraithe. Cumraigh conair rcodesign sna Socruithe " +"Eagarthóra (Easpórtáil > macOS > rcodesign)." + +msgid "" +"Could not start codesign executable, make sure Xcode command line tools are " +"installed." +msgstr "" +"Níorbh fhéidir inrite comhdhearadh a thosú, déan cinnte go bhfuil uirlisí " +"líne ordaithe Xcode suiteáilte." + +msgid "Cannot sign directory %s." +msgstr "Ní féidir comhadlann %s a shíniú." + +msgid "Cannot sign file %s." +msgstr "Ní féidir comhad %s a shíniú." + +msgid "Relative symlinks are not supported, exported \"%s\" might be broken!" +msgstr "Ní thacaítear le naisc choibhneasta, d'fhéadfaí \"%s\" a easpórtáil!" + +msgid "\"%s\": Info.plist missing or invalid, new Info.plist generated." +msgstr "" +"\"%s\": Info.plist ar iarraidh nó neamhbhailí, info.plist nua a ghintear." + +msgid "PKG Creation" +msgstr "Cruthú PKG" + +msgid "Could not start productbuild executable." +msgstr "Níorbh fhéidir comhad inrite productbuild a thosú." + +msgid "`productbuild` failed." +msgstr "Theip ar 'ProductBuild'." + +msgid "DMG Creation" +msgstr "Cruthú DMG" + +msgid "Could not start hdiutil executable." +msgstr "Níorbh fhéidir inrite hdiutil a thosú." + +msgid "`hdiutil create` failed - file exists." +msgstr "Theip ar 'hdiutil create' - tá an comhad ann." + +msgid "`hdiutil create` failed." +msgstr "Theip ar 'Hdiutil Create'." + +msgid "Exporting for macOS" +msgstr "Easpórtáil le haghaidh macOS" + +msgid "Creating app bundle" +msgstr "Beart feidhmchláir a chruthú" + +msgid "Could not find template app to export: \"%s\"." +msgstr "Níorbh fhéidir feidhmchlár teimpléid a aimsiú le heaspórtáil: \"%s\"." + +msgid "Invalid export format." +msgstr "Formáid neamhbhailí easpórtála." + +msgid "Could not create directory: \"%s\"." +msgstr "Níorbh fhéidir comhadlann a chruthú: \"%s\"." + +msgid "Could not create directory \"%s\"." +msgstr "Níorbh fhéidir comhadlann \"%s\" a chruthú." + +msgid "" +"Relative symlinks are not supported on this OS, the exported project might be " +"broken!" +msgstr "" +"Ní thacaítear le symlinks coibhneasta ar an OS seo, d'fhéadfadh an tionscadal " +"a onnmhairítear a bhriseadh!" + +msgid "Could not created symlink \"%s\" -> \"%s\"." +msgstr "Níorbh fhéidir nasc simplí \"%s\" a chruthú -> \"%s\"." + +msgid "Could not open \"%s\"." +msgstr "Níorbh fhéidir \"%s\" a oscailt." + +msgid "" +"Requested template binary \"%s\" not found. It might be missing from your " +"template archive." +msgstr "" +"Níor aimsíodh teimpléad iarrtha dénártha \"%s\". D'fhéadfadh sé a bheith ar " +"iarraidh ó do chartlann teimpléad." + +msgid "Making PKG" +msgstr "PKG a dhéanamh" + +msgid "Entitlements Modified" +msgstr "Teidlíochtaí Athraithe" + +msgid "" +"Ad-hoc signed applications require the 'Disable Library Validation' " +"entitlement to load dynamic libraries." +msgstr "" +"Éilíonn iarratais sínithe Ad-hoc an teidlíocht 'Díchumasaigh Bailíochtú " +"Leabharlainne' chun leabharlanna dinimiciúla a lódáil." + +msgid "" +"'rcodesign' doesn't support signing applications with embedded dynamic " +"libraries." +msgstr "" +"Ní thacaíonn 'rcodesign' le hiarratais a shíniú le leabharlanna dinimiciúla " +"leabaithe." + +msgid "Could not create entitlements file." +msgstr "Níorbh fhéidir comhad teidlíochtaí a chruthú." + +msgid "Could not create helper entitlements file." +msgstr "Níorbh fhéidir comhad teidlíochtaí cabhracha a chruthú." + +msgid "Code signing bundle" +msgstr "Beart sínithe cóid" + +msgid "Making DMG" +msgstr "DMG a dhéanamh" + +msgid "Code signing DMG" +msgstr "Cód sínithe DMG" + +msgid "Making PKG installer" +msgstr "Suiteálaí PKG a dhéanamh" + +msgid "Making ZIP" +msgstr "Zip a dhéanamh" + +msgid "" +"Notarization requires the app to be archived first, select the DMG or ZIP " +"export format instead." +msgstr "" +"Éilíonn notarization an app a chartlannú ar dtús, roghnaigh an fhormáid " +"easpórtála DMG nó ZIP ina ionad." + +msgid "Sending archive for notarization" +msgstr "Cartlann á seoladh le haghaidh nótaireachta" + +msgid "" +"Cannot export for universal or x86_64 if S3TC BPTC texture format is " +"disabled. Enable it in the Project Settings (Rendering > Textures > VRAM " +"Compression > Import S3TC BPTC)." +msgstr "" +"Ní féidir onnmhairiú le haghaidh uilíoch nó x86_64 má tá formáid uigeachta " +"S3TC BPTC díchumasaithe. Cumasaigh é i Socruithe an Tionscadail (Rindreáil > " +"Uigeachtaí > Comhbhrú VRAM > Iompórtáil S3TC BPTC)." + +msgid "" +"Cannot export for universal or arm64 if ETC2 ASTC texture format is disabled. " +"Enable it in the Project Settings (Rendering > Textures > VRAM Compression > " +"Import ETC2 ASTC)." +msgstr "" +"Ní féidir easpórtáil le haghaidh uilíoch nó arm64 má tá formáid uigeachta " +"ETC2 ASTC díchumasaithe. Cumasaigh é i Socruithe an Tionscadail (Rindreáil > " +"Uigeachtaí > Comhbhrú VRAM > Iompórtáil ETC2 ASTC)." + +msgid "Notarization: Xcode command line tools are not installed." +msgstr "Nóta: Níl uirlisí líne ordaithe Xcode suiteáilte." + +msgid "" +"Notarization: rcodesign path is not set. Configure rcodesign path in the " +"Editor Settings (Export > macOS > rcodesign)." +msgstr "" +"Notarization: níl cosán rcodesign socraithe. Cumraigh conair rcodesign sna " +"Socruithe Eagarthóra (Easpórtáil > macOS > rcodesign)." + +msgid "" +"Warning: Notarization is disabled. The exported project will be blocked by " +"Gatekeeper if it's downloaded from an unknown source." +msgstr "" +"Rabhadh: Tá notarization díchumasaithe. Cuirfidh Gatekeeper bac ar an " +"tionscadal easpórtála má íoslódáiltear é ó fhoinse anaithnid." + +msgid "" +"Code signing is disabled. The exported project will not run on Macs with " +"enabled Gatekeeper and Apple Silicon powered Macs." +msgstr "" +"Tá síniú an chóid díchumasaithe. Ní rithfidh an tionscadal onnmhairithe ar " +"Macs le Macs cumasaithe Gatekeeper agus Apple Silicon faoi thiomáint Macs." + +msgid "" +"Code signing: Using ad-hoc signature. The exported project will be blocked by " +"Gatekeeper" +msgstr "" +"Síniú an chóid: Ag baint úsáide as síniú ad-hoc. Cuirfidh Gatekeeper bac ar " +"an tionscadal easpórtáilte" + +msgid "Code signing: Xcode command line tools are not installed." +msgstr "Síniú an chóid: Níl uirlisí líne ordaithe Xcode suiteáilte." + +msgid "" +"Code signing: rcodesign path is not set. Configure rcodesign path in the " +"Editor Settings (Export > macOS > rcodesign)." +msgstr "" +"Síniú cód: níl cosán rcodesign socraithe. Cumraigh conair rcodesign sna " +"Socruithe Eagarthóra (Easpórtáil > macOS > rcodesign)." + +msgid "Run on remote macOS system" +msgstr "Rith ar chóras macOS cianda" + +msgid "Run exported project on remote macOS system" +msgstr "Rith tionscadal onnmhairithe ar chóras macOS iargúlta" + +msgid "Could not open template for export: \"%s\"." +msgstr "Níorbh fhéidir teimpléad a oscailt le heaspórtáil: \"%s\"." + +msgid "Invalid export template: \"%s\"." +msgstr "Teimpléad neamhbhailí easpórtála: \"%s\"." + +msgid "Could not write file: \"%s\"." +msgstr "Níorbh fhéidir comhad a scríobh: \"%s\"." + +msgid "Icon Creation" +msgstr "Cruthú Deilbhíní" + +msgid "Could not read file: \"%s\"." +msgstr "Níorbh fhéidir comhad a léamh: \"%s\"." + +msgid "PWA" +msgstr "PWAName" + +msgid "" +"Exporting to Web is currently not supported in Godot 4 when using C#/.NET. " +"Use Godot 3 to target Web with C#/Mono instead." +msgstr "" +"Ní thacaítear le heaspórtáil chuig an nGréasán faoi láthair i Godot 4 agus C " +"#/.NET á úsáid. Bain úsáid as Godot 3 chun díriú ar an nGréasán le C # / Mono " +"ina ionad." + +msgid "" +"If this project does not use C#, use a non-C# editor build to export the " +"project." +msgstr "" +"Mura n-úsáideann an tionscadal seo C #, bain úsáid as tógáil eagarthóir neamh-" +"C # chun an tionscadal a easpórtáil." + +msgid "Could not read HTML shell: \"%s\"." +msgstr "Níorbh fhéidir blaosc HTML a léamh: \"%s\"." + +msgid "Run in Browser" +msgstr "Rith i mBrabhsálaí" + +msgid "Start HTTP Server" +msgstr "Tosaigh Freastalaí HTTP" + +msgid "Re-export Project" +msgstr "Tionscadal Atheaspórtála" + +msgid "Stop HTTP Server" +msgstr "Stop freastalaí HTTP" + +msgid "Run exported HTML in the system's default browser." +msgstr "Rith easpórtáil HTML i mbrabhsálaí réamhshocraithe an chórais." + +msgid "Start the HTTP server." +msgstr "Tosaigh an freastalaí HTTP." + +msgid "Export project again to account for updates." +msgstr "Easpórtáil tionscadal arís chun cuntas a thabhairt ar nuashonruithe." + +msgid "Stop the HTTP server." +msgstr "Stop an freastalaí HTTP." + +msgid "Could not create HTTP server directory: %s." +msgstr "Níorbh fhéidir comhadlann freastalaí HTTP a chruthú: %s." + +msgid "Error starting HTTP server: %d." +msgstr "Earráid agus freastalaí HTTP á thosú: %d." + +msgid "Resources Modification" +msgstr "Modhnú Acmhainní" + +msgid "Icon size \"%d\" is missing." +msgstr "Tá méid an deilbhín \"%d\" ar iarraidh." + +msgid "Failed to rename temporary file \"%s\"." +msgstr "Níorbh fhéidir comhad sealadach \"%s\" a athainmniú." + +msgid "Invalid icon path." +msgstr "Conair neamhbhailí deilbhíní." + +msgid "Invalid file version." +msgstr "Leagan neamhbhailí comhaid." + +msgid "Invalid product version." +msgstr "Leagan neamhbhailí táirge." + +msgid "Could not find rcedit executable at \"%s\"." +msgstr "Níorbh fhéidir comhad inrite rcedit a aimsiú ag \"%s\"." + +msgid "Could not find wine executable at \"%s\"." +msgstr "Níorbh fhéidir inrite fíona a aimsiú ag \"%s\"." + +msgid "Invalid icon file \"%s\"." +msgstr "Comhad neamhbhailí deilbhín \"%s\"." + +msgid "" +"Could not start rcedit executable. Configure rcedit path in the Editor " +"Settings (Export > Windows > rcedit), or disable \"Application > Modify " +"Resources\" in the export preset." +msgstr "" +"Níorbh fhéidir rcedit inrite a thosú. Cumraigh cosán rcedit sna Socruithe " +"Eagarthóra (Easpórtáil > Windows > rcedit), nó díchumasaigh \"Iarratas > " +"Modhnaigh Acmhainní\" sa réamhshocrú easpórtála." + +msgid "rcedit failed to modify executable: %s." +msgstr "Theip ar RCEDIT an comhad inrite a mhionathrú: %s." + +msgid "Could not find signtool executable at \"%s\"." +msgstr "Níorbh fhéidir inrite an stóil comharthaíochta a aimsiú ag \"%s\"." + +msgid "Could not find osslsigncode executable at \"%s\"." +msgstr "Níorbh fhéidir comhad inrite osslsigncode a aimsiú ag \"%s\"." + +msgid "No identity found." +msgstr "Níor aimsíodh aitheantas ar bith." + +msgid "Invalid identity type." +msgstr "Cineál neamhbhailí aitheantais." + +msgid "Invalid timestamp server." +msgstr "Freastalaí stampa ama neamhbhailí." + +msgid "" +"Could not start signtool executable. Configure signtool path in the Editor " +"Settings (Export > Windows > signtool), or disable \"Codesign\" in the export " +"preset." +msgstr "" +"Níorbh fhéidir inrite signtool a thosú. Cumraigh conair signtool sna " +"Socruithe Eagarthóra (Easpórtáil > Windows > signtool), nó díchumasaigh " +"\"Codesign\" sa réamhshocrú easpórtála." + +msgid "" +"Could not start osslsigncode executable. Configure signtool path in the " +"Editor Settings (Export > Windows > osslsigncode), or disable \"Codesign\" in " +"the export preset." +msgstr "" +"Níorbh fhéidir osslsigncode inrite a thosú. Cumraigh conair signtool sna " +"Socruithe Eagarthóra (Easpórtáil > Windows > osslsigncode), nó díchumasaigh " +"\"Codesign\" sa réamhshocrú easpórtála." + +msgid "Signtool failed to sign executable: %s." +msgstr "Theip ar an uirlis chomhartha inrite a shíniú: %s." + +msgid "Failed to remove temporary file \"%s\"." +msgstr "Níorbh fhéidir comhad sealadach \"%s\" a bhaint." + +msgid "" +"The rcedit tool must be configured in the Editor Settings (Export > Windows > " +"rcedit) to change the icon or app information data." +msgstr "" +"Ní mór an uirlis rcedit a chumrú sna Socruithe Eagarthóra (Easpórtáil > " +"Windows > rcedit) chun an deilbhín nó sonraí faisnéise na haipe a athrú." + +msgid "Windows executables cannot be >= 4 GiB." +msgstr "Ní féidir le hinnrite Windows a bheith >= 4 GiB." + +msgid "Run on remote Windows system" +msgstr "Rith ar chóras cianda Windows" + +msgid "Run exported project on remote Windows system" +msgstr "Rith tionscadal onnmhairithe ar chianchóras Windows" + +msgid "" +"A SpriteFrames resource must be created or set in the \"Sprite Frames\" " +"property in order for AnimatedSprite2D to display frames." +msgstr "" +"Ní mór acmhainn SpriteFrames a chruthú nó a shocrú sa mhaoin \"Frámaí " +"Sprite\" chun go mbeidh AnimatedSprite2D chun frámaí a thaispeáint." + +msgid "" +"Only one visible CanvasModulate is allowed per canvas.\n" +"When there are more than one, only one of them will be active. Which one is " +"undefined." +msgstr "" +"Ní cheadaítear ach Canbhás infheicthe amháinModulate in aghaidh an " +"chanbháis.\n" +"Nuair a bhíonn níos mó ná ceann amháin ann, ní bheidh ach duine amháin acu " +"gníomhach. Cé acu ceann atá gan sainmhíniú." + +msgid "" +"CPUParticles2D animation requires the usage of a CanvasItemMaterial with " +"\"Particles Animation\" enabled." +msgstr "" +"Éilíonn beochan CPUParticles2D úsáid CanvasItemMaterial le \"Beochan " +"Cáithníní\" cumasaithe." + +msgid "" +"A material to process the particles is not assigned, so no behavior is " +"imprinted." +msgstr "" +"Ní shanntar ábhar chun na cáithníní a phróiseáil, mar sin níl aon iompar " +"imprinted." + +msgid "" +"Particles2D animation requires the usage of a CanvasItemMaterial with " +"\"Particles Animation\" enabled." +msgstr "" +"Éilíonn beochan Particles2D úsáid CanvasItemMaterial le \"Beochan Cáithníní\" " +"cumasaithe." + +msgid "" +"Particle trails are only available when using the Forward+ or Mobile " +"rendering backends." +msgstr "" +"Níl cosáin cháithnín ar fáil ach amháin nuair a bhíonn na hinnill rindreáil " +"Forward + nó Mobile á n-úsáid." + +msgid "" +"Particle sub-emitters are not available when using the GL Compatibility " +"rendering backend." +msgstr "" +"Níl fo-astaírí cáithníní ar fáil agus inneall rindreáil Comhoiriúnachta GL á " +"úsáid." + +msgid "" +"A texture with the shape of the light must be supplied to the \"Texture\" " +"property." +msgstr "" +"Ní mór uigeacht le cruth an tsolais a sholáthar don mhaoin \"Uigeacht\"." + +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" +"Ní mór polagán occluder a shocrú (nó a tharraingt) chun go dtiocfaidh an t-" +"occluder seo i bhfeidhm." + +msgid "The occluder polygon for this occluder is empty. Please draw a polygon." +msgstr "" +"Tá an polagán occluder don occluder seo folamh. Tarraing polagán le do thoil." + +msgid "" +"The NavigationAgent2D can be used only under a Node2D inheriting parent node." +msgstr "" +"Ní féidir an NavigationAgent2D a úsáid ach amháin faoi nód tuismitheora " +"Node2D a fhaigheann oidhreacht." + +msgid "" +"NavigationLink2D start position should be different than the end position to " +"be useful." +msgstr "" +"Ba chóir go mbeadh suíomh tosaithe NavigationLink2D difriúil ná an suíomh " +"deiridh a bheith úsáideach." + +msgid "" +"A NavigationMesh resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" +"Ní mór acmhainn NavigationMesh a shocrú nó a chruthú chun go n-oibreoidh an " +"nód seo. Socraigh maoin nó tarraing polagán." + +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" +"Ní oibríonn nód ParallaxLayer ach amháin nuair a shocraítear é mar leanbh de " +"nód ParallaxBackground." + +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" +"Ní oibríonn PathFollow2D ach amháin nuair a shocraítear é mar leanbh de nód " +"Path2D." + +msgid "" +"This node has no shape, so it can't collide or interact with other objects.\n" +"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to define " +"its shape." +msgstr "" +"Níl aon chruth ar an nód seo, mar sin ní féidir leis collide nó idirghníomhú " +"le rudaí eile.\n" +"Smaoinigh ar CollisionShape2D nó CollisionPolygon2D a chur leis mar leanbh " +"chun a chruth a shainiú." + +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, CharacterBody2D, etc. to give them a shape." +msgstr "" +"ImbhualadhPolygon2D feidhmíonn sé ach cruth imbhuailte a sholáthar do nód " +"díorthaithe CollisionObject2D. Ná húsáid é ach mar leanbh de Area2D, " +"StaticBody2D, RigidBody2D, CharacterBody2D, etc. chun cruth a thabhairt dóibh." + +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "Níl aon éifeacht ag ImbhualadhPolygon2D folamh ar imbhualadh." + +msgid "Invalid polygon. At least 3 points are needed in 'Solids' build mode." +msgstr "" +"Polagán neamhbhailí. Tá 3 phointe ar a laghad ag teastáil i mód tógála " +"'Solaid'." + +msgid "Invalid polygon. At least 2 points are needed in 'Segments' build mode." +msgstr "" +"Polagán neamhbhailí. Tá gá le 2 phointe ar a laghad i mód tógála 'Deighleoga'." + +msgid "" +"The One Way Collision property will be ignored when the collision object is " +"an Area2D." +msgstr "" +"Déanfar neamhaird ar an maoin Imbhuailte Aon-Bhealach nuair a bhíonn an réad " +"imbhuailte ina Area2D." + +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node.\n" +"Please only use it as a child of Area2D, StaticBody2D, RigidBody2D, " +"CharacterBody2D, etc. to give them a shape." +msgstr "" +"Ní fhreastalaíonn CollisionShape2D ach cruth imbhuailte a sholáthar do nód " +"díorthaithe CollisionObject2D.\n" +"Ná húsáid é ach mar leanbh de Area2D, StaticBody2D, RigidBody2D, " +"CharacterBody2D, etc. chun cruth a thabhairt dóibh." + +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" +"Ní mór cruth a chur ar fáil le go bhfeidhmeoidh CollisionShape2D. Cruthaigh " +"acmhainn crutha dó le do thoil!" + +msgid "" +"Polygon-based shapes are not meant be used nor edited directly through the " +"CollisionShape2D node. Please use the CollisionPolygon2D node instead." +msgstr "" +"Ní chiallaíonn cruthanna polagán-bhunaithe a úsáid ná a chur in eagar go " +"díreach tríd an nód CollisionShape2D. Bain úsáid as an nód CollisionPolygon2D " +"ina ionad." + +msgid "Node A and Node B must be PhysicsBody2Ds" +msgstr "Ní mór nód A agus Nód B a bheith FisiceBody2Ds" + +msgid "Node A must be a PhysicsBody2D" +msgstr "Ní mór nód A a bheith ina PhysicsBody2D" + +msgid "Node B must be a PhysicsBody2D" +msgstr "Caithfidh Nód B a bheith ina FhisicBody2D" + +msgid "Joint is not connected to two PhysicsBody2Ds" +msgstr "Níl Joint ceangailte le dhá FhisicBody2Ds" + +msgid "Node A and Node B must be different PhysicsBody2Ds" +msgstr "Caithfidh Nód A agus Nód B a bheith difriúil PhysicsBody2Ds" + +msgid "" +"A PhysicalBone2D only works with a Skeleton2D or another PhysicalBone2D as a " +"parent node!" +msgstr "" +"Ní oibríonn PhysicalBone2D ach le Cnámharlach2D nó le PhysicalBone2D eile mar " +"nód tuismitheora!" + +msgid "" +"A PhysicalBone2D needs to be assigned to a Bone2D node in order to function! " +"Please set a Bone2D node in the inspector." +msgstr "" +"Ní mór PhysicalBone2D a shannadh do nód Bone2D chun feidhmiú! Socraigh nód " +"Bone2D sa chigire le do thoil." + +msgid "" +"A PhysicalBone2D node should have a Joint2D-based child node to keep bones " +"connected! Please add a Joint2D-based node as a child to this node!" +msgstr "" +"Ba chóir go mbeadh nód leanaí bunaithe ar Joint2D ag nód PhysicalBone2D chun " +"cnámha a choinneáil ceangailte! Cuir nód Joint2D-bhunaithe mar leanbh leis an " +"nód seo!" + +msgid "" +"Size changes to RigidBody2D will be overridden by the physics engine when " +"running.\n" +"Change the size in children collision shapes instead." +msgstr "" +"Sáróidh an t-inneall fisice athruithe méide ar RigidBody2D agus é ag rith.\n" +"Athraigh an méid i gcruthanna imbhuailte leanaí ina ionad." + +msgid "" +"This node cannot interact with other objects unless a Shape2D is assigned." +msgstr "" +"Ní féidir leis an nód seo idirghníomhú le rudaí eile mura sanntar Shape2D." + +msgid "Path property must point to a valid Node2D node to work." +msgstr "Ní mór do mhaoin chosáin nód bailí Node2D a chur in iúl chun oibriú." + +msgid "This Bone2D chain should end at a Skeleton2D node." +msgstr "Ba chóir go gcríochnódh an slabhra Bone2D seo ag nód Skeleton2D." + +msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." +msgstr "" +"Ní oibríonn Bone2D ach le Cnámharlach2D nó Bone2D eile mar nód tuismitheora." + +msgid "" +"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." +msgstr "" +"Níl údar ceart REST ag an gcnámh seo. Téigh go dtí an nód Skeleton2D agus " +"socraigh ceann." + +msgid "" +"The TileMap node is deprecated as it is superseded by the use of multiple " +"TileMapLayer nodes.\n" +"To convert a TileMap to a set of TileMapLayer nodes, open the TileMap bottom " +"panel with this node selected, click the toolbox icon in the top-right corner " +"and choose \"Extract TileMap layers as individual TileMapLayer nodes\"." +msgstr "" +"Déantar an nód TileMap a dhímheas mar go bhfuil sé in ionad úsáid a bhaint as " +"nóid TileMapLayer il.\n" +"Chun TileMap a thiontú go sraith nóid TileMapLayer, oscail an painéal bun " +"TileMap leis an nód seo roghnaithe, cliceáil ar an deilbhín bosca uirlisí sa " +"chúinne barr ar dheis agus roghnaigh \"Sliocht sraitheanna TileMap mar nóid " +"TileMapLayer aonair\"." + +msgid "" +"A Y-sorted layer has the same Z-index value as a not Y-sorted layer.\n" +"This may lead to unwanted behaviors, as a layer that is not Y-sorted will be " +"Y-sorted as a whole with tiles from Y-sorted layers." +msgstr "" +"Tá an luach Z-innéacs céanna ag ciseal Y-sórtáilte mar chiseal nach bhfuil " +"curtha in eagar Y.\n" +"D'fhéadfadh iompar nach dteastaíonn a bheith mar thoradh air seo, mar go " +"mbeidh ciseal nach bhfuil Y-sórtáilte ina iomláine le tíleanna ó shraitheanna " +"Y-sórtáilte." + +msgid "" +"A TileMap layer is set as Y-sorted, but Y-sort is not enabled on the TileMap " +"node itself." +msgstr "" +"Socraítear ciseal TileMap mar Y-sórtáilte, ach níl Y-sort cumasaithe ar an " +"nód TileMap féin." + +msgid "" +"The TileMap node is set as Y-sorted, but Y-sort is not enabled on any of the " +"TileMap's layers.\n" +"This may lead to unwanted behaviors, as a layer that is not Y-sorted will be " +"Y-sorted as a whole." +msgstr "" +"Tá an nód TileMap socraithe mar Y-sórtáilte, ach níl Y-sort cumasaithe ar aon " +"cheann de shraitheanna an TileMap.\n" +"D'fhéadfadh iompar nach dteastaíonn a bheith mar thoradh air seo, mar go " +"mbeidh ciseal nach bhfuil Y-sórtáilte ina iomláine." + +msgid "" +"Isometric TileSet will likely not look as intended without Y-sort enabled for " +"the TileMap and all of its layers." +msgstr "" +"Is dócha nach mbreathnóidh TileSet Isometric mar atá beartaithe gan Y-shórt " +"cumasaithe don TileMap agus dá sraitheanna go léir." + +msgid "" +"External Skeleton3D node not set! Please set a path to an external Skeleton3D " +"node." +msgstr "" +"Níl nód Cnámharlach Seachtrach3D socraithe! Socraigh cosán chuig nód " +"seachtrach Skeleton3D." + +msgid "" +"Parent node is not a Skeleton3D node! Please use an external Skeleton3D if " +"you intend to use the BoneAttachment3D without it being a child of a " +"Skeleton3D node." +msgstr "" +"Ní nód Cnámharlaigh3D é nód tuismitheora! Bain úsáid as Skeleton3D seachtrach " +"má tá sé ar intinn agat an BoneAttachment3D a úsáid gan é a bheith ina leanbh " +"de nód Skeleton3D." + +msgid "" +"BoneAttachment3D node is not bound to any bones! Please select a bone to " +"attach this node." +msgstr "" +"Níl nód BoneAttachment3D ceangailte le haon chnámha! Roghnaigh cnámh chun an " +"nód seo a cheangal." + +msgid "Nothing is visible because no mesh has been assigned." +msgstr "Níl aon rud le feiceáil toisc nár sannadh aon mhogall." + +msgid "" +"CPUParticles3D animation requires the usage of a StandardMaterial3D whose " +"Billboard Mode is set to \"Particle Billboard\"." +msgstr "" +"Éilíonn beochan CPUParticles3D úsáid StandardMaterial3D a bhfuil a Mód fógraí " +"na gCáithnín socraithe do \"Clár fógraí na gCáithnín\"." + +msgid "" +"Decals are only available when using the Forward+ or Mobile rendering " +"backends." +msgstr "" +"Níl decals ar fáil ach amháin nuair a bhíonn na hinnill rindreáil Forward + " +"nó Mobile á n-úsáid." + +msgid "" +"The decal has no textures loaded into any of its texture properties, and will " +"therefore not be visible." +msgstr "" +"Níl aon uigeachtaí luchtaithe ag an decal in aon cheann dá airíonna " +"uigeachta, agus dá bhrí sin ní bheidh sé le feiceáil." + +msgid "" +"The decal has a Normal and/or ORM texture, but no Albedo texture is set.\n" +"An Albedo texture with an alpha channel is required to blend the normal/ORM " +"maps onto the underlying surface.\n" +"If you don't want the Albedo texture to be visible, set Albedo Mix to 0." +msgstr "" +"Tá uigeacht Gnáth agus / nó ORM ag an decal, ach níl aon uigeacht Albedo " +"socraithe.\n" +"Tá uigeacht Albedo le cainéal alfa ag teastáil chun na gnáth-léarscáileanna / " +"ORM a chumasc ar an dromchla bunúsach.\n" +"Mura dteastaíonn uait go mbeadh uigeacht Albedo le feiceáil, socraigh Albedo " +"Mix go 0." + +msgid "" +"The decal's Cull Mask has no bits enabled, which means the decal will not " +"paint objects on any layer.\n" +"To resolve this, enable at least one bit in the Cull Mask property." +msgstr "" +"Níl aon ghiotaí cumasaithe ag Cull Mask decal, rud a chiallaíonn nach " +"bpéinteálfaidh an decal rudaí ar aon chiseal.\n" +"Chun é seo a réiteach, cumasaigh giota amháin ar a laghad i maoin Cull Mask." + +msgid "Fog Volumes are only visible when using the Forward+ backend." +msgstr "" +"Níl Imleabhair ceo le feiceáil ach amháin nuair a bhíonn an t-inneall Forward " +"+ á úsáid." + +msgid "" +"Fog Volumes need volumetric fog to be enabled in the scene's Environment in " +"order to be visible." +msgstr "" +"Ní mór ceo toirtmhéadrach a chumasú i gComhshaol an radhairc chun go mbeidh " +"siad le feiceáil." + +msgid "Nothing is visible because meshes have not been assigned to draw passes." +msgstr "" +"Níl aon rud le feiceáil toisc nár sannadh mogaill chun pasanna a tharraingt." + +msgid "" +"Particles animation requires the usage of a BaseMaterial3D whose Billboard " +"Mode is set to \"Particle Billboard\"." +msgstr "" +"Éilíonn beochan cáithníní úsáid BaseMaterial3D a bhfuil a Mód na gCáithnín " +"leagtha síos do \"Clár fógraí na gCáithnín\"." + +msgid "" +"Using Trail meshes with a skin causes Skin to override Trail poses. Suggest " +"removing the Skin." +msgstr "" +"Trí úsáid a bhaint as mogaill Trail le craiceann, is cúis le Craiceann an " +"Rian a shárú. Mol an Craiceann a bhaint." + +msgid "Trails active, but neither Trail meshes or a Skin were found." +msgstr "Bhí cosáin gníomhach, ach níor aimsíodh mogaill Trail ná Craiceann." + +msgid "" +"Only one Trail mesh is supported. If you want to use more than a single mesh, " +"a Skin is needed (see documentation)." +msgstr "" +"Ní thacaítear ach le mogalra Trail amháin. Más mian leat níos mó ná mogalra " +"amháin a úsáid, tá Craiceann ag teastáil (féach doiciméadú)." + +msgid "" +"Trails enabled, but one or more mesh materials are either missing or not set " +"for trails rendering." +msgstr "" +"Cosáin cumasaithe, ach tá ábhar mogall amháin nó níos mó ar iarraidh nó gan a " +"bheith socraithe le haghaidh rindreáil cosáin." + +msgid "" +"Particle sub-emitters are only available when using the Forward+ or Mobile " +"rendering backends." +msgstr "" +"Níl fo-astaírí cáithníní ar fáil ach amháin nuair a bhíonn na hinnill " +"rindreáil Forward + nó Mobile á n-úsáid." + +msgid "" +"The Bake Mask has no bits enabled, which means baking will not produce any " +"collision for this GPUParticlesCollisionSDF3D.\n" +"To resolve this, enable at least one bit in the Bake Mask property." +msgstr "" +"Níl aon ghiotáin cumasaithe ag an Masc Bácála, rud a chiallaíonn nach " +"ndéanfaidh bácáil aon imbhualadh don GPUParticlesCollisionSDF3D seo.\n" +"Chun é seo a réiteach, cumasaigh giota amháin ar a laghad sa mhaoin Masc " +"Bácála." + +msgid "A light's scale does not affect the visual size of the light." +msgstr "Ní dhéanann scála solais difear do mhéid amhairc an tsolais." + +msgid "Projector texture only works with shadows active." +msgstr "Ní oibríonn uigeacht teilgeora ach le scáthanna gníomhacha." + +msgid "" +"Projector textures are not supported when using the GL Compatibility backend " +"yet. Support will be added in a future release." +msgstr "" +"Ní thacaítear le huigeachtaí teilgeora agus an t-inneall Comhoiriúnachta GL á " +"úsáid go fóill. Cuirfear tacaíocht leis in eisiúint amach anseo." + +msgid "A SpotLight3D with an angle wider than 90 degrees cannot cast shadows." +msgstr "" +"Ní féidir le SpotLight3D le huillinn níos leithne ná 90 céim scáthanna a " +"chaitheamh." + +msgid "Finding meshes, lights and probes" +msgstr "Mogalraí, soilse agus tóireadóirí a aimsiú" + +msgid "Preparing geometry %d/%d" +msgstr "Céimseata %d/%d á hullmhú" + +msgid "Creating probes" +msgstr "Tóireadóirí a chruthú" + +msgid "Creating probes from mesh %d/%d" +msgstr "Tóireadóirí á gcruthú ó mhogall %d/%d" + +msgid "Preparing Lightmapper" +msgstr "Mapaire Solais á Ullmhú" + +msgid "Preparing Environment" +msgstr "Timpeallacht a Ullmhú" + +msgid "Generating Probe Volumes" +msgstr "Imleabhair tóireadóir á nginiúint" + +msgid "Generating Probe Acceleration Structures" +msgstr "Struchtúir Luasghéaraithe Probe a Ghiniúint" + +msgid "" +"Lightmap can only be baked from a device that supports the RD backends. " +"Lightmap baking may fail." +msgstr "" +"Ní féidir mapa solais a bhácáil ach ó ghléas a thacaíonn leis na cúil RD. " +"D'fhéadfadh go dteipfeadh ar bhácáil lightmap." + +msgid "" +"The NavigationAgent3D can be used only under a Node3D inheriting parent node." +msgstr "" +"Ní féidir an NavigationAgent3D a úsáid ach amháin faoi nód tuismitheora " +"Node3D a fhaigheann oidhreacht." + +msgid "" +"NavigationLink3D start position should be different than the end position to " +"be useful." +msgstr "" +"Ba chóir go mbeadh suíomh tosaithe NavigationLink3D difriúil ná an suíomh " +"deiridh a bheith úsáideach." + +msgid "" +"Occlusion culling is disabled in the Project Settings, which means occlusion " +"culling won't be performed in the root viewport.\n" +"To resolve this, open the Project Settings and enable Rendering > Occlusion " +"Culling > Use Occlusion Culling." +msgstr "" +"Tá marú occlusion díchumasaithe i Socruithe an Tionscadail, rud a chiallaíonn " +"nach ndéanfar marú occlusion i radharc na fréimhe.\n" +"Chun é seo a réiteach, oscail Socruithe an Tionscadail agus cumasaigh " +"Rindreáil > Marú Occlusion > Úsáid Occlusion Maraithe." + +msgid "" +"The Bake Mask has no bits enabled, which means baking will not produce any " +"occluder meshes for this OccluderInstance3D.\n" +"To resolve this, enable at least one bit in the Bake Mask property." +msgstr "" +"Níl aon ghiotáin cumasaithe ag an Masc Bácála, rud a chiallaíonn nach " +"dtáirgfidh bácáil aon mhogall occluder don OccluderInstance3D seo.\n" +"Chun é seo a réiteach, cumasaigh giota amháin ar a laghad sa mhaoin Masc " +"Bácála." + +msgid "" +"No occluder mesh is defined in the Occluder property, so no occlusion culling " +"will be performed using this OccluderInstance3D.\n" +"To resolve this, set the Occluder property to one of the primitive occluder " +"types or bake the scene meshes by selecting the OccluderInstance3D and " +"pressing the Bake Occluders button at the top of the 3D editor viewport." +msgstr "" +"Níl aon mogalra occluder sainithe sa mhaoin Occluder, mar sin ní dhéanfar aon " +"chuileann occlusion ag baint úsáide as an OccluderInstance3D seo.\n" +"Chun é seo a réiteach, socraigh an mhaoin Occluder le ceann de na cineálacha " +"occluder primitive nó bácáil na mogall radhairc tríd an OccluderInstance3D a " +"roghnú agus an cnaipe Bake Occluders a bhrú ag barr an viewport eagarthóir 3D." + +msgid "" +"The occluder mesh has less than 3 vertices, so no occlusion culling will be " +"performed using this OccluderInstance3D.\n" +"To generate a proper occluder mesh, select the OccluderInstance3D then use " +"the Bake Occluders button at the top of the 3D editor viewport." +msgstr "" +"Tá níos lú ná 3 vertices ag an mogalra occluder, mar sin ní dhéanfar aon " +"chuiliú occlusion ag baint úsáide as an OccluderInstance3D seo.\n" +"Chun mogalra occluder cuí a ghiniúint, roghnaigh an OccluderInstance3D ansin " +"bain úsáid as an gcnaipe Bake Occluders ag barr an viewport eagarthóir 3D." + +msgid "" +"The polygon occluder has less than 3 vertices, so no occlusion culling will " +"be performed using this OccluderInstance3D.\n" +"Vertices can be added in the inspector or using the polygon editing tools at " +"the top of the 3D editor viewport." +msgstr "" +"Tá níos lú ná 3 vertices ag an occluder polagán, mar sin ní dhéanfar aon " +"chuileadh occlusion ag baint úsáide as an OccluderInstance3D seo.\n" +"Is féidir vertices a chur leis an gcigire nó ag baint úsáide as na huirlisí " +"eagarthóireachta polagáin ag barr an viewport eagarthóir 3D." + +msgid "PathFollow3D only works when set as a child of a Path3D node." +msgstr "" +"Ní oibríonn PathFollow3D ach amháin nuair a shocraítear é mar leanbh de nód " +"Path3D." + +msgid "" +"PathFollow3D's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its " +"parent Path3D's Curve resource." +msgstr "" +"Éilíonn ROTATION_ORIENTED PathFollow3D \"Veicteoir Suas\" a chumasú ina " +"acmhainn Cuar Path3D máthair." + +msgid "" +"This node has no shape, so it can't collide or interact with other objects.\n" +"Consider adding a CollisionShape3D or CollisionPolygon3D as a child to define " +"its shape." +msgstr "" +"Níl aon chruth ar an nód seo, mar sin ní féidir leis collide nó idirghníomhú " +"le rudaí eile.\n" +"Smaoinigh ar CollisionShape3D nó CollisionPolygon3D a chur leis mar leanbh " +"chun a chruth a shainiú." + +msgid "" +"With a non-uniform scale this node will probably not function as expected.\n" +"Please make its scale uniform (i.e. the same on all axes), and change the " +"size in children collision shapes instead." +msgstr "" +"Le scála neamh-aonfhoirmeach is dócha nach bhfeidhmeoidh an nód seo mar a " +"bhíothas ag súil leis.\n" +"Déan a scála aonfhoirmeach (i.e. mar an gcéanna ar gach aiseanna), agus " +"athraigh an méid i gcruthanna imbhuailte leanaí ina ionad." + +msgid "" +"CollisionPolygon3D only serves to provide a collision shape to a " +"CollisionObject3D derived node.\n" +"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, " +"CharacterBody3D, etc. to give them a shape." +msgstr "" +"ImbhualadhPolygon3D feidhmíonn sé ach cruth imbhuailte a chur ar fáil do nód " +"díorthaithe CollisionObject3D.\n" +"Ná húsáid é ach amháin mar leanbh de Area3D, StaticBody3D, RigidBody3D, " +"CharacterBody3D, etc. chun cruth a thabhairt dóibh." + +msgid "An empty CollisionPolygon3D has no effect on collision." +msgstr "Níl aon éifeacht ag ImbhualadhPolygon3D folamh ar imbhualadh." + +msgid "" +"A non-uniformly scaled CollisionPolygon3D node will probably not function as " +"expected.\n" +"Please make its scale uniform (i.e. the same on all axes), and change its " +"polygon's vertices instead." +msgstr "" +"Is dócha nach bhfeidhmeoidh nód CollisionPolygon3D ar scála neamh-" +"aonfhoirmeach mar a bhíothas ag súil leis.\n" +"Déan a scála aonfhoirmeach (i.e. mar an gcéanna ar gach aiseanna), agus " +"athraigh vertices a pholagáin ina ionad." + +msgid "" +"CollisionShape3D only serves to provide a collision shape to a " +"CollisionObject3D derived node.\n" +"Please only use it as a child of Area3D, StaticBody3D, RigidBody3D, " +"CharacterBody3D, etc. to give them a shape." +msgstr "" +"Ní fhreastalaíonn CollisionShape3D ach cruth imbhuailte a sholáthar do nód " +"díorthaithe CollisionObject3D.\n" +"Ná húsáid é ach amháin mar leanbh de Area3D, StaticBody3D, RigidBody3D, " +"CharacterBody3D, etc. chun cruth a thabhairt dóibh." + +msgid "" +"A shape must be provided for CollisionShape3D to function. Please create a " +"shape resource for it." +msgstr "" +"Ní mór cruth a chur ar fáil le go bhfeidhmeoidh CollisionShape3D. Cruthaigh " +"acmhainn crutha dó, le do thoil." + +msgid "" +"When used for collision, ConcavePolygonShape3D is intended to work with " +"static CollisionObject3D nodes like StaticBody3D.\n" +"It will likely not behave well for %ss (except when frozen and freeze_mode " +"set to FREEZE_MODE_STATIC)." +msgstr "" +"Nuair a úsáidtear é le haghaidh imbhuailte, tá ConcavePolygonShape3D " +"beartaithe a bheith ag obair le nóid statach CollisionObject3D cosúil le " +"StaticBody3D.\n" +"Is dócha nach n-iompróidh sé go maith do %ss (ach amháin nuair a bhíonn sé " +"reoite agus freeze_mode socraithe chun FREEZE_MODE_STATIC)." + +msgid "" +"WorldBoundaryShape3D doesn't support RigidBody3D in another mode than static." +msgstr "" +"Ní thacaíonn WorldBoundaryShape3D le RigidBody3D i mód eile seachas statach." + +msgid "" +"When used for collision, ConcavePolygonShape3D is intended to work with " +"static CollisionObject3D nodes like StaticBody3D.\n" +"It will likely not behave well for CharacterBody3Ds." +msgstr "" +"Nuair a úsáidtear é le haghaidh imbhuailte, tá ConcavePolygonShape3D " +"beartaithe a bheith ag obair le nóid statach CollisionObject3D cosúil le " +"StaticBody3D.\n" +"Is dócha nach n-iompróidh sé go maith do CharacterBody3Ds." + +msgid "" +"A non-uniformly scaled CollisionShape3D node will probably not function as " +"expected.\n" +"Please make its scale uniform (i.e. the same on all axes), and change the " +"size of its shape resource instead." +msgstr "" +"Is dócha nach bhfeidhmeoidh nód CollisionShape3D ar scála neamh-aonfhoirmeach " +"mar a bhíothas ag súil leis.\n" +"Déan a scála aonfhoirmeach (i.e. mar an gcéanna ar gach aiseanna), agus " +"athraigh méid a acmhainne crutha ina ionad." + +msgid "Node A and Node B must be PhysicsBody3Ds" +msgstr "Ní mór nód A agus Nód B a bheith FisiceBody3Ds" + +msgid "Node A must be a PhysicsBody3D" +msgstr "Ní mór nód A a bheith ina PhysicsBody3D" + +msgid "Node B must be a PhysicsBody3D" +msgstr "Caithfidh Nód B a bheith ina FhisicBody3D" + +msgid "Joint is not connected to any PhysicsBody3Ds" +msgstr "Níl Joint ceangailte le haon PhysicsBody3Ds" + +msgid "Node A and Node B must be different PhysicsBody3Ds" +msgstr "Ní mór nód A agus Nód B a bheith fisice éagsúlaBody3Ds" + +msgid "" +"Scale changes to RigidBody3D will be overridden by the physics engine when " +"running.\n" +"Please change the size in children collision shapes instead." +msgstr "" +"Sáróidh an t-inneall fisice athruithe scála ar RigidBody3D agus é ag rith.\n" +"Athraigh an méid i gcruthanna imbhuailtí leanaí ina ionad." + +msgid "" +"This node cannot interact with other objects unless a Shape3D is assigned." +msgstr "" +"Ní féidir leis an nód seo idirghníomhú le rudaí eile mura sanntar Shape3D." + +msgid "" +"ShapeCast3D does not support ConcavePolygonShape3Ds. Collisions will not be " +"reported." +msgstr "" +"Ní thacaíonn ShapeCast3D le ConcavePolygonShape3Ds. Ní dhéanfar imbhuailtí a " +"thuairisciú." + +msgid "" +"VehicleWheel3D serves to provide a wheel system to a VehicleBody3D. Please " +"use it as a child of a VehicleBody3D." +msgstr "" +"Feidhmíonn VehicleWheel3D chun córas roth a chur ar fáil do VehicleBody3D. " +"Bain úsáid as mar leanbh de chuid VehicleBody3D." + +msgid "" +"The \"Remote Path\" property must point to a valid Node3D or Node3D-derived " +"node to work." +msgstr "" +"Ní mór don mhaoin \"Conair Chianda\" nód bailí Node3D nó Node3D-díorthaithe a " +"chur in iúl chun oibriú." + +msgid "" +"Skeleton3D node not set! SkeletonModifier3D must be child of Skeleton3D or " +"set a path to an external skeleton." +msgstr "" +"Níl nód cnámharlaigh3D socraithe! Ní mór cnámharlachModifier3D a bheith ina " +"leanbh de Skeleton3D nó cosán a shocrú chuig cnámharlach seachtrach." + +msgid "This body will be ignored until you set a mesh." +msgstr "Déanfar neamhaird den chorp seo go dtí go socraíonn tú mogalra." + +msgid "" +"A SpriteFrames resource must be created or set in the \"Sprite Frames\" " +"property in order for AnimatedSprite3D to display frames." +msgstr "" +"Ní mór acmhainn SpriteFrames a chruthú nó a shocrú sa mhaoin \"Frámaí " +"Sprite\" chun go mbeidh AnimatedSprite3D chun frámaí a thaispeáint." + +msgid "" +"The GeometryInstance3D visibility range's End distance is set to a non-zero " +"value, but is lower than the Begin distance.\n" +"This means the GeometryInstance3D will never be visible.\n" +"To resolve this, set the End distance to 0 or to a value greater than the " +"Begin distance." +msgstr "" +"Tá achar deiridh raon infheictheachta GeometryInstance3D socraithe go luach " +"neamh-nialasach, ach tá sé níos ísle ná an t-achar Tosaigh.\n" +"Ciallaíonn sé seo nach mbeidh an GeometryInstance3D le feiceáil go deo.\n" +"Chun é seo a réiteach, socraigh an t-achar Deireadh go 0 nó le luach níos mó " +"ná an t-achar Tosaigh." + +msgid "" +"The GeometryInstance3D is configured to fade in smoothly over distance, but " +"the fade transition distance is set to 0.\n" +"To resolve this, increase Visibility Range Begin Margin above 0." +msgstr "" +"Tá an GeometryInstance3D cumraithe chun céimnithe go réidh thar achar, ach tá " +"an t-achar aistrithe céimnithe socraithe go 0.\n" +"Chun é seo a réiteach, méadaigh Raon Infheictheachta Tosaigh Corrlach os " +"cionn 0." + +msgid "" +"The GeometryInstance3D is configured to fade out smoothly over distance, but " +"the fade transition distance is set to 0.\n" +"To resolve this, increase Visibility Range End Margin above 0." +msgstr "" +"Tá an GeometryInstance3D cumraithe chun céimnithe amach go réidh thar achar, " +"ach tá an t-achar aistrithe céimnithe socraithe go 0.\n" +"Chun é seo a réiteach, méadaigh Corrlach Deiridh Raon Infheictheachta os " +"cionn 0." + +msgid "" +"GeometryInstance3D transparency is only available when using the Forward+ " +"rendering method." +msgstr "" +"Níl trédhearcacht GeometryInstance3D ar fáil ach amháin nuair a bhíonn an " +"modh rindreáil Forward+ á úsáid." + +msgid "" +"GeometryInstance3D visibility range transparency fade is only available when " +"using the Forward+ rendering method." +msgstr "" +"Níl céimnithe trédhearcachta raon infheictheachta GeometryInstance3D ar fáil " +"ach amháin nuair a bhíonn an modh rindreáil Forward + á úsáid." + +msgid "Plotting Meshes" +msgstr "Mogaill Bhreacadh" + +msgid "Finishing Plot" +msgstr "Breacadh Críochnaithe" + +msgid "Generating Distance Field" +msgstr "Réimse Faid a Ghiniúint" + +msgid "" +"VoxelGI nodes are not supported when using the GL Compatibility backend yet. " +"Support will be added in a future release." +msgstr "" +"Ní thacaítear le nóid VoxelGI agus an t-inneall Comhoiriúnachta GL á úsáid " +"fós. Cuirfear tacaíocht leis in eisiúint amach anseo." + +msgid "" +"No VoxelGI data set, so this node is disabled. Bake static objects to enable " +"GI." +msgstr "" +"Níl aon tacar sonraí VoxelGI ann, mar sin tá an nód seo díchumasaithe. Bácáil " +"rudaí statacha chun GI a chumasú." + +msgid "" +"To have any visible effect, WorldEnvironment requires its \"Environment\" " +"property to contain an Environment, its \"Camera Attributes\" property to " +"contain a CameraAttributes resource, or both." +msgstr "" +"Chun aon éifeacht infheicthe a bheith aige, éilíonn WorldEnvironment ar a " +"mhaoin \"Comhshaol\" Comhshaol a bheith ann, a mhaoin \"Tréithe Ceamara\" " +"chun acmhainn CameraAttributes a bheith ann, nó an dá rud." + +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instantiated " +"scenes)." +msgstr "" +"Ní cheadaítear ach WorldEnvironment amháin in aghaidh an radhairc (nó sraith " +"radharcanna meandaracha)." + +msgid "" +"XRCamera3D may not function as expected without an XROrigin3D node as its " +"parent." +msgstr "" +"Ní fhéadfaidh XRCamera3D feidhmiú mar a bhíothas ag súil leis gan nód " +"XROrigin3D mar thuismitheoir." + +msgid "" +"XRNode3D may not function as expected without an XROrigin3D node as its " +"parent." +msgstr "" +"Ní fhéadfaidh XRNode3D feidhmiú mar a bhíothas ag súil leis gan nód " +"XROrigin3D mar thuismitheoir." + +msgid "No tracker name is set." +msgstr "Níl aon ainm rianaire socraithe." + +msgid "No pose is set." +msgstr "Níl aon údar socraithe." + +msgid "XROrigin3D requires an XRCamera3D child node." +msgstr "Éilíonn XROrigin3D nód leanaí XRCamera3D." + +msgid "" +"XR shaders are not enabled in project settings. Stereoscopic output is not " +"supported unless they are enabled. Please enable `xr/shaders/enabled` to use " +"stereoscopic output." +msgstr "" +"Níl shaders XR cumasaithe i socruithe tionscadail. Ní thacaítear le haschur " +"steiréascópach mura bhfuil siad cumasaithe. Cumasaigh 'xr/shaders/cumasaithe' " +"chun aschur steiréascópach a úsáid." + +msgid "On BlendTree node '%s', animation not found: '%s'" +msgstr "Ar nód BlendTree '%s', níor aimsíodh beochan: '%s'" + +msgid "Animation not found: '%s'" +msgstr "Beochan gan aimsiú: '%s'" + +msgid "Animation Apply Reset" +msgstr "Athshocraigh Feidhmchlár Beochana" + +msgid "Nothing connected to input '%s' of node '%s'." +msgstr "Níl aon rud ceangailte le hionchur '%s' de nód '%s'." + +msgid "No root AnimationNode for the graph is set." +msgstr "Níl aon fhréamh AnimationNode don ghraf socraithe." + +msgid "" +"ButtonGroup is intended to be used only with buttons that have toggle_mode " +"set to true." +msgstr "" +"Tá sé i gceist buttonGroup a úsáid ach amháin le cnaipí a bhfuil toggle_mode " +"socraithe go fíor." + +msgid "Copy this constructor in a script." +msgstr "Cóipeáil an cruthaitheoir seo i script." + +msgid "Switch between hexadecimal and code values." +msgstr "Athraigh idir luachanna heicsidheachúlach agus códluachanna." + +msgid "" +"Container by itself serves no purpose unless a script configures its children " +"placement behavior.\n" +"If you don't intend to add a script, use a plain Control node instead." +msgstr "" +"Ní fhreastalaíonn coimeádán ann féin ar aon chuspóir mura ndéanann script a " +"iompar socrúcháin leanaí a chumrú.\n" +"Mura bhfuil sé ar intinn agat script a chur leis, bain úsáid as nód Rialaithe " +"simplí ina ionad." + +msgid "" +"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to " +"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"." +msgstr "" +"Ní thaispeánfar an Leid Leid mar go bhfuil Scagaire Luiche an rialaithe " +"socraithe chun \"Déan neamhaird\". Chun é seo a réiteach, socraigh an " +"Scagaire Luiche go \"Stop\" nó \"Pas\"." + +msgid "" +"Please be aware that GraphEdit and GraphNode will undergo extensive " +"refactoring in a future 4.x version involving compatibility-breaking API " +"changes." +msgstr "" +"Bí ar an eolas go ndéanfar athchóiriú fairsing ar GraphEdit agus GraphNode i " +"leagan 4.x amach anseo a bhaineann le hathruithe API comhoiriúnachta." + +msgid "" +"Labels with autowrapping enabled must have a custom minimum size configured " +"to work correctly inside a container." +msgstr "" +"Ní mór go mbeadh íosmhéid saincheaptha cumraithe ag lipéid le autowrapping " +"cumasaithe chun oibriú i gceart taobh istigh de choimeádán." + +msgid "" +"The current font does not support rendering one or more characters used in " +"this Label's text." +msgstr "" +"Ní thacaíonn an cló reatha le carachtar amháin nó níos mó a úsáidtear i " +"dtéacs an Lipéid seo a rindreáil." + +msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." +msgstr "" +"Má tá \"Exp Edit\" cumasaithe, ní mór \"Luach Min\" a bheith níos mó ná 0." + +msgid "" +"ScrollContainer is intended to work with a single child control.\n" +"Use a container as child (VBox, HBox, etc.), or a Control and set the custom " +"minimum size manually." +msgstr "" +"Tá sé i gceist go n-oibreoidh ScrollContainer le rialú linbh amháin.\n" +"Bain úsáid as coimeádán mar leanbh (VBox, HBox, etc.), nó Rialú agus socraigh " +"an t-íosmhéid saincheaptha de láimh." + +msgid "" +"This node doesn't have a SubViewport as child, so it can't display its " +"intended content.\n" +"Consider adding a SubViewport as a child to provide something displayable." +msgstr "" +"Níl SubViewport ag an nód seo mar leanbh, ionas nach féidir leis an ábhar atá " +"beartaithe aige a thaispeáint.\n" +"Smaoinigh ar SubViewport a chur leis mar leanbh chun rud éigin a chur ar " +"taispeáint." + +msgid "" +"The default mouse cursor shape of SubViewportContainer has no effect.\n" +"Consider leaving it at its initial value `CURSOR_ARROW`." +msgstr "" +"Níl aon éifeacht ag cruth réamhshocraithe cúrsóir na luiche de " +"SubViewportContainer.\n" +"Smaoinigh ar é a fhágáil ag a luach tosaigh 'CURSOR_ARROW'." + +msgid "" +"This node was an instance of scene '%s', which was no longer available when " +"this scene was loaded." +msgstr "" +"Sampla de radharc '%s' a bhí sa nód seo, nach raibh ar fáil a thuilleadh " +"nuair a luchtaíodh an radharc seo." + +msgid "" +"Saving current scene will discard instance and all its properties, including " +"editable children edits (if existing)." +msgstr "" +"Má shábháiltear an radharc reatha, cuirfear deireadh leis an gcás agus leis " +"na hairíonna go léir a bhaineann leis, lena n-áirítear eagarthóireacht a " +"dhéanamh ar leanaí ineagarthóireachta (más ann dóibh)." + +msgid "" +"This node was saved as class type '%s', which was no longer available when " +"this scene was loaded." +msgstr "" +"Sábháladh an nód seo mar chineál ranga '%s', nach raibh ar fáil a thuilleadh " +"nuair a luchtaíodh an radharc seo." + +msgid "" +"Data from the original node is kept as a placeholder until this type of node " +"is available again. It can hence be safely re-saved without risk of data loss." +msgstr "" +"Coinnítear sonraí ón nód bunaidh mar shealbhóir áite go dtí go mbeidh an " +"cineál seo nód ar fáil arís. Dá bhrí sin, is féidir é a ath-shábháil go " +"sábháilte gan riosca caillteanas sonraí." + +msgid "Unrecognized missing node. Check scene dependency errors for details." +msgstr "" +"Nód ar iarraidh gan aithint. Seiceáil earráidí spleáchais radhairc le " +"haghaidh sonraí." + +msgid "" +"This node is marked as deprecated and will be removed in future versions.\n" +"Please check the Godot documentation for information about migration." +msgstr "" +"Tá an nód seo marcáilte mar dhímheas agus bainfear é i leaganacha amach " +"anseo.\n" +"Seiceáil doiciméadú Godot le do thoil chun eolas a fháil faoin imirce." + +msgid "" +"This node is marked as experimental and may be subject to removal or major " +"changes in future versions." +msgstr "" +"Tá an nód marcáilte mar thurgnamhach agus d'fhéadfadh sé a bheith faoi réir a " +"bhaint nó athruithe móra i leaganacha amach anseo." + +msgid "" +"ShaderGlobalsOverride is not active because another node of the same type is " +"in the scene." +msgstr "" +"Níl ShaderGlobalsOverride gníomhach toisc go bhfuil nód eile den chineál " +"céanna sa radharc." + +msgid "" +"Very low timer wait times (< 0.05 seconds) may behave in significantly " +"different ways depending on the rendered or physics frame rate.\n" +"Consider using a script's process loop instead of relying on a Timer for very " +"low wait times." +msgstr "" +"D’fhéadfadh amanna feithimh an-íseal ar an lasc ama (< 0.05 soicind) iad féin " +"a iompar ar bhealaí suntasacha difriúla ag brath ar an ráta fráma rindreáilte " +"nó fisice.\n" +"Smaoinigh ar lúb próisis scripte a úsáid seachas a bheith ag brath ar " +"Uaineadóir le haghaidh tréimhsí feithimh an-íseal." + +msgid "" +"The Viewport size must be greater than or equal to 2 pixels on both " +"dimensions to render anything." +msgstr "" +"Ní mór don mhéid Viewport a bheith níos mó ná nó cothrom le 2 picteilín ar an " +"dá ghné chun aon rud a dhéanamh." + +msgid "" +"An incoming node's name clashes with %s already in the scene (presumably, " +"from a more nested instance).\n" +"The less nested node will be renamed. Please fix and re-save the scene." +msgstr "" +"Tagann ainm nód atá ag teacht isteach salach ar %s cheana féin sa radharc (is " +"dócha, ó shampla níos neadaithe).\n" +"Athainmneofar an nód is lú neadaithe. Socraigh agus ath-shábháil an radharc." + +msgid "" +"Shader keywords cannot be used as parameter names.\n" +"Choose another name." +msgstr "" +"Ní féidir eochairfhocail shader a úsáid mar ainmneacha paraiméadair.\n" +"Roghnaigh ainm eile." + +msgid "This parameter type does not support the '%s' qualifier." +msgstr "Ní thacaíonn an cineál paraiméadair seo leis an gcáilitheoir '%s'." + +msgid "" +"Global parameter '%s' does not exist.\n" +"Create it in the Project Settings." +msgstr "" +"Níl paraiméadar domhanda '%s' ann.\n" +"Cruthaigh é i Socruithe an Tionscadail." + +msgid "" +"Global parameter '%s' has an incompatible type for this kind of node.\n" +"Change it in the Project Settings." +msgstr "" +"Tá cineál neamh-chomhoiriúnach ag paraiméadar domhanda '%s' don chineál seo " +"nód.\n" +"Athraigh é i Socruithe an Tionscadail." + +msgid "" +"The sampler port is connected but not used. Consider changing the source to " +"'SamplerPort'." +msgstr "" +"Tá an port sampler ceangailte ach ní úsáidtear é. Smaoinigh ar an bhfoinse a " +"athrú go 'SamplerPort'." + +msgid "Invalid source for preview." +msgstr "Foinse neamhbhailí le haghaidh réamhamhairc." + +msgid "Invalid source for shader." +msgstr "Foinse neamhbhailí le haghaidh shader." + +msgid "Invalid operator for that type." +msgstr "Oibreoir neamhbhailí don chineál sin." + +msgid "" +"`%s` precision mode is not available for `gl_compatibility` profile.\n" +"Reverted to `None` precision." +msgstr "" +"Níl mód beachtais '%s' ar fáil don phróifíl 'gl_compatibility'.\n" +"Ar ais go cruinneas 'None'." + +msgid "'%s' type is incompatible with '%s' source." +msgstr "Níl an cineál '%s' comhoiriúnach leis an bhfoinse '%s'." + +msgid "'%s' default color is incompatible with '%s' source." +msgstr "Níl dath réamhshocraithe '%s' comhoiriúnach leis an bhfoinse '%s'." + +msgid "Default Color" +msgstr "Dath Réamhshocraithe" + +msgid "Filter" +msgstr "Scagaire" + +msgid "Repeat" +msgstr "Athdhéan" + +msgid "Invalid comparison function for that type." +msgstr "Feidhm chomparáide neamhbhailí don chineál sin." + +msgid "2D Mode" +msgstr "Mód 2D" + +msgid "Use All Surfaces" +msgstr "Úsáid Gach Dromchla" + +msgid "Surface Index" +msgstr "Innéacs Dromchla" + +msgid "" +"Invalid number of arguments when calling stage function '%s', which expects " +"%d arguments." +msgstr "" +"Líon neamhbhailí argóintí agus feidhm stáitse '%s' á glaoch, a bhfuil súil " +"aige le hargóintí %d." + +msgid "" +"Invalid argument type when calling stage function '%s', type expected is '%s'." +msgstr "" +"Cineál neamhbhailí argóinte agus feidhm stáitse '%s' á glaoch, cineál a " +"bhfuiltear ag súil leis ná '%s'." + +msgid "Expected integer constant within [%d..%d] range." +msgstr "Tairiseach slánuimhir ionchais laistigh de [%d.. Raon %d]." + +msgid "Argument %d of function '%s' is not a variable, array, or member." +msgstr "Ní athróg, eagar ná ball é argóint %d d'fheidhm '%s'." + +msgid "Varyings cannot be passed for the '%s' parameter." +msgstr "Ní féidir athruithe a rith don pharaiméadar '%s'." + +msgid "A constant value cannot be passed for the '%s' parameter." +msgstr "Ní féidir luach seasmhach a rith don pharaiméadar '%s'." + +msgid "" +"Argument %d of function '%s' can only take a local variable, array, or member." +msgstr "" +"Ní féidir le hargóint %d d'fheidhm '%s' ach athróg, eagar nó ball logánta a " +"ghlacadh." + +msgid "Built-in function \"%s(%s)\" is only supported on high-end platforms." +msgstr "Ní thacaítear le feidhm ionsuite \"%s(%s)\" ach ar ardáin ardleibhéil." + +msgid "Invalid arguments for the built-in function: \"%s(%s)\"." +msgstr "Argóintí neamhbhailí don fheidhm ionsuite: \"%s(%s)\"." + +msgid "Recursion is not allowed." +msgstr "Ní cheadaítear athchúrsa." + +msgid "Function '%s' can't be called from source code." +msgstr "Ní féidir feidhm '%s' a ghlaoch ón gcód foinseach." + +msgid "" +"Invalid argument for \"%s(%s)\" function: argument %d should be %s but is %s." +msgstr "" +"Argóint neamhbhailí le haghaidh fheidhm \"%s(%s)\": argóint %d ba chóir a " +"bheith %s ach is %s." + +msgid "" +"Too few arguments for \"%s(%s)\" call. Expected at least %d but received %d." +msgstr "" +"Ró-bheagán argóintí don ghlao \"%s(%s)\". Bhíothas ag súil le %d ar a laghad " +"ach fuarthas %d." + +msgid "" +"Too many arguments for \"%s(%s)\" call. Expected at most %d but received %d." +msgstr "" +"An iomarca argóintí don ghlao \"%s(%s)\". Bhíothas ag súil le %d ar a mhéad " +"ach fuarthas %d." + +msgid "Invalid assignment of '%s' to '%s'." +msgstr "Sannadh neamhbhailí de '%s' do '%s'." + +msgid "Expected constant expression." +msgstr "Sloinneadh tairiseach a bhfuiltear ag súil leis." + +msgid "Expected ',' or ')' after argument." +msgstr "Bhíothas ag súil le ',' nó ')' tar éis argóint." + +msgid "Varying may not be assigned in the '%s' function." +msgstr "Ní féidir athrú a shannadh san fheidhm \"%s\"." + +msgid "" +"Varying with '%s' data type may only be assigned in the 'fragment' function." +msgstr "" +"Ní féidir athraíonn le cineál sonraí '%s' a shannadh ach san fheidhm " +"'bloighean'." + +msgid "" +"Varyings which assigned in 'vertex' function may not be reassigned in " +"'fragment' or 'light'." +msgstr "" +"Ní fhéadfar athruithe a shanntar in fheidhm 'rinne' a athshannadh i 'bhroinn' " +"nó i 'solas'." + +msgid "" +"Varyings which assigned in 'fragment' function may not be reassigned in " +"'vertex' or 'light'." +msgstr "" +"Ní fhéadfar athruithe a shanntar san fheidhm 'bhroinn' a athshannadh in " +"'vertex' nó 'solas'." + +msgid "'%s' cannot be used within the '%s' processor function." +msgstr "Ní féidir '%s' a úsáid laistigh d'fheidhm phróiseálaí '%s'." + +msgid "" +"'%s' cannot be used here, because '%s' is called by the '%s' processor " +"function (which is not allowed)." +msgstr "" +"Ní féidir '%s' a úsáid anseo, toisc go nglaoitear '%s' ag feidhm phróiseálaí " +"'%s' (rud nach bhfuil ceadaithe)." + +msgid "Assignment to function." +msgstr "Sannadh chun feidhme." + +msgid "Swizzling assignment contains duplicates." +msgstr "Tá dúbailt san sannadh swzzling." + +msgid "Assignment to uniform." +msgstr "Sannadh ar éide." + +msgid "Constants cannot be modified." +msgstr "Ní féidir tairisigh a athrú." + +msgid "" +"Sampler argument %d of function '%s' called more than once using both built-" +"ins and uniform textures, this is not supported (use either one or the other)." +msgstr "" +"Argóint samplálaí %d d'fheidhm '%s' a dtugtar níos mó ná uair amháin ag baint " +"úsáide as uigeachtaí ionsuite agus aonfhoirmeacha araon, ní thacaítear leis " +"seo (úsáid ceann amháin nó an ceann eile)." + +msgid "" +"Sampler argument %d of function '%s' called more than once using textures " +"that differ in either filter, repeat, or texture hint setting." +msgstr "" +"Glaodh ar argóint samplálaí %d d'fheidhm '%s' níos mó ná uair amháin agus " +"úsáid á baint as uigeachtaí atá difriúil ó thaobh socrú leid, scagaire, " +"athuair nó uigeachta." + +msgid "" +"Sampler argument %d of function '%s' called more than once using different " +"built-ins. Only calling with the same built-in is supported." +msgstr "" +"Glaodh ar argóint samplálaí %d d'fheidhm '%s' níos mó ná uair amháin ag baint " +"úsáide as ionsuite éagsúla. Ní thacaítear ach le glaoch leis an ionsuite " +"céanna." + +msgid "Array size is already defined." +msgstr "Tá méid eagar sainmhínithe cheana féin." + +msgid "Unknown array size is forbidden in that context." +msgstr "Toirmisctear méid eagar anaithnid sa chomhthéacs sin." + +msgid "Array size expressions are not supported." +msgstr "Ní thacaítear le habairtí méide eagar." + +msgid "Expected a positive integer constant." +msgstr "Bhíothas ag súil le tairiseach slánuimhir dhearfach." + +msgid "Invalid data type for the array." +msgstr "Cineál sonraí neamhbhailí don eagar." + +msgid "Array size mismatch." +msgstr "Neamhréir méid Eagar." + +msgid "Expected array initialization." +msgstr "Táthar ag súil le tosaithe eagar." + +msgid "Cannot convert from '%s' to '%s'." +msgstr "Ní féidir thiontú ó '%s' go '%s'." + +msgid "Expected ')' in expression." +msgstr "Bhíothas ag súil le ‘)’ san abairt." + +msgid "Void value not allowed in expression." +msgstr "Ní cheadaítear luach folús sa slonn." + +msgid "Expected '(' after the type name." +msgstr "Bhíothas ag súil le '(' tar éis ainm an chineáil." + +msgid "No matching constructor found for: '%s'." +msgstr "Níor aimsíodh cruthaitheoir meaitseáilte le haghaidh: '%s'." + +msgid "Built-in function '%s' is not supported for the '%s' shader type." +msgstr "Ní thacaítear le feidhm ionsuite '%s' don chineál scáthaithe '%s'." + +msgid "Expected a function name." +msgstr "Bhíothas ag súil le hainm feidhme." + +msgid "No matching function found for: '%s'." +msgstr "Níor aimsíodh feidhm chomhoiriúnach le haghaidh: '%s'." + +msgid "Varying '%s' cannot be passed for the '%s' parameter in that context." +msgstr "" +"Ní féidir pas a fháil le hathrú '%s' don pharaiméadar '%s' sa chomhthéacs sin." + +msgid "" +"Unable to pass a multiview texture sampler as a parameter to custom function. " +"Consider to sample it in the main function and then pass the vector result to " +"it." +msgstr "" +"Ní féidir samplóir uigeachta ilamhairc a chur ar aghaidh mar pharaiméadar go " +"dtí an fheidhm shaincheaptha. Smaoinigh ar é a shampláil sa phríomhfheidhm " +"agus ansin cuir an toradh veicteora ar aghaidh chuige." + +msgid "Unknown identifier in expression: '%s'." +msgstr "Aitheantóir anaithnid i slonn: '%s'." + +msgid "" +"%s has been removed in favor of using hint_%s with a uniform.\n" +"To continue with minimal code changes add 'uniform sampler2D %s : hint_%s, " +"filter_linear_mipmap;' near the top of your shader." +msgstr "" +"Baineadh %s ar mhaithe le hint_%s a úsáid le héide.\n" +"Chun leanúint ar aghaidh le mionathruithe ar chóid cuir 'uniform sampler2D " +"%s : leid_%s, filter_linear_mipmap;' in aice le barr do shader." + +msgid "Varying with '%s' data type may only be used in the 'fragment' function." +msgstr "" +"Ní féidir athrú le cineál sonraí '%s' a úsáid ach san fheidhm 'bloighean'." + +msgid "Varying '%s' must be assigned in the 'fragment' function first." +msgstr "Ní mór athrú '%s' a shannadh san fheidhm 'bloighean' ar dtús." + +msgid "" +"Varying with integer data type must be declared with `flat` interpolation " +"qualifier." +msgstr "" +"Ní mór éagsúlacht de réir cineáil sonraí slánuimhir a dhearbhú leis an " +"gcáilitheoir idirshuíomh `réidh`." + +msgid "Can't use function as identifier: '%s'." +msgstr "Ní féidir an fheidhm a úsáid mar aitheantóir: '%s'." + +msgid "Only integer expressions are allowed for indexing." +msgstr "Ní cheadaítear ach slonn slánuimhreacha le haghaidh innéacsú." + +msgid "Index [%d] out of range [%d..%d]." +msgstr "Innéacs [%d] as raon [%d..%d]." + +msgid "Expected expression, found: '%s'." +msgstr "Bhíothas ag súil le slonn, fuarthas: '%s'." + +msgid "Empty statement. Remove ';' to fix this warning." +msgstr "Ráiteas folamh. Bain ';' chun an rabhadh seo a shocrú." + +msgid "Expected an identifier as a member." +msgstr "Bhíothas ag súil le haitheantóir mar bhall." + +msgid "Cannot combine symbols from different sets in expression '.%s'." +msgstr "Ní féidir siombailí ó thacair éagsúla a chomhcheangal sa slonn '.%s'." + +msgid "Invalid member for '%s' expression: '.%s'." +msgstr "Ball neamhbhailí le haghaidh slonn '%s': '.%s'." + +msgid "An object of type '%s' can't be indexed." +msgstr "Ní féidir réad den chineál '%s' a innéacsú." + +msgid "Invalid base type for increment/decrement operator." +msgstr "Cineál bonn neamhbhailí le haghaidh oibreora incrimint/laghdaithe." + +msgid "Invalid use of increment/decrement operator in a constant expression." +msgstr "Úsáid neamhbhailí oibritheora incrimint/laghdaithe i slonn tairiseach." + +msgid "Invalid token for the operator: '%s'." +msgstr "Comhartha neamhbhailí don oibreoir: '%s'." + +msgid "Unexpected end of expression." +msgstr "Críoch neamhiontach ar an n-abairt." + +msgid "Invalid arguments to unary operator '%s': %s." +msgstr "Argóintí neamhbhailí don oibreoir aonarach '%s': %s." + +msgid "Missing matching ':' for select operator." +msgstr "Meaitseáil ':' ar iarraidh le haghaidh oibritheora roghnaithe." + +msgid "Invalid argument to ternary operator: '%s'." +msgstr "Argóint neamhbhailí don oibreoir trínártha: '%s'." + +msgid "Invalid arguments to operator '%s': '%s'." +msgstr "Argóintí neamhbhailí leis an oibreoir '%s': '%s'." + +msgid "A switch may only contain '%s' and '%s' blocks." +msgstr "Ní féidir ach bloic '%s' agus '%s' a bheith i lasc." + +msgid "Expected variable type after precision modifier." +msgstr "Cineál athróg a bhfuiltear ag súil leis tar éis modhnóir beachtas." + +msgid "Invalid variable type (samplers are not allowed)." +msgstr "Cineál athróg neamhbhailí (ní cheadaítear samplálaithe)." + +msgid "Expected an identifier or '[' after type." +msgstr "Bhíothas ag súil le haitheantóir nó '[' i ndiaidh cineáil." + +msgid "Expected an identifier." +msgstr "Bhíothas ag súil le haitheantóir." + +msgid "Expected array initializer." +msgstr "Tosaitheoir eagar ionchais." + +msgid "Expected data type after precision modifier." +msgstr "Cineál sonraí a bhfuiltear ag súil leis tar éis modhnóir beachtas." + +msgid "Expected a constant expression." +msgstr "Bhíothas ag súil le slonn tairiseach." + +msgid "Expected initialization of constant." +msgstr "Táthar ag súil le tús a chur leis an tairiseach." + +msgid "Expected constant expression for argument %d of function call after '='." +msgstr "" +"Bhíothas ag súil le slonn tairiseach le haghaidh argóint %d den ghlao feidhme " +"tar éis '='." + +msgid "Expected a boolean expression." +msgstr "Bhíothas ag súil le slonn Boole." + +msgid "Expected an integer expression." +msgstr "Bhíothas ag súil le slonn slánuimhir." + +msgid "Cases must be defined before default case." +msgstr "Ní mór cásanna a shainiú roimh chás réamhshocraithe." + +msgid "Default case must be defined only once." +msgstr "Ní mór an cás réamhshocraithe a shainiú ach uair amháin." + +msgid "Duplicated case label: %d." +msgstr "Lipéad cáis dhúbailt: %d." + +msgid "'%s' must be placed within a '%s' block." +msgstr "Ní mór '%s' a chur laistigh de bhloc '%s'." + +msgid "Expected an integer constant." +msgstr "Bhíothas ag súil le tairiseach slánuimhir." + +msgid "Using '%s' in the '%s' processor function is incorrect." +msgstr "Tá úsáid '%s' san fheidhm phróiseálaí '%s' mícheart." + +msgid "Expected '%s' with an expression of type '%s'." +msgstr "Bhíothas ag súil le '%s' agus slonn den chineál '%s'." + +msgid "Expected return with an expression of type '%s'." +msgstr "Bhíothas ag súil le haischur le slonn den chineál '%s'." + +msgid "Use of '%s' is not allowed here." +msgstr "Ní cheadaítear '%s' a úsáid anseo." + +msgid "'%s' is not allowed outside of a loop or '%s' statement." +msgstr "Ní cheadaítear '%s' taobh amuigh de lúb nó ráiteas '%s'." + +msgid "'%s' is not allowed outside of a loop." +msgstr "Ní cheadaítear '%s' taobh amuigh de lúb." + +msgid "The middle expression is expected to be a boolean operator." +msgstr "Táthar ag súil gur oibreoir boolean a bheidh sa lárléiriú." + +msgid "The left expression is expected to be a variable declaration." +msgstr "Táthar ag súil gur dearbhú inathraithe a bheidh sa slonn ar chlé." + +msgid "The precision modifier cannot be used on structs." +msgstr "Ní féidir an modhnóir beachtas a úsáid ar struchtúir." + +msgid "The precision modifier cannot be used on boolean types." +msgstr "Ní féidir an modhnóir beachtas a úsáid ar chineálacha boolean." + +msgid "Expected '%s' at the beginning of shader. Valid types are: %s." +msgstr "" +"Bhíothas ag súil le '%s' ag tús an scáthaithe. Is iad na cineálacha bailí: %s." + +msgid "" +"Expected an identifier after '%s', indicating the type of shader. Valid types " +"are: %s." +msgstr "" +"Bhíothas ag súil le haitheantóir i ndiaidh '%s', a thaispeánfadh an cineál " +"scáthlána. Is iad na cineálacha bailí: %s." + +msgid "Invalid shader type. Valid types are: %s" +msgstr "Cineál scáthaithe neamhbhailí. Is iad na cineálacha bailí: %s" + +msgid "Expected an identifier for render mode." +msgstr "Bhíothas ag súil le haitheantóir don mhodh rindreála." + +msgid "Duplicated render mode: '%s'." +msgstr "Mód rindreála dúblach: '%s'." + +msgid "" +"Redefinition of render mode: '%s'. The '%s' mode has already been set to '%s'." +msgstr "Athshainiú mód rindreála: '%s'. Tá mód '%s' socraithe go '%s' cheana." + +msgid "Invalid render mode: '%s'." +msgstr "Mód rindreála neamhbhailí: '%s'." + +msgid "Unexpected token: '%s'." +msgstr "Comhartha gan choinne: '%s'." + +msgid "Expected a struct identifier." +msgstr "Bhíothas ag súil le haitheantóir struchtúr." + +msgid "Nested structs are not allowed." +msgstr "Ní cheadaítear struchtúir neadaithe." + +msgid "Expected data type." +msgstr "Cineál sonraí a bhfuiltear ag súil leis." + +msgid "A '%s' data type is not allowed here." +msgstr "Ní cheadaítear cineál sonraí '%s' anseo." + +msgid "Expected an identifier or '['." +msgstr "Bhíothas ag súil le haitheantóir nó le ‘[’." + +msgid "Empty structs are not allowed." +msgstr "Ní cheadaítear struchtúir fholmha." + +msgid "Uniform instances are not yet implemented for '%s' shaders." +msgstr "" +"Níl cásanna aonfhoirmeacha i bhfeidhm fós le haghaidh scáthaitheoirí '%s'." + +msgid "Uniform instances are not supported in gl_compatibility shaders." +msgstr "" +"Ní thacaítear le cásanna aonfhoirmeacha i scáthaitheoirí gl_compatibility." + +msgid "Varyings cannot be used in '%s' shaders." +msgstr "Ní féidir éagsúlachtaí a úsáid i scáthaitheoirí '%s'." + +msgid "Interpolation qualifiers are not supported for uniforms." +msgstr "Ní thacaítear le cáilitheoirí idirshuímh le haghaidh éidí." + +msgid "The '%s' data type is not supported for uniforms." +msgstr "Ní thacaítear le cineál sonraí '%s' le haghaidh éidí." + +msgid "The '%s' data type is not allowed here." +msgstr "Ní cheadaítear an cineál sonraí '%s' anseo." + +msgid "Interpolation modifier '%s' cannot be used with boolean types." +msgstr "Ní féidir modhnóir idirshuíomh '%s' a úsáid le cineálacha boolean." + +msgid "Invalid data type for varying." +msgstr "Cineál sonraí neamhbhailí le haghaidh athrú." + +msgid "Global uniform '%s' does not exist. Create it in Project Settings." +msgstr "Níl éide dhomhanda '%s' ann. Cruthaigh é i Socruithe an Tionscadail." + +msgid "Global uniform '%s' must be of type '%s'." +msgstr "Caithfidh éide dhomhanda '%s' a bheith de chineál '%s'." + +msgid "The '%s' qualifier is not supported for sampler types." +msgstr "" +"Ní thacaítear leis an gcáilitheoir '%s' le haghaidh cineálacha samplóra." + +msgid "The '%s' qualifier is not supported for matrix types." +msgstr "Ní thacaítear leis an gcáilitheoir '%s' le haghaidh cineálacha maitrís." + +msgid "The '%s' qualifier is not supported for uniform arrays." +msgstr "" +"Ní thacaítear leis an gcáilitheoir '%s' le haghaidh eagair aonfhoirmeacha." + +msgid "Expected valid type hint after ':'." +msgstr "Bhíothas ag súil le cineál bailí leid tar éis ':'." + +msgid "This hint is not supported for uniform arrays." +msgstr "Ní thacaítear leis an leid seo le haghaidh eagair aonfhoirmeacha." + +msgid "Source color hint is for '%s', '%s' or sampler types only." +msgstr "" +"Baineann leid datha foinse le haghaidh ‘%s’, ‘%s’ nó cineálacha samplóra " +"amháin." + +msgid "Duplicated hint: '%s'." +msgstr "Leid dhúbailte: '%s'." + +msgid "Range hint is for '%s' and '%s' only." +msgstr "Tá leid raoin ann do '%s' agus '%s' amháin." + +msgid "Expected ',' after integer constant." +msgstr "Bhíothas ag súil le ',' tar éis tairiseach slánuimhir." + +msgid "Expected an integer constant after ','." +msgstr "Bhíothas ag súil le tairiseach slánuimhir i ndiaidh ','." + +msgid "Can only specify '%s' once." +msgstr "Ní féidir '%s' a shonrú ach uair amháin." + +msgid "The instance index can't be negative." +msgstr "Ní féidir leis an innéacs ásc a bheith diúltach." + +msgid "Allowed instance uniform indices must be within [0..%d] range." +msgstr "" +"Ní mór innéacsanna aonfhoirmeacha ásc ceadaithe a bheith laistigh de raon [0.." +"%d]." + +msgid "" +"'hint_normal_roughness_texture' is only available when using the Forward+ " +"backend." +msgstr "" +"Níl 'hint_normal_roughness_texture' ar fáil ach amháin nuair atá an t-inneall " +"Forward+ á úsáid." + +msgid "'hint_normal_roughness_texture' is not supported in '%s' shaders." +msgstr "Ní thacaítear le 'hint_normal_roughness_texture' i shaders '%s'." + +msgid "'hint_depth_texture' is not supported in '%s' shaders." +msgstr "Ní thacaítear le 'hint_depth_texture' i shaders '%s'." + +msgid "This hint is only for sampler types." +msgstr "Níl an leid seo ach le haghaidh cineálacha sampler." + +msgid "Redefinition of hint: '%s'. The hint has already been set to '%s'." +msgstr "Athshainiú leid: '%s'. Tá an leid socraithe do '%s' cheana féin." + +msgid "Duplicated filter mode: '%s'." +msgstr "Mód scagaire dúbailte: '%s'." + +msgid "" +"Redefinition of filter mode: '%s'. The filter mode has already been set to " +"'%s'." +msgstr "" +"Athshainiú mód scagaire: '%s'. Socraíodh mód an scagaire go '%s' cheana féin." + +msgid "Duplicated repeat mode: '%s'." +msgstr "Mód athdhéanta dúblach: '%s'." + +msgid "" +"Redefinition of repeat mode: '%s'. The repeat mode has already been set to " +"'%s'." +msgstr "" +"Athshainiú an mhóid athdhéanta: '%s'. Socraíodh an mód athdhéanta go '%s' " +"cheana féin." + +msgid "Too many '%s' uniforms in shader, maximum supported is %d." +msgstr "" +"An iomarca éide '%s' sa scáthán, is é %d an t-uasmhéid a dtacaítear leis." + +msgid "Setting default values to uniform arrays is not supported." +msgstr "" +"Ní thacaítear le luachanna réamhshocraithe a shocrú d'eagair aonfhoirmeacha." + +msgid "Expected constant expression after '='." +msgstr "Bhíothas ag súil le slonn tairiseach i ndiaidh '='." + +msgid "Can't convert constant to '%s'." +msgstr "Ní féidir tairiseach a thiontú go '%s'." + +msgid "Expected an uniform subgroup identifier." +msgstr "Táthar ag súil le haitheantóir foghrúpa aonfhoirmeach." + +msgid "Expected an uniform group identifier." +msgstr "Bhíothas ag súil le haitheantóir aonfhoirmeach grúpa." + +msgid "Expected an uniform group identifier or `;`." +msgstr "Táthar ag súil le haitheantóir aonfhoirmeach grúpa nó ';'." + +msgid "Group needs to be opened before." +msgstr "Caithfear an Grúpa a oscailt roimhe seo." + +msgid "Shader type is already defined." +msgstr "Tá cineál shader sainithe cheana féin." + +msgid "Expected constant, function, uniform or varying." +msgstr "Bhíothas ag súil le tairiseach, feidhm, aonfhoirmeach nó éagsúil." + +msgid "Invalid constant type (samplers are not allowed)." +msgstr "Cineál tairiseach neamhbhailí (ní cheadaítear samplers)." + +msgid "Invalid function type (samplers are not allowed)." +msgstr "Cineál feidhme neamhbhailí (ní cheadaítear samplers)." + +msgid "Expected a function name after type." +msgstr "Bhíothas ag súil le hainm feidhme tar éis cineáil." + +msgid "Expected '(' after function identifier." +msgstr "Bhíothas ag súil le '(' tar éis aitheantóir feidhme." + +msgid "" +"Global non-constant variables are not supported. Expected '%s' keyword before " +"constant definition." +msgstr "" +"Ní thacaítear le hathróga neamh-tairiseacha domhanda. Bhíothas ag súil le " +"heochairfhocal '%s' roimh shainmhíniú leanúnach." + +msgid "Expected an identifier after type." +msgstr "Bhíothas ag súil le haitheantóir tar éis cineáil." + +msgid "" +"The '%s' qualifier cannot be used within a function parameter declared with " +"'%s'." +msgstr "" +"Ní féidir an cáilitheoir '%s' a úsáid laistigh de pharaiméadar feidhme a " +"dhearbhaítear le '%s'." + +msgid "Expected a valid data type for argument." +msgstr "Bhíothas ag súil le cineál sonraí bailí le haghaidh argóinte." + +msgid "Opaque types cannot be output parameters." +msgstr "Ní féidir le cineálacha teimhneacha a bheith ina bparaiméadar aschuir." + +msgid "Void type not allowed as argument." +msgstr "Ní cheadaítear cineál neamhní mar argóint." + +msgid "Expected an identifier for argument name." +msgstr "Bhíothas ag súil le haitheantóir d'ainm na hargóinte." + +msgid "Function '%s' expects no arguments." +msgstr "Níl feidhm '%s' ag súil le hargóintí ar bith." + +msgid "Function '%s' must be of '%s' return type." +msgstr "Ní mór feidhm '%s' a bheith de chineál tuairisceáin '%s'." + +msgid "Expected a '{' to begin function." +msgstr "Bhíothas ag súil le '{' chun tús a chur leis an bhfeidhm." + +msgid "Expected at least one '%s' statement in a non-void function." +msgstr "Bhíothas ag súil le ráiteas amháin '%s' ar a laghad i bhfeidhm neamhní." + +msgid "uniform buffer" +msgstr "maolán aonfhoirmeach" + +msgid "Expected a '%s'." +msgstr "Bhíothas ag súil le '%s'." + +msgid "Expected a '%s' or '%s'." +msgstr "Bhíothas ag súil le '%s' nó '%s'." + +msgid "Expected a '%s' after '%s'." +msgstr "Bhíothas ag súil le '%s' i ndiaidh '%s'." + +msgid "Redefinition of '%s'." +msgstr "Athshainmhíniú ar '%s'." + +msgid "Unknown directive." +msgstr "Treoir anaithnid." + +msgid "Invalid macro name." +msgstr "Macraainm neamhbhailí." + +msgid "Macro redefinition." +msgstr "Macra-athshainiú." + +msgid "Invalid argument name." +msgstr "Ainm neamhbhailí na hargóinte." + +msgid "Expected a comma in the macro argument list." +msgstr "Bhíothas ag súil le camóg sa liosta macra-argóintí." + +msgid "'##' must not appear at beginning of macro expansion." +msgstr "Níor cheart go mbeadh '##' le feiceáil ag tús an mhacra-fhairsingithe." + +msgid "'##' must not appear at end of macro expansion." +msgstr "" +"Níor cheart '##' a bheith le feiceáil ag deireadh an mhacra-leathnaithe." + +msgid "Unmatched elif." +msgstr "Elif gan chomhoiriúnú." + +msgid "Missing condition." +msgstr "Coinníoll ar iarraidh." + +msgid "Condition evaluation error." +msgstr "Earráid mheastóireachta coinníoll." + +msgid "Unmatched else." +msgstr "Gan chomhoiriúnú eile." + +msgid "Invalid else." +msgstr "Neamhbhailí eile." + +msgid "Unmatched endif." +msgstr "Endif gan chomhoiriúnú." + +msgid "Invalid endif." +msgstr "Endif neamhbhailí." + +msgid "Invalid ifdef." +msgstr "Ifdef neamhbhailí." + +msgid "Invalid ifndef." +msgstr "Ifndef neamhbhailí." + +msgid "Shader include file does not exist:" +msgstr "Níl an comhad san áireamh sa scáthóir:" + +msgid "" +"Shader include load failed. Does the shader include exist? Is there a cyclic " +"dependency?" +msgstr "" +"I measc an scáthóra theip ar an ualach. An bhfuil an shader ann? An bhfuil " +"spleáchas timthriallach ann?" + +msgid "Shader include resource type is wrong." +msgstr "Shader san áireamh tá cineál acmhainne mícheart." + +msgid "Cyclic include found" +msgstr "Aimsíodh timthriallach" + +msgid "Shader max include depth exceeded." +msgstr "Shader max san áireamh doimhneacht níos mó ná." + +msgid "Invalid pragma directive." +msgstr "Treoir neamhbhailí pragma." + +msgid "Invalid undef." +msgstr "Neamhbhailí undef." + +msgid "Macro expansion limit exceeded." +msgstr "Sháraigh an teorainn leathnaithe macra." + +msgid "Invalid macro argument list." +msgstr "Liosta neamhbhailí macra-argóintí." + +msgid "Invalid macro argument." +msgstr "Macra-argóint neamhbhailí." + +msgid "Invalid macro argument count." +msgstr "Líon neamhbhailí macra-argóintí." + +msgid "Can't find matching branch directive." +msgstr "Ní féidir teacht ar threoir na craoibhe meaitseála." + +msgid "Invalid symbols placed before directive." +msgstr "Siombailí neamhbhailí a cuireadh roimh an treoir." + +msgid "Unmatched conditional statement." +msgstr "Ráiteas coinníollach neamh-chomhoiriúnaithe." + +msgid "" +"Direct floating-point comparison (this may not evaluate to `true` as you " +"expect). Instead, use `abs(a - b) < 0.0001` for an approximate but " +"predictable comparison." +msgstr "" +"Comparáid dhíreach snámhphointe (b’fhéidir nach meastar go ‘fíor’ é seo mar a " +"bheifeá ag súil). Ina áit sin, úsáid `abs(a - b) < 0.0001` le haghaidh " +"comparáide gar ach intuartha." + +msgid "The const '%s' is declared but never used." +msgstr "Dearbhaítear an constábla '%s' ach ní úsáidtear riamh é." + +msgid "The function '%s' is declared but never used." +msgstr "Dearbhaítear an fheidhm '%s' ach ní úsáidtear riamh í." + +msgid "The struct '%s' is declared but never used." +msgstr "Dearbhaítear an struct '%s' ach ní úsáidtear riamh é." + +msgid "The uniform '%s' is declared but never used." +msgstr "Dearbhaítear an éide '%s' ach ní úsáidtear riamh é." + +msgid "The varying '%s' is declared but never used." +msgstr "Dearbhaítear an '%s' éagsúil ach ní úsáidtear riamh é." + +msgid "The local variable '%s' is declared but never used." +msgstr "Dearbhaítear an athróg logánta '%s' ach níor úsáideadh riamh é." + +msgid "" +"The total size of the %s for this shader on this device has been exceeded (%d/" +"%d). The shader may not work correctly." +msgstr "" +"Sáraíodh méid iomlán na %s don scáthóir seo ar an ngléas seo (%d/%d). " +"B'fhéidir nach n-oibreoidh an scáthóir i gceart." + +msgid "" +"You are attempting to assign the VERTEX position in model space to the vertex " +"POSITION in clip space. The definition of clip space changed in version 4.3, " +"so if this code was written prior to 4.3, it will not continue to work. " +"Consider specifying the clip space z-component directly i.e. use `vec4(VERTEX." +"xy, 1.0, 1.0)`." +msgstr "" +"Tá tú ag iarraidh an seasamh VERTEX i spás samhail a shannadh don SEASAMH " +"vertex i spás gearrthóg. D'athraigh an sainmhíniú ar spás gearrthóg i leagan " +"4.3, mar sin má scríobhadh an cód seo roimh 4.3, ní leanfaidh sé ar aghaidh " +"ag obair. Smaoinigh ar an spás gearrthóg z-chomhpháirt a shonrú go díreach i." +"e. úsáid 'vec4 (VERTEX.xy, 1.0, 1.0)'." diff --git a/editor/translations/editor/id.po b/editor/translations/editor/id.po index b0c11ca152..66b1cbb50a 100644 --- a/editor/translations/editor/id.po +++ b/editor/translations/editor/id.po @@ -49,7 +49,7 @@ # EngageIndo <engageindo@gmail.com>, 2023. # Septian Kurniawan <septgsk@outlook.com>, 2023. # Septian Ganendra Savero Kurniawan <septgsk@outlook.com>, 2023. -# Septian Ganendra Savero Kurniawan <mail@init.id>, 2023. +# Septian Ganendra Savero Kurniawan <mail@init.id>, 2023, 2024. # GID <ghavind12345@gmail.com>, 2023. # Luqman Firmansyah <luqm4n.firm4n@gmail.com>, 2023. # Bayu Satiyo <itsyuukunz@gmail.com>, 2023. @@ -67,8 +67,8 @@ msgstr "" "Project-Id-Version: Godot Engine editor interface\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2024-08-03 22:03+0000\n" -"Last-Translator: \"@andiDermawan\" <andidermawan2004@gmail.com>\n" +"PO-Revision-Date: 2024-08-14 12:59+0000\n" +"Last-Translator: Septian Ganendra Savero Kurniawan <mail@init.id>\n" "Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/" "godot/id/>\n" "Language: id\n" @@ -235,7 +235,7 @@ msgid "touched" msgstr "disentuh" msgid "released" -msgstr "Dirilis" +msgstr "dirilis" msgid "Screen %s at (%s) with %s touch points" msgstr "Layar %s pada (%s) dengan titik sentuh %s" @@ -542,7 +542,7 @@ msgid "Insert Key Here" msgstr "Sisipkan Key Disini" msgid "Duplicate Selected Key(s)" -msgstr "Duplikat Key Terpilih" +msgstr "Duplikat Kunci Terpilih" msgid "Copy Selected Key(s)" msgstr "Salin Kunci Yang Dipilih" @@ -1074,7 +1074,7 @@ msgid "Make Easing Selection..." msgstr "Lakukan Seleksi Easing..." msgid "Duplicate Selected Keys" -msgstr "Duplikat Key Yang Terpilih" +msgstr "Duplikat Kunci Terpilih" msgid "Cut Selected Keys" msgstr "Potong Kunci Yang Terpilih" diff --git a/editor/translations/editor/it.po b/editor/translations/editor/it.po index eb2ed4e7de..4524ea1735 100644 --- a/editor/translations/editor/it.po +++ b/editor/translations/editor/it.po @@ -111,7 +111,7 @@ msgstr "" "Project-Id-Version: Godot Engine editor interface\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2024-08-12 20:09+0000\n" +"PO-Revision-Date: 2024-08-13 23:09+0000\n" "Last-Translator: Micky <micheledevita2@gmail.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" @@ -543,19 +543,19 @@ msgid "Revert Action" msgstr "Ripristina l'azione" msgid "Add Event" -msgstr "Aggiungi Evento" +msgstr "Aggiungi evento" msgid "Remove Action" -msgstr "Rimuovi l'azione" +msgstr "Rimuovi azione" msgid "Cannot Remove Action" msgstr "Impossibile rimuovere l'azione" msgid "Edit Event" -msgstr "Modifica l'evento" +msgstr "Modifica evento" msgid "Remove Event" -msgstr "Rimuovi l'evento" +msgstr "Rimuovi evento" msgid "Filter by Name" msgstr "Filtra per nome" @@ -603,13 +603,13 @@ msgid "Copy Selected Key(s)" msgstr "Copia le chiavi selezionate" msgid "Paste Key(s)" -msgstr "Incolla le chiavi selezionate" +msgstr "Incolla le chiavi" msgid "Delete Selected Key(s)" msgstr "Elimina le chiavi selezionate" msgid "Make Handles Free" -msgstr "Rendi le maniglie libere" +msgstr "Rendi libere le maniglie" msgid "Make Handles Linear" msgstr "Rendi lineari le maniglie" @@ -654,34 +654,34 @@ msgid "Deselect All Keys" msgstr "Deseleziona tutte le chiavi" msgid "Animation Change Transition" -msgstr "Animazione Cambia Transizione" +msgstr "Modifica la transizione di un'animazione" msgid "Animation Change Position3D" -msgstr "Animazione Cambia posizione3D" +msgstr "Modifica traccia di Posizione 3D di un'animazione" msgid "Animation Change Rotation3D" -msgstr "Animazione Cambia rotazione3D" +msgstr "Modifica traccia di Rotazione 3D di un'animazione" msgid "Animation Change Scale3D" -msgstr "Animazione Cambia scala3D" +msgstr "Modifica traccia di Scala 3D di un'animazione" msgid "Animation Change Keyframe Value" -msgstr "Animazione Cambia Valore di Fotogramma Chiave" +msgstr "Cambia valore di fotogramma chiave di un'animazione" msgid "Animation Change Call" -msgstr "Animazione Cambia chiamata" +msgstr "Cambia chiamata di un'animazione" msgid "Animation Multi Change Transition" msgstr "Cambio multiplo di transizione di un'animazione" msgid "Animation Multi Change Position3D" -msgstr "Cambio multiplo della Position3D di un'animazione" +msgstr "Cambio multiplo di traccia Posizione 3D di un'animazione" msgid "Animation Multi Change Rotation3D" -msgstr "Cambio multiplo della Rotation3D di un'animazione" +msgstr "Cambio multiplo di traccia Rotazione 3D di un'animazione" msgid "Animation Multi Change Scale3D" -msgstr "Cambio multiplo della Scale3D di un'animazione" +msgstr "Cambio multiplo di traccia Scala 3D di un'animazione" msgid "Animation Multi Change Keyframe Value" msgstr "Cambio multiplo del valore dei fotogrammi chiave di un'animazione" @@ -690,7 +690,7 @@ msgid "Animation Multi Change Call" msgstr "Cambio multiplo della chiamata di un'animazione" msgid "Change Animation Length" -msgstr "Cambia la durata dell'animazione" +msgstr "Cambia la durata di un'animazione" msgid "Change Animation Loop" msgstr "Cambia ciclo di animazione" @@ -727,7 +727,7 @@ msgid "Bezier Curve Track..." msgstr "Traccia di curve di Bézier..." msgid "Audio Playback Track..." -msgstr "Traccia sonora..." +msgstr "Traccia di riproduzione audio..." msgid "Animation Playback Track..." msgstr "Traccia di animazioni..." @@ -754,7 +754,7 @@ msgid "Animation Clips:" msgstr "Clip di animazione:" msgid "Change Track Path" -msgstr "Cambia Percorso Traccia" +msgstr "Cambia il percorso di una traccia" msgid "Toggle this track on/off." msgstr "Abilita/Disabilita questa traccia." @@ -1141,7 +1141,7 @@ msgid "Scale From Cursor..." msgstr "Scala dal cursore..." msgid "Set Start Offset (Audio)" -msgstr "Imposta offset iniziale (audio)" +msgstr "Imposta offset iniziale (Audio)" msgid "Set End Offset (Audio)" msgstr "Imposta offset finale (Audio)" @@ -1216,7 +1216,7 @@ msgid "Trim keys placed in negative time" msgstr "Rimuovi le chiavi nel tempo negativo" msgid "Trim keys placed exceed the animation length" -msgstr "Rimuovi le chiavi che superano la lunghezza dell'animazione" +msgstr "Rimuovi le chiavi che superano la durata dell'animazione" msgid "Remove invalid keys" msgstr "Rimuovi le chiavi non valide" @@ -1237,7 +1237,7 @@ msgid "Scale Ratio:" msgstr "Fattore di scala:" msgid "Select Transition and Easing" -msgstr "Seleziona Transizione e Easing" +msgstr "Seleziona transizione e allentamento" msgctxt "Transition Type" msgid "Linear" @@ -1343,7 +1343,7 @@ msgid "Change Audio Track Clip End Offset" msgstr "Modifica l'offset finale di una clip di una traccia audio" msgid "Go to Line" -msgstr "Vai alla linea" +msgstr "Vai alla riga" msgid "Line Number:" msgstr "Numero di riga:" @@ -3887,6 +3887,24 @@ msgstr "" "Impossibile scrivere sul file '%s', il file potrebbe essere in uso, bloccato " "o mancano i permessi." +msgid "Preparing scenes for reload" +msgstr "Preparando le scene da ricaricare" + +msgid "Analyzing scene %s" +msgstr "Analisi della scena %s" + +msgid "Preparation done." +msgstr "Preparazione completata." + +msgid "Scenes reloading" +msgstr "Ricaricamento delle scene" + +msgid "Reloading..." +msgstr "Ricaricamento…" + +msgid "Reloading done." +msgstr "Ricaricamento completato." + msgid "" "Changing the renderer requires restarting the editor.\n" "\n" @@ -17583,6 +17601,20 @@ msgstr "" "impostane una." msgid "" +"The TileMap node is deprecated as it is superseded by the use of multiple " +"TileMapLayer nodes.\n" +"To convert a TileMap to a set of TileMapLayer nodes, open the TileMap bottom " +"panel with this node selected, click the toolbox icon in the top-right corner " +"and choose \"Extract TileMap layers as individual TileMapLayer nodes\"." +msgstr "" +"Il nodo TileMap è deprecato in quanto sostituito dall'uso di più nodi " +"TileMapLayer.\n" +"Per convertire una TileMap in una serie di nodi TileMapLayer, apri il " +"pannello inferiore di TileMap con questo nodo selezionato, clicca sull'icona " +"della casella degli strumenti nell'angolo in alto a destra, e scegli \"Estrai " +"livelli di TileMap come nodi TileMapLayer\"." + +msgid "" "A Y-sorted layer has the same Z-index value as a not Y-sorted layer.\n" "This may lead to unwanted behaviors, as a layer that is not Y-sorted will be " "Y-sorted as a whole with tiles from Y-sorted layers." diff --git a/editor/translations/editor/ka.po b/editor/translations/editor/ka.po index d5c288884b..75f9b80ed7 100644 --- a/editor/translations/editor/ka.po +++ b/editor/translations/editor/ka.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: Godot Engine editor interface\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2024-07-04 12:08+0000\n" +"PO-Revision-Date: 2024-08-14 12:59+0000\n" "Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n" "Language-Team: Georgian <https://hosted.weblate.org/projects/godot-engine/" "godot/ka/>\n" @@ -23,6 +23,9 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.7-dev\n" +msgid "Main Thread" +msgstr "მთავარი ნაკადი" + msgid "Unset" msgstr "მოხსნა" @@ -1282,6 +1285,9 @@ msgstr "ბრძანებების ფილტრი" msgid "[empty]" msgstr "[ცარიელი]" +msgid "[unsaved]" +msgstr "[შეუნახავი]" + msgid "Make Floating" msgstr "მცურავად გადაკეთება" @@ -1559,6 +1565,12 @@ msgstr "განლაგების შენახვა" msgid "Delete Layout" msgstr "განლაგების წაშლა" +msgid "Preparation done." +msgstr "მომზადება მზადაა." + +msgid "Reloading done." +msgstr "თავიდან ჩატვირთვა მზადაა." + msgid "Mobile" msgstr "მობაილი" @@ -1769,6 +1781,9 @@ msgstr "შეცდომა." msgid "Storing File: %s" msgstr "ფაილის დამახსოვრება: %s" +msgid "Packing" +msgstr "შეფუთვა" + msgid "Cannot create file \"%s\"." msgstr "ფაილის (\"%s\") შექმნის შეცდომა." @@ -2047,7 +2062,7 @@ msgid "Reload the played scene." msgstr "დაკრული სცენის თავიდან ჩატვირთვა." msgid "Could not start subprocess(es)!" -msgstr "ქვეპროცეს(ებ)-ის გაშვება შეუძლებელია" +msgstr "ქვეპროცეს(ებ)-ის გაშვება შეუძლებელია!" msgid "Stop Running Project" msgstr "გაშვებული პროექტის შეჩერება" @@ -2180,6 +2195,9 @@ msgstr "მოწყობილობა:" msgid "(Current)" msgstr "(მიმდინარე)" +msgid "Capitalized (e.g. \"%s\")" +msgstr "ზედა რეგისტრში (მაგ: \"%s\")" + msgid "Copy Properties" msgstr "თვისებების კოპირება" @@ -2664,6 +2682,9 @@ msgstr "შვილ" msgid "Creates collision shapes as Sibling." msgstr "შეჯახების ფორმის შექმნა შვილის სახით შეუძლებელია." +msgid "Collision Shape Type" +msgstr "შეჯახების ფორმის ტპი" + msgid "Add Item" msgstr "ჩანაწერის დამატება" @@ -2688,6 +2709,9 @@ msgstr "პერსპექტივა" msgid "Instantiating:" msgstr "წარმოდგენა:" +msgid "Can't instantiate: %s." +msgstr "ინსტანცირება შეუძლებელია: %s." + msgid "Rotate" msgstr "შემობრუნება" @@ -2820,18 +2844,36 @@ msgstr "რესურსის წაშლა" msgid "Path to AnimationMixer is invalid" msgstr "ბილიკი AnimationMixer-მდე არასწორია" +msgid "Error writing TextFile:" +msgstr "ტექსტური ფაილის შენახვის შეცდომა:" + +msgid "Error saving file!" +msgstr "ფაილის შენახვის შეცდომა!" + +msgid "Error while saving theme." +msgstr "შეცდომა თემის შენახვისას." + msgid "Error Saving" msgstr "შენახვის შეცდომა" +msgid "Error importing theme." +msgstr "შეცდომა თემის შემოტანისას." + msgid "Error Importing" msgstr "შემოტანის შეცდომა" +msgid "Could not load file at:" +msgstr "შეუძლებელია ფაილის ჩატვირთვა მისამართზე:" + msgid "Save File As..." msgstr "ფაილის შენახვა როგორც..." msgid "Import Theme" msgstr "თემის შემოტანა" +msgid "Error while saving theme" +msgstr "შეცდომა თემის შენახვისას" + msgid "Save Theme As..." msgstr "თემის შენახვა, როგორც..." @@ -2871,6 +2913,12 @@ msgstr "სირბილი" msgid "Discard" msgstr "მოცილება" +msgid "What action should be taken?:" +msgstr "რა ქმედება უნდა შესრულდეს?:" + +msgid "Search Results" +msgstr "ძებნის შედეგები" + msgid "Uppercase" msgstr "მაღალირეგისტრი" @@ -2897,6 +2945,12 @@ msgid "" msgstr "" "აკლია მიერთების მეთოდი '%s' სიგნალისთვის '%s' კვანძიდან '%s' კვანძამდე '%s'." +msgid "Line %d (%s):" +msgstr "ხაზი %d (%s):" + +msgid "Line %d:" +msgstr "ხაზი %d:" + msgid "Pick Color" msgstr "აირჩიეთ ფერი" @@ -3228,6 +3282,9 @@ msgstr "ნაწილები" msgid "Patterns" msgstr "შაბლონები" +msgid "Select previous layer" +msgstr "წინა ფენის მონიშვნა" + msgid "Delete All Tile Proxies" msgstr "ყველა ფილის პროქსის წაშლა" @@ -3337,6 +3394,9 @@ msgstr "კომიტი:" msgid "Subtitle:" msgstr "სუბტიტრები:" +msgid "Toggle Version Control Bottom Panel" +msgstr "ვერსიის კონტროლის ქვედა პანელის გადართვა" + msgid "Apply" msgstr "გადატარება" @@ -3448,6 +3508,9 @@ msgstr "გამოტანის პორტის შემცირებ msgid "Resize VisualShader Node" msgstr "VisualShader-ის კვანძის ზომის შეცვლა" +msgid "Set Frame Color" +msgstr "კადრის ფერის დაყენება" + msgid "Delete VisualShader Node" msgstr "VisualShader-ის კვანძის წაშლა" @@ -3611,6 +3674,9 @@ msgstr "ყველა ჭდე" msgid "Create New Tag" msgstr "ახალი ჭდის შექმნა" +msgid "Couldn't create project directory, check permissions." +msgstr "პროექტის საქაღალდე ვერ შეიქმნა. შეამოწმეთ წვდომები." + msgid "Project Name:" msgstr "პროექტის სახელი:" @@ -3719,6 +3785,11 @@ msgstr "ძირითადი კვანძი სწორია." msgid "Error instantiating scene from %s" msgstr "%s-დან სცენის ინსტანცირების შეცდომა" +msgid "Instantiate Scene" +msgid_plural "Instantiate Scenes" +msgstr[0] "სცენის ინსტანცირება" +msgstr[1] "სცენების ინსტანცირება" + msgid "Delete %d nodes?" msgstr "წავშალო %d კვანძი?" @@ -3815,6 +3886,9 @@ msgstr "შეიდერის შექმნა" msgid "Global shader parameter '%s' already exists." msgstr "გლობალური შეიდერის პარამეტრი '%s' უკვე არსებობს." +msgid "Cannot instantiate GDScript class." +msgstr "GDScript-ს კლასის ინსტანცირება შეუძლებელია." + msgid "Export Settings:" msgstr "პარამეტრების გატანა:" @@ -3830,6 +3904,16 @@ msgstr "მონიშნულის შევსება" msgid "Filter Meshes" msgstr "ბადეების ფილტრი" +msgid "Edit Transitions" +msgstr "გადასვლების ჩასწორება" + +msgctxt "Transition Time Position" +msgid "Prev" +msgstr "წინა" + +msgid "Hold Previous:" +msgstr "წინას შენარჩუნება:" + msgid "Class name must be a valid identifier" msgstr "კლასის სახელი სწორ იდენტიფიკატორს უნდა წარმოადგენდეს" @@ -3887,6 +3971,18 @@ msgstr "პროფილის დამატება" msgid "Add action" msgstr "ქმედების დამატება" +msgid "Add action." +msgstr "ქმედების დამატება." + +msgid "Remove action set." +msgstr "ქმედებების ნაკრების წაშლა." + +msgid "OpenXR Action Map" +msgstr "OpenXR ქმედების რუკა" + +msgid "Select an interaction profile" +msgstr "აირჩიეთ ინტერაქციის პროფილი" + msgid "Invalid package name:" msgstr "არასწორი პაკეტის სახელი:" @@ -3926,6 +4022,9 @@ msgstr "ფაილურ სისტემასთან წვდომა msgid "Failed to create a file at path \"%s\" with code %d." msgstr "ჩავარდა შექმნა ფაილისთვის ბილიკზე \"%s\" კოდით %d." +msgid "Debug Script Export" +msgstr "გამართვის სკრიპტის გატანა" + msgid "Could not open file \"%s\"." msgstr "ფაილის (\"%s\") გახსნა შეუძლებელია." @@ -3968,9 +4067,21 @@ msgstr "საქაღალდის (\"%s\") შექმნა შეუძ msgid "Could not created symlink \"%s\" -> \"%s\"." msgstr "შეცდომა სიმბმულის \"%s\" -> \"%s\" შექმნსას." +msgid "Entitlements Modified" +msgstr "გარემოები შეიცვალა" + msgid "Invalid export template: \"%s\"." msgstr "არასწორი გატანის ნიმუში: \"%s\"." +msgid "Start HTTP Server" +msgstr "HTTP სერვერის გაშვება" + +msgid "Start the HTTP server." +msgstr "HTTP სერვერის გაშვება." + +msgid "Stop the HTTP server." +msgstr "HTTP სერვერის გაჩერება." + msgid "Error starting HTTP server: %d." msgstr "HTTP სერვერის გაშვების შეცდომა: %d." diff --git a/editor/translations/editor/pt.po b/editor/translations/editor/pt.po index 2d9dd219af..e50ad76462 100644 --- a/editor/translations/editor/pt.po +++ b/editor/translations/editor/pt.po @@ -68,7 +68,7 @@ msgstr "" "Project-Id-Version: Godot Engine editor interface\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2024-08-12 20:09+0000\n" +"PO-Revision-Date: 2024-08-13 23:09+0000\n" "Last-Translator: Rick and Morty <7777rickandmorty@gmail.com>\n" "Language-Team: Portuguese <https://hosted.weblate.org/projects/godot-engine/" "godot/pt/>\n" @@ -17468,6 +17468,26 @@ msgstr "Expressão constante esperada." msgid "Expected ',' or ')' after argument." msgstr "Esperado ',' ou ')' após o argumento." +msgid "" +"Varyings which assigned in 'vertex' function may not be reassigned in " +"'fragment' or 'light'." +msgstr "" +"Variações atribuídas na função 'vertex' não podem ser reatribuídas em " +"'fragment' ou 'light'." + +msgid "" +"Varyings which assigned in 'fragment' function may not be reassigned in " +"'vertex' or 'light'." +msgstr "" +"Variações atribuídas na função 'fragment' não podem ser reatribuídas em " +"'vértice' ou 'luz'." + +msgid "Swizzling assignment contains duplicates." +msgstr "A tarefa de Swizzling contém duplicatas." + +msgid "Assignment to uniform." +msgstr "Atribuição ao uniforme." + msgid "Constants cannot be modified." msgstr "Constantes não podem ser modificadas." diff --git a/editor/translations/editor/tr.po b/editor/translations/editor/tr.po index 483d567ead..0e394635ce 100644 --- a/editor/translations/editor/tr.po +++ b/editor/translations/editor/tr.po @@ -115,7 +115,7 @@ msgstr "" "Project-Id-Version: Godot Engine editor interface\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2024-08-05 14:04+0000\n" +"PO-Revision-Date: 2024-08-13 23:09+0000\n" "Last-Translator: Yılmaz Durmaz <yilmaz_durmaz@hotmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/" "godot/tr/>\n" @@ -3861,6 +3861,24 @@ msgid "" msgstr "" "'%s' dosyasına yazılamıyor; dosya kullanımda, kilitli veya izinler eksik." +msgid "Preparing scenes for reload" +msgstr "Sahneler, yeniden yükleme için hazırlanıyor" + +msgid "Analyzing scene %s" +msgstr "Sahne %s analiz ediliyor" + +msgid "Preparation done." +msgstr "Hazırlık tamamlandı." + +msgid "Scenes reloading" +msgstr "Sahneler yeniden yükleniyor" + +msgid "Reloading..." +msgstr "Yeniden yükleniyor..." + +msgid "Reloading done." +msgstr "Yeniden yükleme tamamlandı." + msgid "" "Changing the renderer requires restarting the editor.\n" "\n" @@ -17401,6 +17419,20 @@ msgstr "" "tane atayın." msgid "" +"The TileMap node is deprecated as it is superseded by the use of multiple " +"TileMapLayer nodes.\n" +"To convert a TileMap to a set of TileMapLayer nodes, open the TileMap bottom " +"panel with this node selected, click the toolbox icon in the top-right corner " +"and choose \"Extract TileMap layers as individual TileMapLayer nodes\"." +msgstr "" +"TileMap düğümü, yerini birden fazla TileMapLayer düğümünün kullanımına " +"bıraktığı için kullanımdan kaldırılmıştır.\n" +"Bir TileMap'i bir dizi TileMapLayer düğümüne dönüştürmek için, bu düğüm " +"seçiliyken TileMap alt panelini açın, sağ üst köşedeki araç kutusu simgesine " +"tıklayın ve \"TileMap katmanlarını ayrı TileMapLayer düğümleri olarak " +"ayıkla\" seçeneğini seçin." + +msgid "" "A Y-sorted layer has the same Z-index value as a not Y-sorted layer.\n" "This may lead to unwanted behaviors, as a layer that is not Y-sorted will be " "Y-sorted as a whole with tiles from Y-sorted layers." diff --git a/editor/translations/editor/zh_CN.po b/editor/translations/editor/zh_CN.po index 0d82aa22fa..812a3dc97c 100644 --- a/editor/translations/editor/zh_CN.po +++ b/editor/translations/editor/zh_CN.po @@ -105,7 +105,7 @@ msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2024-08-01 02:20+0000\n" +"PO-Revision-Date: 2024-08-13 23:09+0000\n" "Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" @@ -3731,6 +3731,24 @@ msgid "" "Unable to write to file '%s', file in use, locked or lacking permissions." msgstr "无法写入文件“%s”,文件被占用、已锁定、或权限不足。" +msgid "Preparing scenes for reload" +msgstr "正在准备场景重新加载" + +msgid "Analyzing scene %s" +msgstr "正在分析场景 %s" + +msgid "Preparation done." +msgstr "准备完成。" + +msgid "Scenes reloading" +msgstr "正在重新加载场景" + +msgid "Reloading..." +msgstr "正在重新加载..." + +msgid "Reloading done." +msgstr "重新加载完成。" + msgid "" "Changing the renderer requires restarting the editor.\n" "\n" @@ -16608,6 +16626,18 @@ msgid "" msgstr "这根骨骼没有合适的放松姿势。请到 Skeleton2D 节点中设置一个。" msgid "" +"The TileMap node is deprecated as it is superseded by the use of multiple " +"TileMapLayer nodes.\n" +"To convert a TileMap to a set of TileMapLayer nodes, open the TileMap bottom " +"panel with this node selected, click the toolbox icon in the top-right corner " +"and choose \"Extract TileMap layers as individual TileMapLayer nodes\"." +msgstr "" +"TileMap 节点被已弃用,由多个 TileMapLayer 节点代替。\n" +"将 TileMap 节点转换为多个 TileMapLayer 节点:选中该节点后打开 TileMap 底部面" +"板,点击右上角的工具箱图标,然后选择“将 TileMap 图层提取为独立的 TileMapLayer " +"节点”。" + +msgid "" "A Y-sorted layer has the same Z-index value as a not Y-sorted layer.\n" "This may lead to unwanted behaviors, as a layer that is not Y-sorted will be " "Y-sorted as a whole with tiles from Y-sorted layers." diff --git a/editor/translations/properties/ga.po b/editor/translations/properties/ga.po new file mode 100644 index 0000000000..aca3bf11bf --- /dev/null +++ b/editor/translations/properties/ga.po @@ -0,0 +1,10917 @@ +# Irish translation of the Godot Engine properties. +# Copyright (c) 2014-present Godot Engine contributors. +# Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. +# This file is distributed under the same license as the Godot source code. +# Rónán Quill <ronan085@gmail.com>, 2019, 2020. +# Aindriú Mac Giolla Eoin <aindriu80@gmail.com>, 2024. +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine properties\n" +"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" +"PO-Revision-Date: 2024-08-14 13:00+0000\n" +"Last-Translator: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>\n" +"Language-Team: Irish <https://hosted.weblate.org/projects/godot-engine/godot-" +"properties/ga/>\n" +"Language: ga\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :(n>6 " +"&& n<11) ? 3 : 4;\n" +"X-Generator: Weblate 5.7-dev\n" + +msgid "Application" +msgstr "Iarratas" + +msgid "Config" +msgstr "Cumraíocht" + +msgid "Name" +msgstr "Ainm" + +msgid "Name Localized" +msgstr "Ainm Logánaithe" + +msgid "Description" +msgstr "Cur síos" + +msgid "Version" +msgstr "Leagan" + +msgid "Run" +msgstr "Rith" + +msgid "Main Scene" +msgstr "Príomh-Radharc" + +msgid "Disable stdout" +msgstr "Díchumasaigh an t- aschur" + +msgid "Disable stderr" +msgstr "Díchumasaigh stderr" + +msgid "Print Header" +msgstr "Priontáil Ceanntásc" + +msgid "Enable Alt Space Menu" +msgstr "Cumasaigh Roghchlár Spáis Alt" + +msgid "Use Hidden Project Data Directory" +msgstr "Úsáid Eolaire Sonraí Tionscadail Fholaithe" + +msgid "Use Custom User Dir" +msgstr "Úsáid Dir Úsáideora Saincheaptha" + +msgid "Custom User Dir Name" +msgstr "Ainm Dir Úsáideora Saincheaptha" + +msgid "Project Settings Override" +msgstr "Sáraigh Socruithe an Tionscadail" + +msgid "Main Loop Type" +msgstr "Príomhchineál Lúb" + +msgid "Auto Accept Quit" +msgstr "Glac Leis go hUathoibríoch Scoir" + +msgid "Quit on Go Back" +msgstr "Scoir ar Téigh Ar Ais" + +msgid "Display" +msgstr "Taispeáin" + +msgid "Window" +msgstr "Fuinneog" + +msgid "Size" +msgstr "Méid" + +msgid "Viewport Width" +msgstr "Leithead an Phoirt" + +msgid "Viewport Height" +msgstr "Airde an Phoirt" + +msgid "Mode" +msgstr "Mód" + +msgid "Initial Position Type" +msgstr "Cineál Suímh Tosaigh" + +msgid "Initial Position" +msgstr "Suíomh Tosaigh" + +msgid "Initial Screen" +msgstr "Scáileán Tosaigh" + +msgid "Resizable" +msgstr "In-athdhíolta" + +msgid "Borderless" +msgstr "Gan teorainn" + +msgid "Always on Top" +msgstr "I gcónaí ar an mbarr" + +msgid "Transparent" +msgstr "Trédhearcach" + +msgid "Extend to Title" +msgstr "Leathnaigh go Teideal" + +msgid "No Focus" +msgstr "Gan Fócas" + +msgid "Window Width Override" +msgstr "Sáraigh Leithead na Fuinneoige" + +msgid "Window Height Override" +msgstr "Sáraigh Airde na Fuinneoige" + +msgid "Energy Saving" +msgstr "Coigilt Fuinnimh" + +msgid "Keep Screen On" +msgstr "Coinnigh an Scáileán Ar" + +msgid "Animation" +msgstr "Beochan" + +msgid "Warnings" +msgstr "Rabhaidh" + +msgid "Check Invalid Track Paths" +msgstr "Seiceáil Cosáin Neamhbhailí Amhráin" + +msgid "Check Angle Interpolation Type Conflicting" +msgstr "Seiceáil Cineál Idirshuí Uillinne ag teacht salach ar a chéile" + +msgid "Audio" +msgstr "Fuaim" + +msgid "Buses" +msgstr "Busanna" + +msgid "Default Bus Layout" +msgstr "Leagan Amach Réamhshocraithe Bus" + +msgid "General" +msgstr "Ginearálta" + +msgid "Default Playback Type" +msgstr "Cineál Athsheinm Réamhshocraithe" + +msgid "Text to Speech" +msgstr "Téacs go Caint" + +msgid "2D Panning Strength" +msgstr "Neart Panning 2D" + +msgid "3D Panning Strength" +msgstr "Neart Panning 3D" + +msgid "iOS" +msgstr "iOS" + +msgid "Session Category" +msgstr "Catagóir an tSeisiúin" + +msgid "Mix With Others" +msgstr "Measc le Daoine Eile" + +msgid "Editor" +msgstr "Eagarthóir" + +msgid "Script" +msgstr "Script" + +msgid "Search in File Extensions" +msgstr "Cuardaigh i Eisínteachtaí Comhad" + +msgid "Subwindows" +msgstr "Fofhuinneoga" + +msgid "Embed Subwindows" +msgstr "Leabú Subwindows" + +msgid "Physics" +msgstr "Fisic" + +msgid "2D" +msgstr "2D" + +msgid "Run on Separate Thread" +msgstr "Rith ar shnáithe ar leith" + +msgid "3D" +msgstr "3D" + +msgid "Stretch" +msgstr "Sín" + +msgid "Aspect" +msgstr "Gné" + +msgid "Scale" +msgstr "Scála" + +msgid "Scale Mode" +msgstr "Mód Scála" + +msgid "Debug" +msgstr "Dífhabhtú" + +msgid "Settings" +msgstr "Socruithe" + +msgid "Profiler" +msgstr "Próifíleoir" + +msgid "Max Functions" +msgstr "Feidhmeanna Uasta" + +msgid "Max Timestamp Query Elements" +msgstr "Eilimintí Iarratais Stampa Ama Uasta" + +msgid "Compression" +msgstr "Comhbhrú" + +msgid "Formats" +msgstr "Formáidí" + +msgid "Zstd" +msgstr "ZstdGenericName" + +msgid "Long Distance Matching" +msgstr "Meaitseáil Fad-achair" + +msgid "Compression Level" +msgstr "Leibhéal Comhbhrúite" + +msgid "Window Log Size" +msgstr "Méid Logchomhad na Fuinneoige" + +msgid "Zlib" +msgstr "ZlibName" + +msgid "Gzip" +msgstr "GzipName" + +msgid "Crash Handler" +msgstr "Láimhseálaí Tuairteála" + +msgid "Message" +msgstr "Teachtaireacht" + +msgid "Rendering" +msgstr "Rindreáil" + +msgid "Occlusion Culling" +msgstr "Cuiliú Occlusion" + +msgid "BVH Build Quality" +msgstr "BVH Tógáil Cáilíochta" + +msgid "Jitter Projection" +msgstr "Teilgean Jitter" + +msgid "Internationalization" +msgstr "Idirnáisiúnú" + +msgid "Force Right to Left Layout Direction" +msgstr "Fórsa Ar Dheis go Clé Leagan Amach Treo" + +msgid "Root Node Layout Direction" +msgstr "Treo Leagan Amach an Nód Fréimhe" + +msgid "Root Node Auto Translate" +msgstr "Fréamh nód Auto Translate" + +msgid "GUI" +msgstr "Comhéadan Grafach" + +msgid "Timers" +msgstr "Amadóirí" + +msgid "Incremental Search Max Interval Msec" +msgstr "Cuardach Incriminteach Max Interval Msec" + +msgid "Tooltip Delay (sec)" +msgstr "Moill leideanna (soic)" + +msgid "Common" +msgstr "Coitianta" + +msgid "Snap Controls to Pixels" +msgstr "Rialuithe Léime go Picteilíní" + +msgid "Fonts" +msgstr "Foinsí" + +msgid "Dynamic Fonts" +msgstr "Clónna Dinimiciúla" + +msgid "Use Oversampling" +msgstr "Úsáid Oversampling" + +msgid "Rendering Device" +msgstr "Gléas Rindreála" + +msgid "V-Sync" +msgstr "V- Sioncronú" + +msgid "Frame Queue Size" +msgstr "Méid na scuaine Fráma" + +msgid "Swapchain Image Count" +msgstr "Líon na nÍomhánna Swapchain" + +msgid "Staging Buffer" +msgstr "Maolán Stiúrtha" + +msgid "Block Size (KB)" +msgstr "Méid an Bhloic (KB)" + +msgid "Max Size (MB)" +msgstr "Uasmhéid (MB)" + +msgid "Texture Upload Region Size Px" +msgstr "Uigeacht Uaslódáil Réigiún Méid Px" + +msgid "Pipeline Cache" +msgstr "Taisce píblíne" + +msgid "Enable" +msgstr "Cumasaigh" + +msgid "Save Chunk Size (MB)" +msgstr "Sábháil Méid Smután (MB)" + +msgid "Vulkan" +msgstr "Bolcán" + +msgid "Max Descriptors per Pool" +msgstr "Max Descriptors for Pool" + +msgid "D3D12" +msgstr "D3D12" + +msgid "Max Resource Descriptors per Frame" +msgstr "Uas-Thuairisceoirí Acmhainne in aghaidh an Fhráma" + +msgid "Max Sampler Descriptors per Frame" +msgstr "Uasthuairisceoirí Samplóra in aghaidh an Fhráma" + +msgid "Max Misc Descriptors per Frame" +msgstr "Tuairisceoirí Max Misc in aghaidh an Fhráma" + +msgid "Agility SDK Version" +msgstr "Agility SDK Leagan" + +msgid "Textures" +msgstr "Uigeachtaí" + +msgid "Canvas Textures" +msgstr "Uigeachtaí Canbháis" + +msgid "Default Texture Filter" +msgstr "Scagaire Réamhshocraithe UigeachtaName" + +msgid "Default Texture Repeat" +msgstr "Athdhéanamh Uigeachta Réamhshocraithe" + +msgid "Collada" +msgstr "Collada" + +msgid "Use Ambient" +msgstr "Úsáid Comhthimpeallach" + +msgid "Low Processor Usage Mode" +msgstr "Mód Úsáide Próiseálaí Íseal" + +msgid "Low Processor Usage Mode Sleep (µsec)" +msgstr "Codladh Mód Úsáide Próiseálaí Íseal (μsec)" + +msgid "Delta Smoothing" +msgstr "Smúdú Delta" + +msgid "Print Error Messages" +msgstr "Priontáil Teachtaireachtaí Earráide" + +msgid "Physics Ticks per Second" +msgstr "Ticeanna Fisice in aghaidh an tSoicind" + +msgid "Max Physics Steps per Frame" +msgstr "Céimeanna Fisice Max in aghaidh an Fhráma" + +msgid "Max FPS" +msgstr "Uasmhéid FPS" + +msgid "Time Scale" +msgstr "Scála Ama" + +msgid "Physics Jitter Fix" +msgstr "Fisic Jitter Fix" + +msgid "Mouse Mode" +msgstr "Mód Luiche" + +msgid "Use Accumulated Input" +msgstr "Úsáid Ionchur Carntha" + +msgid "Emulate Mouse From Touch" +msgstr "Aithris a dhéanamh ar an Luch Ó Dteagmháil" + +msgid "Emulate Touch From Mouse" +msgstr "Aithris a dhéanamh ar theagmháil ón Luch" + +msgid "Input Devices" +msgstr "Gléasanna Ionchurtha" + +msgid "Compatibility" +msgstr "Comhoiriúnacht" + +msgid "Legacy Just Pressed Behavior" +msgstr "Oidhreacht Díreach Brúite Iompar" + +msgid "Device" +msgstr "Gléas" + +msgid "Window ID" +msgstr "Aitheantas na Fuinneoige" + +msgid "Command or Control Autoremap" +msgstr "Uathmhapa ordaithe nó rialaithe" + +msgid "Alt Pressed" +msgstr "Alt Brúite" + +msgid "Shift Pressed" +msgstr "Shift Brúite" + +msgid "Ctrl Pressed" +msgstr "Ctrl Brúite" + +msgid "Meta Pressed" +msgstr "Meta Brúite" + +msgid "Pressed" +msgstr "Brúite" + +msgid "Keycode" +msgstr "Eochairchód" + +msgid "Physical Keycode" +msgstr "Eochairchód Fisiciúil" + +msgid "Key Label" +msgstr "Lipéad Eochrach" + +msgid "Unicode" +msgstr "UnicodeGenericName" + +msgid "Location" +msgstr "Suíomh" + +msgid "Echo" +msgstr "Macalla" + +msgid "Button Mask" +msgstr "Masc Cnaipe" + +msgid "Position" +msgstr "Ionad" + +msgid "Global Position" +msgstr "Suíomh Domhanda" + +msgid "Factor" +msgstr "Fachtóir" + +msgid "Button Index" +msgstr "Innéacs na gCnaipí" + +msgid "Canceled" +msgstr "Cealaithe" + +msgid "Double Click" +msgstr "Cliceáil Dúbailte" + +msgid "Tilt" +msgstr "TiltName" + +msgid "Pressure" +msgstr "Brú" + +msgid "Pen Inverted" +msgstr "Peann Inbhéartaithe" + +msgid "Relative" +msgstr "Gaol" + +msgid "Screen Relative" +msgstr "Gaol Scáileáin" + +msgid "Velocity" +msgstr "Treoluas" + +msgid "Screen Velocity" +msgstr "Treoluas Scáileáin" + +msgid "Axis" +msgstr "Ais" + +msgid "Axis Value" +msgstr "Luach Ais" + +msgid "Index" +msgstr "Innéacs" + +msgid "Double Tap" +msgstr "Sconna Dúbailte" + +msgid "Action" +msgstr "Gníomh" + +msgid "Strength" +msgstr "Neart" + +msgid "Event Index" +msgstr "Innéacs Imeachtaí" + +msgid "Delta" +msgstr "Deilte" + +msgid "Channel" +msgstr "Cainéal" + +msgid "Pitch" +msgstr "Páirc Imeartha" + +msgid "Instrument" +msgstr "Ionstraim" + +msgid "Controller Number" +msgstr "Uimhir an Rialaitheora" + +msgid "Controller Value" +msgstr "Luach an Rialaitheora" + +msgid "Shortcut" +msgstr "Aicearra" + +msgid "Events" +msgstr "Imeachtaí" + +msgid "Include Navigational" +msgstr "loingseoireachta san áireamh" + +msgid "Include Hidden" +msgstr "Cuir Folaithe san áireamh" + +msgid "Big Endian" +msgstr "Endian Mór" + +msgid "Blocking Mode Enabled" +msgstr "Mód Blocála Cumasaithe" + +msgid "Read Chunk Size" +msgstr "Léigh Méid an Smutáin" + +msgid "Data" +msgstr "Sonraí" + +msgid "Object ID" +msgstr "Aitheantas réada" + +msgid "Encode Buffer Max Size" +msgstr "Ionchódaigh Uasmhéid an Mhaoláin" + +msgid "Input Buffer Max Size" +msgstr "Uasmhéid an mhaoláin ionchurtha" + +msgid "Output Buffer Max Size" +msgstr "Maolán Aschurtha Max Size" + +msgid "Resource" +msgstr "Acmhainn" + +msgid "Local to Scene" +msgstr "Áitiúil go Radharc" + +msgid "Path" +msgstr "Cosán" + +msgid "Data Array" +msgstr "Eagar Sonraí" + +msgid "Max Pending Connections" +msgstr "Naisc Max ar Feitheamh" + +msgid "Region" +msgstr "Réigiún" + +msgid "Offset" +msgstr "Fritháireamh" + +msgid "Cell Size" +msgstr "Méid na Cille" + +msgid "Cell Shape" +msgstr "Stencils" + +msgid "Jumping Enabled" +msgstr "Cumasaithe don Léim" + +msgid "Default Compute Heuristic" +msgstr "Ríomh Réamhshocraithe Heuristic" + +msgid "Default Estimate Heuristic" +msgstr "Meastachán Réamhshocraithe Heuristic" + +msgid "Diagonal Mode" +msgstr "Mód Trasnánach" + +msgid "Seed" +msgstr "Síol" + +msgid "State" +msgstr "An Stát" + +msgid "Memory" +msgstr "Cuimhne" + +msgid "Limits" +msgstr "Teorainneacha" + +msgid "Message Queue" +msgstr "Ciú Teachtaireachtaí" + +msgid "Max Steps" +msgstr "Céimeanna Uasta" + +msgid "Network" +msgstr "Líonra" + +msgid "TCP" +msgstr "TCPName" + +msgid "Connect Timeout Seconds" +msgstr "Ceangail Soicind Ama" + +msgid "Packet Peer Stream" +msgstr "Sruth Piaraí Paicéad" + +msgid "Max Buffer (Power of 2)" +msgstr "Max Buffer (Cumhacht 2)" + +msgid "TLS" +msgstr "TLS" + +msgid "Certificate Bundle Override" +msgstr "Sáraíocht Beart Teastais" + +msgid "Threading" +msgstr "Snáitheadh" + +msgid "Worker Pool" +msgstr "Linn Oibrithe" + +msgid "Max Threads" +msgstr "Snáitheanna Uasta" + +msgid "Low Priority Thread Ratio" +msgstr "Cóimheas Snáithe Tosaíochta Íseal" + +msgid "Locale" +msgstr "Áitiúil" + +msgid "Test" +msgstr "Tástáil" + +msgid "Fallback" +msgstr "Clúdach Siar" + +msgid "Pseudolocalization" +msgstr "Logánú pseudo" + +msgid "Use Pseudolocalization" +msgstr "Úsáid Pseudolocalization" + +msgid "Replace With Accents" +msgstr "Cuir síntí fada in ionad" + +msgid "Double Vowels" +msgstr "Gutaí Dúbailte" + +msgid "Fake BiDi" +msgstr "BiDi Falsa" + +msgid "Override" +msgstr "Sáraigh" + +msgid "Expansion Ratio" +msgstr "Cóimheas Leathnaithe" + +msgid "Prefix" +msgstr "Réimír" + +msgid "Suffix" +msgstr "Iarmhír" + +msgid "Skip Placeholders" +msgstr "Ná bac le sealbhóirí áite" + +msgid "Rotation" +msgstr "Rothlú" + +msgid "Value" +msgstr "Luach" + +msgid "Arg Count" +msgstr "Líon Arg" + +msgid "Args" +msgstr "Args" + +msgid "Type" +msgstr "Cineál" + +msgid "In Handle" +msgstr "I Láimhseáil" + +msgid "Out Handle" +msgstr "Láimhseáil Amach" + +msgid "Handle Mode" +msgstr "Mód Láimhseála" + +msgid "Stream" +msgstr "Sruth" + +msgid "Start Offset" +msgstr "Tosaigh Fritháireamh" + +msgid "End Offset" +msgstr "Fritháireamh Deiridh" + +msgid "Easing" +msgstr "Maolú" + +msgid "Debug Adapter" +msgstr "Cuibheoir Dífhabhtaithe" + +msgid "Remote Port" +msgstr "Port cianda" + +msgid "Request Timeout" +msgstr "Teorainn ama a iarraidh" + +msgid "Sync Breakpoints" +msgstr "Sioncrónaigh Brisphointí" + +msgid "FileSystem" +msgstr "Córas Comhad" + +msgid "File Server" +msgstr "Freastalaí Comhad" + +msgid "Port" +msgstr "Port" + +msgid "Password" +msgstr "Pasfhocal" + +msgid "Default Feature Profile" +msgstr "Próifíl Gné Réamhshocraithe" + +msgid "Text Editor" +msgstr "Eagarthóir Téacs" + +msgid "Help" +msgstr "Cabhair" + +msgid "Sort Functions Alphabetically" +msgstr "Sórtáil feidhmeanna in ord aibítre" + +msgid "Label" +msgstr "Lipéad" + +msgid "Read Only" +msgstr "Léigh Amháin" + +msgid "Checkable" +msgstr "Inseiceáilte" + +msgid "Checked" +msgstr "Seiceáilte" + +msgid "Draw Warning" +msgstr "Tarraing Rabhadh" + +msgid "Keying" +msgstr "Eochair" + +msgid "Deletable" +msgstr "In-scriosta" + +msgid "Distraction Free Mode" +msgstr "Mód Saor in Aisce Distraction" + +msgid "Movie Maker Enabled" +msgstr "Déantóir Scannáin Cumasaithe" + +msgid "Theme" +msgstr "Téama" + +msgid "Line Spacing" +msgstr "Spásáil Líne" + +msgid "Base Type" +msgstr "Bunchineál" + +msgid "Editable" +msgstr "Ineagarthóireachta" + +msgid "Toggle Mode" +msgstr "Scoránaigh an Mód" + +msgid "Interface" +msgstr "Comhéadan" + +msgid "Editor Language" +msgstr "Teanga an Eagarthóra" + +msgid "Localize Settings" +msgstr "Logánaigh Socruithe" + +msgid "Dock Tab Style" +msgstr "Stíl na gCluaisíní Duga" + +msgid "UI Layout Direction" +msgstr "Treo Leagan Amach UI" + +msgid "Display Scale" +msgstr "Scála Taispeána" + +msgid "Custom Display Scale" +msgstr "Scála Taispeána Saincheaptha" + +msgid "Editor Screen" +msgstr "Scáileán an Eagarthóra" + +msgid "Project Manager Screen" +msgstr "Scáileán an Bhainisteora Tionscadail" + +msgid "Connection" +msgstr "Ceangal" + +msgid "Engine Version Update Mode" +msgstr "Mód Nuashonraithe Leagan an Innill" + +msgid "Use Embedded Menu" +msgstr "Úsáid Roghchlár Leabaithe" + +msgid "Use Native File Dialogs" +msgstr "Úsáid Dialóga Comhad Dúchais" + +msgid "Expand to Title" +msgstr "Leathnaigh go Teideal" + +msgid "Main Font Size" +msgstr "Príomhmhéid an Chló" + +msgid "Code Font Size" +msgstr "Clómhéid an Chóid" + +msgid "Code Font Contextual Ligatures" +msgstr "Cló Cód Ligatures Comhthéacsúil" + +msgid "Code Font Custom OpenType Features" +msgstr "Cló Cód Saincheaptha OpenType Gnéithe" + +msgid "Code Font Custom Variations" +msgstr "Athruithe Saincheaptha ar Chló an Chóid" + +msgid "Font Antialiasing" +msgstr "Antialiasing Cló" + +msgid "Font Hinting" +msgstr "Leid Chlófhoirne" + +msgid "Font Subpixel Positioning" +msgstr "Suíomh Fophicteilíní Cló" + +msgid "Font Disable Embedded Bitmaps" +msgstr "Cló Díchumasaigh Mapaí Giotán Leabaithe" + +msgid "Main Font" +msgstr "Príomhchló" + +msgid "Main Font Bold" +msgstr "Príomhchló trom" + +msgid "Code Font" +msgstr "Cló an Chóid" + +msgid "Separate Distraction Mode" +msgstr "Mód Seachráin ar leithligh" + +msgid "Automatically Open Screenshots" +msgstr "Oscail Screenshots go huathoibríoch" + +msgid "Single Window Mode" +msgstr "Mód Fuinneoige Aonair" + +msgid "Mouse Extra Buttons Navigate History" +msgstr "Luch Cnaipí Breise Nascleanúint Stair" + +msgid "Save Each Scene on Quit" +msgstr "Sábháil Gach Radharc ar Scor" + +msgid "Save on Focus Loss" +msgstr "Sábháil ar Chaillteanas Fócais" + +msgid "Accept Dialog Cancel OK Buttons" +msgstr "Glac le Dialóg Cealaigh Cnaipí OK" + +msgid "Show Internal Errors in Toast Notifications" +msgstr "Taispeáin earráidí inmheánacha i bhfógraí tósta" + +msgid "Show Update Spinner" +msgstr "Taispeáin Spinner Nuashonraithe" + +msgid "Low Processor Mode Sleep (µsec)" +msgstr "Codladh Mód Próiseálaí Íseal (μsec)" + +msgid "Unfocused Low Processor Mode Sleep (µsec)" +msgstr "Codladh Mód Próiseálaí Íseal Neamhdhírithe (μsec)" + +msgid "Import Resources When Unfocused" +msgstr "Iompórtáil Acmhainní Nuair Neamhdhírithe" + +msgid "V-Sync Mode" +msgstr "Mód V- Sync" + +msgid "Update Continuously" +msgstr "Nuashonraigh go leanúnach" + +msgid "Inspector" +msgstr "Cigire" + +msgid "Max Array Dictionary Items per Page" +msgstr "Míreanna Foclóir Max Array in aghaidh an Leathanaigh" + +msgid "Show Low Level OpenType Features" +msgstr "Taispeáin Gnéithe OpenType Ar Leibhéal Íseal" + +msgid "Float Drag Speed" +msgstr "Snámhphointe Tarraing Luas" + +msgid "Nested Color Mode" +msgstr "Mód Datha Neadaithe" + +msgid "Delimitate All Container and Resources" +msgstr "Teorannaigh gach coimeádán agus acmhainn" + +msgid "Default Property Name Style" +msgstr "Stíl Ainm na Maoine Réamhshocraithe" + +msgid "Default Float Step" +msgstr "Céim Réamhshocraithe Snámhphointe" + +msgid "Disable Folding" +msgstr "Díchumasaigh Fillte" + +msgid "Auto Unfold Foreign Scenes" +msgstr "Radhairc Eachtracha a Nochtadh go hUathoibríoch" + +msgid "Horizontal Vector2 Editing" +msgstr "Eagarthóireacht Veicteoir2 Cothrománach" + +msgid "Horizontal Vector Types Editing" +msgstr "Eagarthóireacht cineálacha veicteora cothrománacha" + +msgid "Open Resources in Current Inspector" +msgstr "Acmhainní Oscailte sa Chigire Reatha" + +msgid "Resources to Open in New Inspector" +msgstr "Acmhainní le hOscailt i gCigire Nua" + +msgid "Default Color Picker Mode" +msgstr "Mód Réamhshocraithe an Roghnóra Datha" + +msgid "Default Color Picker Shape" +msgstr "Stencils" + +msgid "Follow System Theme" +msgstr "Lean Téama an Chórais" + +msgid "Preset" +msgstr "Réamhshocrú" + +msgid "Spacing Preset" +msgstr "Réamhshocrú Spásála" + +msgid "Icon and Font Color" +msgstr "Deilbhín agus Dath an Chló" + +msgid "Base Color" +msgstr "Bundath" + +msgid "Accent Color" +msgstr "Dath accent" + +msgid "Use System Accent Color" +msgstr "Úsáid Dath Accent an Chórais" + +msgid "Contrast" +msgstr "Codarsnacht" + +msgid "Draw Extra Borders" +msgstr "Tarraing Teorainneacha Breise" + +msgid "Icon Saturation" +msgstr "Sáithiú Deilbhíní" + +msgid "Relationship Line Opacity" +msgstr "Teimhneacht Líne Caidrimh" + +msgid "Border Size" +msgstr "Méid na Teorann" + +msgid "Corner Radius" +msgstr "Ga cúinne" + +msgid "Base Spacing" +msgstr "Spásáil Bonn" + +msgid "Additional Spacing" +msgstr "Spásáil Bhreise" + +msgid "Custom Theme" +msgstr "Téama Saincheaptha" + +msgid "Touchscreen" +msgstr "Scáileán tadhaill" + +msgid "Increase Scrollbar Touch Area" +msgstr "Méadaigh Limistéar Tadhaill an Scrollbharra" + +msgid "Enable Long Press as Right Click" +msgstr "Cumasaigh Preas Fada mar Chliceáil Ar Dheis" + +msgid "Enable Pan and Scale Gestures" +msgstr "Cumasaigh Gothaí Pan agus Scála" + +msgid "Scale Gizmo Handles" +msgstr "Scálaigh Láimhseálann Gizmo" + +msgid "Scene Tabs" +msgstr "Cluaisíní Radhairc" + +msgid "Display Close Button" +msgstr "Taispeáin Cnaipe Dún" + +msgid "Show Thumbnail on Hover" +msgstr "Taispeáin Mionsamhail ar Hover" + +msgid "Maximum Width" +msgstr "Leithead Uasta" + +msgid "Show Script Button" +msgstr "Taispeáin cnaipe scripte" + +msgid "Restore Scenes on Load" +msgstr "Athchóirigh Radhairc ar Luchtaigh" + +msgid "Multi Window" +msgstr "Ilfhuinneog" + +msgid "Restore Windows on Load" +msgstr "Aischuir Windows ar Luchtaigh" + +msgid "Maximize Window" +msgstr "Uasmhéadaigh Fuinneog" + +msgid "External Programs" +msgstr "Cláir sheachtracha" + +msgid "Raster Image Editor" +msgstr "Eagarthóir Íomhá Raster" + +msgid "Vector Image Editor" +msgstr "Eagarthóir Íomhá Veicteora" + +msgid "Audio Editor" +msgstr "Eagarthóir Fuaime" + +msgid "3D Model Editor" +msgstr "Eagarthóir Samhail 3D" + +msgid "Terminal Emulator" +msgstr "Aithriseoir Teirminéil" + +msgid "Terminal Emulator Flags" +msgstr "Bratacha Aithriseora Teirminéil" + +msgid "Directories" +msgstr "Eolairí" + +msgid "Autoscan Project Path" +msgstr "Conair Tionscadail Uathscanta" + +msgid "Default Project Path" +msgstr "Conair Réamhshocraithe an Tionscadail" + +msgid "On Save" +msgstr "Ar Sábháil" + +msgid "Compress Binary Resources" +msgstr "Comhbhrúigh Acmhainní Dénártha" + +msgid "Safe Save on Backup then Rename" +msgstr "Sábháilte Sábháil ar Chúltaca ansin Athainmnigh" + +msgid "File Dialog" +msgstr "Dialóg Chomhaid" + +msgid "Show Hidden Files" +msgstr "Taispeáin Comhaid Fholaithe" + +msgid "Display Mode" +msgstr "Mód Taispeána" + +msgid "Thumbnail Size" +msgstr "Méid na Mionsamhlacha" + +msgid "Import" +msgstr "Iompórtáil" + +msgid "Blender" +msgstr "Cumascóir" + +msgid "Blender Path" +msgstr "Conair an Chumascóra" + +msgid "RPC Port" +msgstr "Calafort RPC" + +msgid "RPC Server Uptime" +msgstr "Aga fónaimh Freastalaí RPC" + +msgid "FBX" +msgstr "FBXName" + +msgid "FBX2glTF Path" +msgstr "Conair FBX2glTF" + +msgid "Tools" +msgstr "Uirlisí" + +msgid "OIDN" +msgstr "OIDN" + +msgid "OIDN Denoise Path" +msgstr "Conair Denoise OIDN" + +msgid "Docks" +msgstr "Dugaí" + +msgid "Scene Tree" +msgstr "Crann Radhairc" + +msgid "Start Create Dialog Fully Expanded" +msgstr "Tosaigh Cruthaigh Dialóg Leathnaithe go hiomlán" + +msgid "Auto Expand to Selected" +msgstr "Leathnaigh go hUathoibríoch go Roghnaithe" + +msgid "Center Node on Reparent" +msgstr "Nód Ionaid ar Reparent" + +msgid "Always Show Folders" +msgstr "Taispeáin Fillteáin i gCónaí" + +msgid "TextFile Extensions" +msgstr "Iarmhíreanna Téacschomhaid" + +msgid "Property Editor" +msgstr "Eagarthóir Maoine" + +msgid "Auto Refresh Interval" +msgstr "Eatramh Athnuachana Uathoibríoch" + +msgid "Subresource Hue Tint" +msgstr "Fo-acmhainn Hú Tonn" + +msgid "Color Theme" +msgstr "Téama Datha" + +msgid "Appearance" +msgstr "Dealramh" + +msgid "Caret" +msgstr "Carait" + +msgid "Caret Blink" +msgstr "Carait Blink" + +msgid "Caret Blink Interval" +msgstr "Eatramh Caret Blink" + +msgid "Highlight Current Line" +msgstr "Aibhsigh an Líne Reatha" + +msgid "Highlight All Occurrences" +msgstr "Aibhsigh Gach Tarluithe" + +msgid "Guidelines" +msgstr "Treoirlínte" + +msgid "Show Line Length Guidelines" +msgstr "Taispeáin Treoirlínte maidir le Fad Líne" + +msgid "Line Length Guideline Soft Column" +msgstr "Fad Líne Treoirlíne Colún Bog" + +msgid "Line Length Guideline Hard Column" +msgstr "Fad Líne Treoirlíne Colún Crua" + +msgid "Gutters" +msgstr "Gáitéir" + +msgid "Show Line Numbers" +msgstr "Taispeáin Uimhreacha Líne" + +msgid "Line Numbers Zero Padded" +msgstr "Uimhreacha Líne Zero Padded" + +msgid "Highlight Type Safe Lines" +msgstr "Aibhsigh Cineál Línte Sábháilte" + +msgid "Show Info Gutter" +msgstr "Taispeáin Buachaillí Eolais" + +msgid "Minimap" +msgstr "Mionléarscáil" + +msgid "Show Minimap" +msgstr "Taispeáin Minimap" + +msgid "Minimap Width" +msgstr "Leithead Minimap" + +msgid "Lines" +msgstr "Línte" + +msgid "Code Folding" +msgstr "Cód Fillte" + +msgid "Word Wrap" +msgstr "Timfhilleadh Focal" + +msgid "Autowrap Mode" +msgstr "Mód Uathfhillte" + +msgid "Whitespace" +msgstr "Spás Bán" + +msgid "Draw Tabs" +msgstr "Tarraing Cluaisíní" + +msgid "Draw Spaces" +msgstr "Tarraing Spásanna" + +msgid "Behavior" +msgstr "Oibriú" + +msgid "Navigation" +msgstr "Nascleanúint" + +msgid "Move Caret on Right Click" +msgstr "Bog Caret ar Dheis Cliceáil" + +msgid "Scroll Past End of File" +msgstr "Scrollaigh Deireadh an Chomhaid Roimhe Seo" + +msgid "Smooth Scrolling" +msgstr "Scrollú Réidh" + +msgid "V Scroll Speed" +msgstr "V Luas Scrollaigh" + +msgid "Drag and Drop Selection" +msgstr "Tarraing agus Buail Roghnúchán" + +msgid "Stay in Script Editor on Node Selected" +msgstr "Fan san Eagarthóir Scripte ar Nód Roghnaithe" + +msgid "Open Script When Connecting Signal to Existing Method" +msgstr "Oscail script agus comhartha á nascadh leis an modh atá ann cheana" + +msgid "Use Default Word Separators" +msgstr "Úsáid Deighilteoirí Focal Réamhshocraithe" + +msgid "Use Custom Word Separators" +msgstr "Úsáid Deighilteoirí Focal Saincheaptha" + +msgid "Custom Word Separators" +msgstr "Deighilteoirí Focal Saincheaptha" + +msgid "Indent" +msgstr "Eangú" + +msgid "Auto Indent" +msgstr "Eangú Uathoibríoch" + +msgid "Indent Wrapped Lines" +msgstr "Eangaigh Línte Fillte" + +msgid "Files" +msgstr "Comhaid" + +msgid "Trim Trailing Whitespace on Save" +msgstr "Baile Átha Troim Trailing Whitespace ar Sábháil" + +msgid "Trim Final Newlines on Save" +msgstr "Baile Átha Troim Deiridh Newlines on Save" + +msgid "Autosave Interval Secs" +msgstr "Secs Eatramh Autosave" + +msgid "Restore Scripts on Load" +msgstr "Athchóirigh Scripteanna ar Luchtaigh" + +msgid "Convert Indent on Save" +msgstr "Tiontaigh Eang ar Sábháil" + +msgid "Auto Reload Scripts on External Change" +msgstr "Athluchtaigh scripteanna go huathoibríoch ar athrú seachtrach" + +msgid "Script List" +msgstr "Liosta Scripteanna" + +msgid "Show Members Overview" +msgstr "Taispeáin Forbhreathnú na gComhaltaí" + +msgid "Sort Members Outline Alphabetically" +msgstr "Sórtáil Breac-chuntas na gComhaltaí in ord aibítre" + +msgid "Completion" +msgstr "Críochnú" + +msgid "Idle Parse Delay" +msgstr "Moill pharsála díomhaoin" + +msgid "Auto Brace Complete" +msgstr "Auto Brace Críochnaithe" + +msgid "Code Complete Enabled" +msgstr "Cód Cumasaithe Comhlánaithe" + +msgid "Code Complete Delay" +msgstr "Cód Moill Iomlán" + +msgid "Put Callhint Tooltip Below Current Line" +msgstr "Cuir leid uirlisí Callhint faoi bhun na líne reatha" + +msgid "Complete File Paths" +msgstr "Comhlánaigh Cosáin Chomhaid" + +msgid "Add Type Hints" +msgstr "Cuir Leideanna Cineál Leis" + +msgid "Add String Name Literals" +msgstr "Cuir Litriúil Ainm Teaghrán Leis" + +msgid "Add Node Path Literals" +msgstr "Cuir Litriúil Cosán Nód Leis" + +msgid "Use Single Quotes" +msgstr "Úsáid Sleachta Aonair" + +msgid "Colorize Suggestions" +msgstr "Moltaí Dathúcháin" + +msgid "Show Help Index" +msgstr "Taispeáin an tInnéacs Cabhrach" + +msgid "Help Font Size" +msgstr "Méid an Chló Cabhrach" + +msgid "Help Source Font Size" +msgstr "Cabhair Foinse Clómhéid" + +msgid "Help Title Font Size" +msgstr "Cabhair Teideal Clómhéid" + +msgid "Class Reference Examples" +msgstr "Samplaí Tagartha Ranga" + +msgid "Editors" +msgstr "Eagarthóirí" + +msgid "Grid Map" +msgstr "Mapa Greille" + +msgid "Pick Distance" +msgstr "Roghnaigh Fad" + +msgid "Primary Grid Color" +msgstr "Dath na Príomhghreille" + +msgid "Secondary Grid Color" +msgstr "Dath Greille Tánaisteach" + +msgid "Selection Box Color" +msgstr "Dath an Bhosca Roghnaithe" + +msgid "3D Gizmos" +msgstr "Gizmos 3D" + +msgid "Gizmo Colors" +msgstr "Dathanna Gizmo" + +msgid "Instantiated" +msgstr "Meandaracha" + +msgid "Joint" +msgstr "Comhpháir teach" + +msgid "AABB" +msgstr "AABBName" + +msgid "Primary Grid Steps" +msgstr "Céimeanna Greille Bunscoile" + +msgid "Grid Size" +msgstr "Méid na Greille" + +msgid "Grid Division Level Max" +msgstr "Leibhéal Rannán Greille Max" + +msgid "Grid Division Level Min" +msgstr "Greille Rannán Leibhéal Min" + +msgid "Grid Division Level Bias" +msgstr "Claonadh Leibhéal Rannán Greille" + +msgid "Grid XZ Plane" +msgstr "Greille XZ Plána" + +msgid "Grid XY Plane" +msgstr "Greille XY Plána" + +msgid "Grid YZ Plane" +msgstr "Greille YZ Plána" + +msgid "Default FOV" +msgstr "FOV réamhshocraithe" + +msgid "Default Z Near" +msgstr "Réamhshocrú Z In aice" + +msgid "Default Z Far" +msgstr "Réamhshocrú Z Far" + +msgid "Invert X Axis" +msgstr "Inbhéartaigh Ais X" + +msgid "Invert Y Axis" +msgstr "Ais Inbhéartaithe Y" + +msgid "Navigation Scheme" +msgstr "Scéim Loingseoireachta" + +msgid "Zoom Style" +msgstr "Stíl Zúmála" + +msgid "Emulate Numpad" +msgstr "Aithris a dhéanamh ar Numpad" + +msgid "Emulate 3 Button Mouse" +msgstr "Aithris a dhéanamh ar Luch Cnaipe 3" + +msgid "Orbit Modifier" +msgstr "Mionathraitheoir Fithise" + +msgid "Pan Modifier" +msgstr "Pan Edit" + +msgid "Zoom Modifier" +msgstr "Mionathraitheoir Zúmála" + +msgid "Warped Mouse Panning" +msgstr "Panning Luiche Warped" + +msgid "Navigation Feel" +msgstr "Mothú Nascleanúna" + +msgid "Orbit Sensitivity" +msgstr "Íogaireacht na Fithise" + +msgid "Orbit Inertia" +msgstr "Táimhe na Fithise" + +msgid "Translation Inertia" +msgstr "Táimhe an Aistriúcháin" + +msgid "Zoom Inertia" +msgstr "Táimhe Zúmála" + +msgid "Freelook" +msgstr "FreelookName" + +msgid "Freelook Navigation Scheme" +msgstr "Scéim Loingseoireachta Freelook" + +msgid "Freelook Sensitivity" +msgstr "Íogaireacht Freelook" + +msgid "Freelook Inertia" +msgstr "Táimhe Freelook" + +msgid "Freelook Base Speed" +msgstr "Luas Bonn Freelook" + +msgid "Freelook Activation Modifier" +msgstr "Mionathraitheoir Gníomhachtaithe Freelook" + +msgid "Freelook Speed Zoom Link" +msgstr "Nasc Zúmála Luais Freelook" + +msgid "Grid Color" +msgstr "Dath na Greille" + +msgid "Guides Color" +msgstr "Dath na dTreoracha" + +msgid "Smart Snapping Line Color" +msgstr "Dath Líne Snapping Cliste" + +msgid "Bone Width" +msgstr "Leithead cnámh" + +msgid "Bone Color 1" +msgstr "Dath Cnámh 1" + +msgid "Bone Color 2" +msgstr "Dath Cnámh 2" + +msgid "Bone Selected Color" +msgstr "Dath roghnaithe na gcnámh" + +msgid "Bone IK Color" +msgstr "Dath IK Cnámh" + +msgid "Bone Outline Color" +msgstr "Dath imlíne na gcnámh" + +msgid "Bone Outline Size" +msgstr "Imlíne Cnámh Méid" + +msgid "Viewport Border Color" +msgstr "Dath na Teorann Viewport" + +msgid "Use Integer Zoom by Default" +msgstr "Úsáid Súmáil Slánuimhir de réir réamhshocraithe" + +msgid "Panning" +msgstr "Ag pannáil" + +msgid "2D Editor Panning Scheme" +msgstr "Scéim Panning Eagarthóir 2D" + +msgid "Sub Editors Panning Scheme" +msgstr "Scéim Panning Fo-Eagarthóirí" + +msgid "Animation Editors Panning Scheme" +msgstr "Scéim Panning d'Eagarthóirí Beochana" + +msgid "Simple Panning" +msgstr "Panning Simplí" + +msgid "2D Editor Pan Speed" +msgstr "Eagarthóir Pan Speed 2D" + +msgid "Tiles Editor" +msgstr "Eagarthóir Tíleanna" + +msgid "Display Grid" +msgstr "Greille Taispeána" + +msgid "Highlight Selected Layer" +msgstr "Aibhsigh an tSraith Roghnaithe" + +msgid "Polygon Editor" +msgstr "Eagarthóir Polagán" + +msgid "Point Grab Radius" +msgstr "Ga Grab Pointe" + +msgid "Show Previous Outline" +msgstr "Taispeáin an imlíne roimhe seo" + +msgid "Auto Bake Delay" +msgstr "Moill ar Bhácáil Uathoibríoch" + +msgid "Autorename Animation Tracks" +msgstr "Uathainm Rianta Beochana" + +msgid "Confirm Insert Track" +msgstr "Deimhnigh Ionsáigh an tAmhrán" + +msgid "Default Create Bezier Tracks" +msgstr "Réamhshocrú Cruthaigh Rianta Bezier" + +msgid "Default Create Reset Tracks" +msgstr "Réamhshocrú Cruthaigh Rianta Athshocraithe" + +msgid "Onion Layers Past Color" +msgstr "Sraitheanna Oinniún Dath Past" + +msgid "Onion Layers Future Color" +msgstr "Sraitheanna Oinniún Dath Todhchaí" + +msgid "Shader Editor" +msgstr "Eagarthóir Scáthaigh" + +msgid "Restore Shaders on Load" +msgstr "Athchóirigh Shaders ar Luchtaigh" + +msgid "Visual Editors" +msgstr "Eagarthóirí Amhairc" + +msgid "Minimap Opacity" +msgstr "Teimhneacht Minimap" + +msgid "Lines Curvature" +msgstr "Cuaire Línte" + +msgid "Grid Pattern" +msgstr "Patrún Greille" + +msgid "Visual Shader" +msgstr "Scáthóir Amhairc" + +msgid "Port Preview Size" +msgstr "Méid Réamhamhairc an Phoirt" + +msgid "Window Placement" +msgstr "Socrúchán Fuinneoige" + +msgid "Rect" +msgstr "RectName" + +msgid "Rect Custom Position" +msgstr "Suíomh Saincheaptha Rect" + +msgid "Screen" +msgstr "Scáileán" + +msgid "Android Window" +msgstr "Fuinneog Android" + +msgid "Auto Save" +msgstr "Sábháil Go hUathoibríoch" + +msgid "Save Before Running" +msgstr "Sábháil Roimh Rith" + +msgid "Bottom Panel" +msgstr "Painéal Bun" + +msgid "Action on Play" +msgstr "Gníomh ar an Súgradh" + +msgid "Action on Stop" +msgstr "Gníomh ar Stop" + +msgid "Output" +msgstr "Aschur" + +msgid "Font Size" +msgstr "Clómhéid" + +msgid "Always Clear Output on Play" +msgstr "Glan aschur i gcónaí ar an súgradh" + +msgid "Max Lines" +msgstr "Uaslínte" + +msgid "Platforms" +msgstr "Ardáin" + +msgid "Linuxbsd" +msgstr "Linuxbsd" + +msgid "Prefer Wayland" +msgstr "Is fearr Wayland" + +msgid "Network Mode" +msgstr "Mód Líonra" + +msgid "HTTP Proxy" +msgstr "Seachfhreastalaí HTTP" + +msgid "Host" +msgstr "Óstríomhaire" + +msgid "Editor TLS Certificates" +msgstr "Teastais TLS Eagarthóra" + +msgid "Remote Host" +msgstr "Cianóstach" + +msgid "Debugger" +msgstr "Dífhabhtóir" + +msgid "Auto Switch to Remote Scene Tree" +msgstr "Athraigh go Crann Radharc Cianda" + +msgid "Profiler Frame History Size" +msgstr "Méid Stair an Fhráma Próifíleora" + +msgid "Profiler Frame Max Functions" +msgstr "Feidhmeanna Max Fráma Próifíleora" + +msgid "Remote Scene Tree Refresh Interval" +msgstr "Eatramh Athnuachana Crann Radharc Cianda" + +msgid "Remote Inspect Refresh Interval" +msgstr "Eatramh Athnuachana Cianda Cigireachta" + +msgid "Profile Native Calls" +msgstr "Glaonna Dúchasacha Próifíle" + +msgid "Input" +msgstr "Ionchur" + +msgid "Buffering" +msgstr "Maolánú" + +msgid "Agile Event Flushing" +msgstr "Flushing Imeacht Aclaí" + +msgid "Project Manager" +msgstr "Bainisteoir Tionscadail" + +msgid "Sorting Order" +msgstr "Ordú Sórtála" + +msgid "Directory Naming Convention" +msgstr "Coinbhinsiún Ainmniú Eolaire" + +msgid "Default Renderer" +msgstr "Rindreálaí Réamhshocraithe" + +msgid "Highlighting" +msgstr "Aibhsiú" + +msgid "Symbol Color" +msgstr "Dath na Siombaile" + +msgid "Keyword Color" +msgstr "Dath Eochairfhocal" + +msgid "Control Flow Keyword Color" +msgstr "Rialú Shreabhadh Eochairfhocal Dath" + +msgid "Base Type Color" +msgstr "Bunchineál Dath" + +msgid "Engine Type Color" +msgstr "Dath Cineál Innill" + +msgid "User Type Color" +msgstr "Dath an Chineáil Úsáideora" + +msgid "Comment Color" +msgstr "Dath an Tráchta" + +msgid "Doc Comment Color" +msgstr "Dath Tráchta Doc" + +msgid "String Color" +msgstr "Dath Teaghrán" + +msgid "Background Color" +msgstr "Cúlra Dath" + +msgid "Completion Background Color" +msgstr "Dath an Chúlra Críochnaithe" + +msgid "Completion Selected Color" +msgstr "Comhlánú Dath Roghnaithe" + +msgid "Completion Existing Color" +msgstr "Comhlánaigh an dath atá ann cheana" + +msgid "Completion Scroll Color" +msgstr "Comhlánú Scrollaigh Dath" + +msgid "Completion Scroll Hovered Color" +msgstr "Comhlánú Scrollaigh Dath Hovered" + +msgid "Completion Font Color" +msgstr "Comhlánaigh Dath an Chló" + +msgid "Text Color" +msgstr "Dath an Téacs" + +msgid "Line Number Color" +msgstr "Dath Uimhir Líne" + +msgid "Safe Line Number Color" +msgstr "Dath Uimhir Líne Sábháilte" + +msgid "Caret Color" +msgstr "Dath Caret" + +msgid "Caret Background Color" +msgstr "Cúlra Caret Dath" + +msgid "Text Selected Color" +msgstr "Dath Roghnaithe Téacs" + +msgid "Selection Color" +msgstr "Dath an Roghnaithe" + +msgid "Brace Mismatch Color" +msgstr "Dath Neamhoiriúnach Brace" + +msgid "Current Line Color" +msgstr "Dath na Líne Reatha" + +msgid "Line Length Guideline Color" +msgstr "Fad Líne Treoirlíne Dath" + +msgid "Word Highlighted Color" +msgstr "Dath aibhsithe focal" + +msgid "Number Color" +msgstr "Dath na hUimhreach" + +msgid "Function Color" +msgstr "Dath na Feidhme" + +msgid "Member Variable Color" +msgstr "Dath Athraitheach na mBall" + +msgid "Mark Color" +msgstr "Marcáil Dath" + +msgid "Bookmark Color" +msgstr "Dath Leabharmharcanna" + +msgid "Breakpoint Color" +msgstr "Dath Brisphointe" + +msgid "Executing Line Color" +msgstr "Dath na Líne á Rith" + +msgid "Code Folding Color" +msgstr "Dath Fillte an Chóid" + +msgid "Folded Code Region Color" +msgstr "Dath Réigiún an Chóid Fillte" + +msgid "Search Result Color" +msgstr "Dath an Toraidh Chuardaigh" + +msgid "Search Result Border Color" +msgstr "Dath Teorann Thoradh an Chuardaigh" + +msgid "Connection Colors" +msgstr "Dathanna ceangail" + +msgid "Scalar Color" +msgstr "Dath scalar" + +msgid "Vector2 Color" +msgstr "Dath Veicteoir2" + +msgid "Vector 3 Color" +msgstr "Dath Veicteoir 3" + +msgid "Vector 4 Color" +msgstr "Dath Veicteoir 4" + +msgid "Boolean Color" +msgstr "Dath Boole" + +msgid "Transform Color" +msgstr "Trasfhoirmigh Dath" + +msgid "Sampler Color" +msgstr "Dath an tSamplaitheora" + +msgid "Category Colors" +msgstr "Catagóir Dathanna" + +msgid "Output Color" +msgstr "Dath Aschurtha" + +msgid "Color Color" +msgstr "Dath" + +msgid "Conditional Color" +msgstr "Dath Coinníollach" + +msgid "Input Color" +msgstr "Dath Ionchurtha" + +msgid "Textures Color" +msgstr "Uigeachtaí Dath" + +msgid "Utility Color" +msgstr "Dath Fóntais" + +msgid "Vector Color" +msgstr "Dath veicteora" + +msgid "Special Color" +msgstr "Dath Speisialta" + +msgid "Particle Color" +msgstr "Dath na gCáithníní" + +msgid "Custom Template" +msgstr "Teimpléad Saincheaptha" + +msgid "Release" +msgstr "Scaoileadh" + +msgid "Export Console Wrapper" +msgstr "Easpórtáil fillteán consóil" + +msgid "Binary Format" +msgstr "Formáid Dhénártha" + +msgid "Embed PCK" +msgstr "Leabú PCK" + +msgid "Texture Format" +msgstr "Formáid Uigeachta" + +msgid "S3TC BPTC" +msgstr "S3TC BPTC" + +msgid "ETC2 ASTC" +msgstr "ETC2 ASTC" + +msgid "Export" +msgstr "Easpórtáil" + +msgid "SSH" +msgstr "SSH" + +msgid "SCP" +msgstr "SCPName" + +msgid "Export Path" +msgstr "Easpórtáil Conair" + +msgid "Access" +msgstr "Rochtain" + +msgid "File Mode" +msgstr "Mód Comhaid" + +msgid "Filters" +msgstr "Scagairí" + +msgid "Options" +msgstr "Roghanna" + +msgid "Disable Overwrite Warning" +msgstr "Díchumasaigh Rabhadh Forscríobh" + +msgid "Flat" +msgstr "Maol" + +msgid "Hide Slider" +msgstr "Folaigh an Sleamhnán" + +msgid "Zoom" +msgstr "Súmáil" + +msgid "Retarget" +msgstr "Athdhírigh" + +msgid "Bone Renamer" +msgstr "Athdhéanamh Cnámh" + +msgid "Rename Bones" +msgstr "Athainmnigh Cnámha" + +msgid "Unique Node" +msgstr "Nód Uathúil" + +msgid "Make Unique" +msgstr "Déan Uathúil" + +msgid "Skeleton Name" +msgstr "Ainm an Chnámharlaigh" + +msgid "Rest Fixer" +msgstr "Deisitheoir Scíthe" + +msgid "Apply Node Transforms" +msgstr "Cuir Claochluithe Nód i bhFeidhm" + +msgid "Normalize Position Tracks" +msgstr "Normalú Rianta Suímh" + +msgid "Reset All Bone Poses After Import" +msgstr "Athshocraigh gach cnámh tar éis na hiompórtála" + +msgid "Overwrite Axis" +msgstr "Forscríobh Ais" + +msgid "Keep Global Rest on Leftovers" +msgstr "Coinnigh Scíth Dhomhanda ar Leftovers" + +msgid "Fix Silhouette" +msgstr "Deisigh Scáthchruth" + +msgid "Filter" +msgstr "Scagaire" + +msgid "Threshold" +msgstr "Tairseach" + +msgid "Base Height Adjustment" +msgstr "Coigeartú Airde Bonn" + +msgid "Remove Tracks" +msgstr "Bain Amhráin" + +msgid "Except Bone Transform" +msgstr "Ach amháin Cnámh Trasfhoirmigh" + +msgid "Unimportant Positions" +msgstr "Poist gan tábhacht" + +msgid "Unmapped Bones" +msgstr "Cnámha Gan Teorainn" + +msgid "Generate Tangents" +msgstr "Gin Tangents" + +msgid "Scale Mesh" +msgstr "Mogalra Scála" + +msgid "Offset Mesh" +msgstr "Fritháireamh Mogalra" + +msgid "Optimize Mesh" +msgstr "Optamaigh mogalra" + +msgid "Force Disable Mesh Compression" +msgstr "Fórsa Díchumasaigh Comhbhrú Mogalra" + +msgid "Skip Import" +msgstr "Ná bac le hIompórtáil" + +msgid "Generate" +msgstr "Gin" + +msgid "NavMesh" +msgstr "NavMeshName" + +msgid "Body Type" +msgstr "Cineál Coirp" + +msgid "Shape Type" +msgstr "Cineál Crutha" + +msgid "Physics Material Override" +msgstr "Sárú Ábhar Fisice" + +msgid "Layer" +msgstr "Sraith" + +msgid "Mask" +msgstr "Masc" + +msgid "Mesh Instance" +msgstr "Mogalra Ásc" + +msgid "Layers" +msgstr "Sraitheanna" + +msgid "Visibility Range Begin" +msgstr "Tús a chur leis an Raon Infheictheachta" + +msgid "Visibility Range Begin Margin" +msgstr "Raon Infheictheachta Tosaigh Imeall" + +msgid "Visibility Range End" +msgstr "Deireadh an Raoin Infheictheachta" + +msgid "Visibility Range End Margin" +msgstr "Imeall Deireadh Raon Infheictheachta" + +msgid "Visibility Range Fade Mode" +msgstr "Mód Céimnithe Raon Infheictheachta" + +msgid "Cast Shadow" +msgstr "Scáth Teilgthe" + +msgid "Decomposition" +msgstr "Dianscaoileadh" + +msgid "Advanced" +msgstr "Ardrang" + +msgid "Precision" +msgstr "Beachtas" + +msgid "Max Concavity" +msgstr "Uasmhéid Cuasachta" + +msgid "Symmetry Planes Clipping Bias" +msgstr "Plánaí Siméadrachta Clipping Bias" + +msgid "Revolution Axes Clipping Bias" +msgstr "Réabhlóid Aiseanna Clipping Claonadh" + +msgid "Min Volume per Convex Hull" +msgstr "Min Imleabhar in aghaidh an Chabhail Dronnach" + +msgid "Resolution" +msgstr "Rún" + +msgid "Max Num Vertices per Convex Hull" +msgstr "Líon Uasta Rinn in aghaidh an Toinne Dronnaigh" + +msgid "Plane Downsampling" +msgstr "Downsampling Plána" + +msgid "Convexhull Downsampling" +msgstr "Íosghrádú Toinne Dronnaigh" + +msgid "Normalize Mesh" +msgstr "Normalú mogalra" + +msgid "Convexhull Approximation" +msgstr "Comhfhogasú dronnach" + +msgid "Max Convex Hulls" +msgstr "Max Cabhail Dronnach" + +msgid "Project Hull Vertices" +msgstr "Tionscadal Hull Vertices" + +msgid "Primitive" +msgstr "PrimitiveName" + +msgid "Height" +msgstr "Airde" + +msgid "Radius" +msgstr "Ga" + +msgid "Occluder" +msgstr "OccluderName" + +msgid "Simplification Distance" +msgstr "Fad simpliúcháin" + +msgid "Save to File" +msgstr "Sábháil i gComhad" + +msgid "Enabled" +msgstr "Cumasaithe" + +msgid "Shadow Meshes" +msgstr "Mogaill Scátha" + +msgid "Lightmap UV" +msgstr "Léarscáil Solais UV" + +msgid "LODs" +msgstr "LODanna" + +msgid "Normal Split Angle" +msgstr "Gnáthuillinn Scoilte" + +msgid "Normal Merge Angle" +msgstr "Gnáthuillinn Chumaisc" + +msgid "Use External" +msgstr "Úsáid Seachtrach" + +msgid "Loop Mode" +msgstr "Mód Lúb" + +msgid "Keep Custom Tracks" +msgstr "Coinnigh Rianta Saincheaptha" + +msgid "Slices" +msgstr "Slisní" + +msgid "Amount" +msgstr "Méid" + +msgid "Optimizer" +msgstr "Optamóir" + +msgid "Max Velocity Error" +msgstr "Earráid Treoluais Uasta" + +msgid "Max Angular Error" +msgstr "Earráid Uilleach Uasta" + +msgid "Max Precision Error" +msgstr "Earráid Bheachtais Uasta" + +msgid "Page Size" +msgstr "Méid an Leathanaigh" + +msgid "Import Tracks" +msgstr "Iompórtáil Rianta" + +msgid "Rest Pose" +msgstr "Údar Scíthe" + +msgid "Load Pose" +msgstr "Luchtaigh Pose" + +msgid "External Animation Library" +msgstr "Leabharlann Beochana Seachtrach" + +msgid "Selected Animation" +msgstr "Beochan Roghnaithe" + +msgid "Selected Timestamp" +msgstr "Stampa Ama Roghnaithe" + +msgid "Bone Map" +msgstr "Léarscáil na gCnámh" + +msgid "Nodes" +msgstr "Nóid" + +msgid "Root Type" +msgstr "Cineál Fréamh" + +msgid "Root Name" +msgstr "Fréamhainm" + +msgid "Apply Root Scale" +msgstr "Cuir Fréamhscála i bhFeidhm" + +msgid "Root Scale" +msgstr "Fréamhscála" + +msgid "Import as Skeleton Bones" +msgstr "Iompórtáil mar chnámha cnámharlaigh" + +msgid "Meshes" +msgstr "Mogalraí" + +msgid "Ensure Tangents" +msgstr "Cinntigh Tangents" + +msgid "Generate LODs" +msgstr "Gin LODanna" + +msgid "Create Shadow Meshes" +msgstr "Cruthaigh Scáth-Mhogaill" + +msgid "Light Baking" +msgstr "Bácáil Éadrom" + +msgid "Lightmap Texel Size" +msgstr "Lightmap Texel Méid" + +msgid "Force Disable Compression" +msgstr "Fórsa Díchumasaigh Comhbhrú" + +msgid "Skins" +msgstr "Craicne" + +msgid "Use Named Skins" +msgstr "Úsáid Craicne Ainmnithe" + +msgid "FPS" +msgstr "CCT" + +msgid "Trimming" +msgstr "Bearradh" + +msgid "Remove Immutable Tracks" +msgstr "Bain Rianta Immutable" + +msgid "Import Rest as Reset" +msgstr "Iompórtáil an chuid eile mar Athshocraigh" + +msgid "Import Script" +msgstr "Iompórtáil Script" + +msgid "Antialiasing" +msgstr "Antialiasing" + +msgid "Generate Mipmaps" +msgstr "Gin Mipmaps" + +msgid "Disable Embedded Bitmaps" +msgstr "Díchumasaigh Mapaí Giotán Leabaithe" + +msgid "Multichannel Signed Distance Field" +msgstr "Réimse Fad Sínithe Multichannel" + +msgid "MSDF Pixel Range" +msgstr "Raon Picteilíní MSDF" + +msgid "MSDF Size" +msgstr "Méid MSDF" + +msgid "Allow System Fallback" +msgstr "Ceadaigh Cúltaca an Chórais" + +msgid "Force Autohinter" +msgstr "Fórsáil Autobehind" + +msgid "Hinting" +msgstr "Leidiú" + +msgid "Subpixel Positioning" +msgstr "Suíomh Subpixel" + +msgid "Oversampling" +msgstr "Róshampláil" + +msgid "Metadata Overrides" +msgstr "Sáraítear Meiteashonraí" + +msgid "Language Support" +msgstr "Tacaíocht Teanga" + +msgid "Script Support" +msgstr "Tacaíocht Scripte" + +msgid "OpenType Features" +msgstr "Gnéithe OpenType" + +msgid "Fallbacks" +msgstr "Cúltacaí" + +msgid "Compress" +msgstr "Comhbhrú" + +msgid "Language" +msgstr "Teanga" + +msgid "Outline Size" +msgstr "Méid an Imleabhair" + +msgid "Variation" +msgstr "Athrú" + +msgid "OpenType" +msgstr "Cineál Oscailte" + +msgid "Embolden" +msgstr "EmboldenName" + +msgid "Face Index" +msgstr "Innéacs Aghaidhe" + +msgid "Transform" +msgstr "Trasfhoirmigh" + +msgid "Create From" +msgstr "Cruthaigh Ó" + +msgid "Scaling Mode" +msgstr "Mód Scálú" + +msgid "Delimiter" +msgstr "Teormharcóir" + +msgid "Character Ranges" +msgstr "Raonta Carachtar" + +msgid "Kerning Pairs" +msgstr "Péirí Eithne" + +msgid "Columns" +msgstr "Colúin" + +msgid "Rows" +msgstr "Rónna" + +msgid "Image Margin" +msgstr "Imeall Íomhá" + +msgid "Character Margin" +msgstr "Imeall Carachtar" + +msgid "Ascent" +msgstr "AscentName" + +msgid "Descent" +msgstr "Sliocht" + +msgid "High Quality" +msgstr "Ardchaighdeáin" + +msgid "Lossy Quality" +msgstr "Cáilíocht Lossy" + +msgid "HDR Compression" +msgstr "Comhbhrú HDR" + +msgid "Channel Pack" +msgstr "Pacáiste Cainéil" + +msgid "Mipmaps" +msgstr "MipmapsName" + +msgid "Limit" +msgstr "Teorainn" + +msgid "Horizontal" +msgstr "Cothrománach" + +msgid "Vertical" +msgstr "Ingearach" + +msgid "Arrangement" +msgstr "Socrú" + +msgid "Layout" +msgstr "Leagan Amach" + +msgid "Normal Map" +msgstr "Gnáthléarscáil" + +msgid "Roughness" +msgstr "Gairbhe" + +msgid "Src Normal" +msgstr "Src Gnáth" + +msgid "Process" +msgstr "Próiseas" + +msgid "Fix Alpha Border" +msgstr "Deisigh Teorainn Alfa" + +msgid "Premult Alpha" +msgstr "Premult Alfa" + +msgid "Normal Map Invert Y" +msgstr "Inbhéartú Gnáthmhapa Y" + +msgid "HDR as sRGB" +msgstr "HDR mar sRGB" + +msgid "HDR Clamp Exposure" +msgstr "Nochtadh Clamp HDR" + +msgid "Size Limit" +msgstr "Teorainn Méide" + +msgid "Detect 3D" +msgstr "Braith 3D" + +msgid "Compress To" +msgstr "Comhbhrú go" + +msgid "SVG" +msgstr "SvgName" + +msgid "Scale With Editor Scale" +msgstr "Scálaigh le scála an eagarthóra" + +msgid "Convert Colors With Editor Theme" +msgstr "Tiontaigh dathanna le téama eagarthóra" + +msgid "Atlas File" +msgstr "Comhad Atlas" + +msgid "Import Mode" +msgstr "Mód Iompórtála" + +msgid "Crop to Region" +msgstr "Barr go Réigiún" + +msgid "Trim Alpha Border From Region" +msgstr "Teorainn Alfa Bhaile Átha Troim ó Réigiún" + +msgctxt "Enforce" +msgid "Force" +msgstr "Fórsáil" + +msgid "8 Bit" +msgstr "8 giotán" + +msgid "Mono" +msgstr "Mona" + +msgid "Max Rate" +msgstr "Ráta Uasta" + +msgid "Max Rate Hz" +msgstr "Ráta Uasta Hz" + +msgid "Edit" +msgstr "Cuir in eagar" + +msgid "Trim" +msgstr "Baile Átha Troim" + +msgid "Normalize" +msgstr "Normalú" + +msgid "Loop Begin" +msgstr "Tús na Lúibe" + +msgid "Loop End" +msgstr "Deireadh na Lúibe" + +msgid "Asset Library" +msgstr "Leabharlann Sócmhainní" + +msgid "Use Threads" +msgstr "Úsáid Snáitheanna" + +msgid "Available URLs" +msgstr "URLanna atá ar fáil" + +msgid "Current Group Idx" +msgstr "Idx an Ghrúpa Reatha" + +msgid "Current Bone Idx" +msgstr "Idx Cnámh Reatha" + +msgid "Bone Mapper" +msgstr "Mapper Cnámh" + +msgid "Handle Colors" +msgstr "Láimhseáil Dathanna" + +msgid "Unset" +msgstr "Díshocraigh" + +msgid "Set" +msgstr "Socraigh" + +msgid "Missing" +msgstr "Ar iarraidh" + +msgid "Error" +msgstr "Earráid" + +msgid "Stream Player 3D" +msgstr "Sruth Imreoir 3D" + +msgid "Camera" +msgstr "Ceamara" + +msgid "Particles" +msgstr "Cáithníní" + +msgid "Decal" +msgstr "Aistreog" + +msgid "Fog Volume" +msgstr "Imleabhar ceo" + +msgid "Particle Attractor" +msgstr "Mealltóir cáithníní" + +msgid "Particle Collision" +msgstr "Imbhualadh na gCáithníní" + +msgid "Joint Body A" +msgstr "Comhchomhlacht A" + +msgid "Joint Body B" +msgstr "Comhchomhlacht B" + +msgid "Lightmap Lines" +msgstr "Línte Mapa Solais" + +msgid "Lightprobe Lines" +msgstr "Línte Lightprobe" + +msgid "Reflection Probe" +msgstr "Tóireadóir Machnaimh" + +msgid "Visibility Notifier" +msgstr "Fógróir Infheictheachta" + +msgid "Voxel GI" +msgstr "Voxel GI" + +msgid "Manipulator Gizmo Size" +msgstr "Manipulator Gizmo Méid" + +msgid "Manipulator Gizmo Opacity" +msgstr "Teimhneacht Manipulator Gizmo" + +msgid "Show Viewport Rotation Gizmo" +msgstr "Taispeáin Gizmo Rothlaithe Viewport" + +msgid "Show Viewport Navigation Gizmo" +msgstr "Taispeáin Nascleanúint Viewport Gizmo" + +msgid "Gizmo Settings" +msgstr "Socruithe Gizmo" + +msgid "Path 3D Tilt Disk Size" +msgstr "Conair 3D Tilt Diosca Méid" + +msgid "Path Tilt" +msgstr "Tilt Cosán" + +msgid "Auto Reload and Parse Scripts on Save" +msgstr "Athluchtaigh agus Parsáil Scripteanna go hUathoibríoch ar Sábháil" + +msgid "Open Dominant Script on Scene Change" +msgstr "Oscail Script Cheannasach ar Athrú Radhairc" + +msgid "External" +msgstr "Seachtrach" + +msgid "Use External Editor" +msgstr "Úsáid Eagarthóir Seachtrach" + +msgid "Exec Path" +msgstr "Conair Exec" + +msgid "Script Temperature Enabled" +msgstr "Teocht na Scripte Cumasaithe" + +msgid "Script Temperature History Size" +msgstr "Script Teocht Stair Méid" + +msgid "Group Help Pages" +msgstr "Leathanaigh Chabhrach Ghrúpa" + +msgid "Sort Scripts By" +msgstr "Sórtáil scripteanna de réir" + +msgid "List Script Names As" +msgstr "Liostaigh ainmneacha scripte mar" + +msgid "Exec Flags" +msgstr "Bratacha Exec" + +msgid "Skeleton" +msgstr "Cnámharlach" + +msgid "Selected Bone" +msgstr "Cnámh Roghnaithe" + +msgid "Bone Axis Length" +msgstr "Fad Ais na gCnámh" + +msgid "Bone Shape" +msgstr "Cruth Cnámh" + +msgid "ID" +msgstr "Aitheantas" + +msgid "Texture" +msgstr "Uigeacht" + +msgid "Margins" +msgstr "Imill" + +msgid "Separation" +msgstr "Scaradh" + +msgid "Texture Region Size" +msgstr "Méid an Réigiúin Uigeachta" + +msgid "Use Texture Padding" +msgstr "Úsáid Stuáil Uigeachta" + +msgid "Atlas Coords" +msgstr "Comhordanáidí Atlas" + +msgid "Size in Atlas" +msgstr "Méid in Atlas" + +msgid "Alternative ID" +msgstr "Aitheantas malartach" + +msgid "Speed" +msgstr "Luas" + +msgid "Frames Count" +msgstr "Líon na bhFrámaí" + +msgid "Duration" +msgstr "Fad ama" + +msgid "Version Control" +msgstr "Rialú Leagain" + +msgid "Username" +msgstr "Ainm Úsáideora" + +msgid "SSH Public Key Path" +msgstr "Cosán Eochair Phoiblí SSH" + +msgid "SSH Private Key Path" +msgstr "Cosán Eochair Phríobháideach SSH" + +msgid "Main Run Args" +msgstr "Príomh-Args Rith" + +msgid "Templates Search Path" +msgstr "Conair Chuardaigh Teimpléid" + +msgid "Naming" +msgstr "Ainmniú" + +msgid "Default Signal Callback Name" +msgstr "Ainm Aisghlaoite Comhartha Réamhshocraithe" + +msgid "Default Signal Callback to Self Name" +msgstr "Aisghlaoch Comhartha Réamhshocraithe go Féinainm" + +msgid "Scene Name Casing" +msgstr "Cásáil Ainm an Radhairc" + +msgid "Script Name Casing" +msgstr "Cásáil Ainm Scripte" + +msgid "Reimport Missing Imported Files" +msgstr "Athiompórtáil Comhaid Iompórtáilte ar Iarraidh" + +msgid "Use Multiple Threads" +msgstr "Úsáid Snáitheanna Il" + +msgid "Atlas Max Width" +msgstr "Atlas Max Leithead" + +msgid "Convert Text Resources to Binary" +msgstr "Tiontaigh Acmhainní Téacs go Dénártha" + +msgid "Plugin Name" +msgstr "Ainm an Bhreiseáin" + +msgid "Autoload on Startup" +msgstr "Uathluchtaigh ag am tosaithe" + +msgid "Show Scene Tree Root Selection" +msgstr "Taispeáin Roghnú Fréimhe Crann Radhairc" + +msgid "Derive Script Globals by Name" +msgstr "Díorthaigh Script Globals de réir Ainm" + +msgid "Ask Before Deleting Related Animation Tracks" +msgstr "Fiafraigh sula scriostar rianta beochana gaolmhara" + +msgid "Use Favorites Root Selection" +msgstr "Úsáid Roghnú Fréimhe Ceanán" + +msgid "Flush stdout on Print" +msgstr "Stdout Flush ar Priontáil" + +msgid "Max Chars per Second" +msgstr "Max Chars in aghaidh an tSoicind" + +msgid "Max Queued Messages" +msgstr "Uasteachtaireachtaí Ciúáilte" + +msgid "Max Errors per Second" +msgstr "Earráidí Uasta in aghaidh an tSoicind" + +msgid "Max Warnings per Second" +msgstr "Rabhaidh Uasta in aghaidh an tSoicind" + +msgid "File Logging" +msgstr "Logáil Comhad" + +msgid "Enable File Logging" +msgstr "Cumasaigh Logáil Comhad" + +msgid "Log Path" +msgstr "Conair Logála" + +msgid "Max Log Files" +msgstr "Uaschomhaid Logchomhaid" + +msgid "Driver" +msgstr "Tiománaí" + +msgid "Fallback to Vulkan" +msgstr "Fallback go Vulkan" + +msgid "Fallback to D3D12" +msgstr "Fallback go D3D12" + +msgid "GL Compatibility" +msgstr "Comhoiriúnacht GL" + +msgid "Nvidia Disable Threaded Optimization" +msgstr "Nvidia Díchumasaigh Optamú Snáithithe" + +msgid "Fallback to Angle" +msgstr "Fallback go Uillinn" + +msgid "Fallback to Native" +msgstr "Fallback go Dúchasach" + +msgid "Fallback to Gles" +msgstr "Fallback go Gles" + +msgid "Force Angle on Devices" +msgstr "Fórsáil Uillinn ar Ghléasanna" + +msgid "Renderer" +msgstr "Rindreálaí" + +msgid "Rendering Method" +msgstr "Modh Rindreála" + +msgid "Include Text Server Data" +msgstr "Cuir Sonraí Freastalaí Téacs san áireamh" + +msgid "DPI" +msgstr "DPIName" + +msgid "Allow hiDPI" +msgstr "Ceadaigh hiDPI" + +msgid "Per Pixel Transparency" +msgstr "De réir Trédhearcacht Picteilíní" + +msgid "Allowed" +msgstr "Ceadaithe" + +msgid "Threads" +msgstr "Snáitheanna" + +msgid "Thread Model" +msgstr "Samhail Snáithe" + +msgid "Display Server" +msgstr "Freastalaí Taispeána" + +msgid "Handheld" +msgstr "Ríomhaire Boise" + +msgid "Orientation" +msgstr "Treoshuíomh" + +msgid "Output Latency" +msgstr "Latency Aschuir" + +msgid "stdout" +msgstr "an t-am ar fad" + +msgid "Print FPS" +msgstr "Priontáil FPS" + +msgid "Print GPU Profile" +msgstr "Priontáil Próifíl GPU" + +msgid "Verbose stdout" +msgstr "Stdout briathartha" + +msgid "Frame Delay Msec" +msgstr "Msec Moill Fráma" + +msgid "Low Processor Mode" +msgstr "Mód Próiseálaí Íseal" + +msgid "Allow High Refresh Rate" +msgstr "Ceadaigh Ráta Athnuachana Ard" + +msgid "Hide Home Indicator" +msgstr "Folaigh Táscaire Baile" + +msgid "Hide Status Bar" +msgstr "Folaigh Barra Stádais" + +msgid "Suppress UI Gesture" +msgstr "Cuir gotha UI faoi chois" + +msgid "XR" +msgstr "XRName" + +msgid "OpenXR" +msgstr "OpenXRName" + +msgid "Default Action Map" +msgstr "Mapa Gníomhaíochta Réamhshocraithe" + +msgid "Form Factor" +msgstr "Fachtóir Foirme" + +msgid "View Configuration" +msgstr "Amharc ar chumraíocht" + +msgid "Reference Space" +msgstr "Spás Tagartha" + +msgid "Environment Blend Mode" +msgstr "Mód Cumaisc Comhshaoil" + +msgid "Foveation Level" +msgstr "Leibhéal Foveation" + +msgid "Foveation Dynamic" +msgstr "Dinimiciúil Foveation" + +msgid "Submit Depth Buffer" +msgstr "Cuir Maolán Doimhneachta isteach" + +msgid "Startup Alert" +msgstr "Foláireamh Tosaithe" + +msgid "Extensions" +msgstr "Iarmhíreanna" + +msgid "Hand Tracking" +msgstr "Rianú Láimhe" + +msgid "Hand Interaction Profile" +msgstr "Próifíl Idirghníomhaíochta Láimhe" + +msgid "Eye Gaze Interaction" +msgstr "Idirghníomhaíocht Súl" + +msgid "Boot Splash" +msgstr "Splancscáileán Tosaithe" + +msgid "BG Color" +msgstr "Dath BG" + +msgid "Pen Tablet" +msgstr "Táibléad Peann" + +msgid "Environment" +msgstr "Timpeallacht" + +msgid "Defaults" +msgstr "Réamhshocruithe" + +msgid "Default Clear Color" +msgstr "Dath Glan Réamhshocraithe" + +msgid "Icon" +msgstr "Deilbhín" + +msgid "macOS Native Icon" +msgstr "Deilbhín Dúchais macOS" + +msgid "Windows Native Icon" +msgstr "Deilbhín Dúchais Windows" + +msgid "Pointing" +msgstr "Pointeáil" + +msgid "Android" +msgstr "Android" + +msgid "Rotary Input Scroll Axis" +msgstr "Ais Scrollaigh Ionchur Rothlach" + +msgid "Text Driver" +msgstr "Tiománaí Téacs" + +msgid "Mouse Cursor" +msgstr "Cúrsóir Luiche" + +msgid "Custom Image" +msgstr "Íomhá Shaincheaptha" + +msgid "Custom Image Hotspot" +msgstr "Hotspot Íomhá Saincheaptha" + +msgid "Tooltip Position Offset" +msgstr "Fritháireamh Suímh Leideanna" + +msgid "Show Image" +msgstr "Taispeáin Íomhá" + +msgid "Image" +msgstr "Íomhá" + +msgid "Fullsize" +msgstr "Lánmhéid" + +msgid "Use Filter" +msgstr "Úsáid scagaire" + +msgid "Minimum Display Time" +msgstr "Am Taispeána Íosta" + +msgid "Dotnet" +msgstr "DotnetName" + +msgid "Project" +msgstr "Tionscadal" + +msgid "Assembly Name" +msgstr "Ainm an Tionóil" + +msgid "Solution Directory" +msgstr "Comhadlann Réitigh" + +msgid "Assembly Reload Attempts" +msgstr "Iarrachtaí Athluchtaithe Tionóil" + +msgid "Time" +msgstr "Am" + +msgid "Physics Process" +msgstr "Próiseas Fisice" + +msgid "Navigation Process" +msgstr "Próiseas Nascleanúna" + +msgid "Static" +msgstr "Statach" + +msgid "Static Max" +msgstr "Statach Max" + +msgid "Msg Buf Max" +msgstr "Uasmhéid Maolán Teachtaireachtaí" + +msgid "Object" +msgstr "Réad" + +msgid "Objects" +msgstr "Réada" + +msgid "Resources" +msgstr "Acmhainní" + +msgid "Orphan Nodes" +msgstr "Nóid Dílleachta" + +msgid "Raster" +msgstr "Greille" + +msgid "Total Objects Drawn" +msgstr "Iomlán na nOibiachtaí a Tarraingíodh" + +msgid "Total Primitives Drawn" +msgstr "Iomlán Primitives Tarraingthe" + +msgid "Total Draw Calls" +msgstr "Glaonna Tarraingthe Iomlána" + +msgid "Video" +msgstr "Físeán" + +msgid "Video Mem" +msgstr "Comhalta Físe" + +msgid "Texture Mem" +msgstr "Mem Uigeachta" + +msgid "Buffer Mem" +msgstr "Comhalta Maolánach" + +msgid "Physics 2D" +msgstr "Fisic 2D" + +msgid "Active Objects" +msgstr "Réada Gníomhacha" + +msgid "Collision Pairs" +msgstr "Péirí Imbhuailtí" + +msgid "Islands" +msgstr "Oileáin" + +msgid "Physics 3D" +msgstr "Fisic 3D" + +msgid "Active Maps" +msgstr "Léarscáileanna Gníomhacha" + +msgid "Regions" +msgstr "Réigiúin" + +msgid "Agents" +msgstr "Gníomhairí" + +msgid "Links" +msgstr "Naisc" + +msgid "Polygons" +msgstr "Polagáin" + +msgid "Edges" +msgstr "Imill" + +msgid "Edges Merged" +msgstr "Imill cumaiscthe" + +msgid "Edges Connected" +msgstr "Imill Ceangailte" + +msgid "Edges Free" +msgstr "Imill Saor in Aisce" + +msgid "Operation" +msgstr "Oibríocht" + +msgid "Snap" +msgstr "Léim" + +msgid "Calculate Tangents" +msgstr "Ríomh Tangents" + +msgid "Collision" +msgstr "Imbhualadh" + +msgid "Use Collision" +msgstr "Úsáid Imbhualadh" + +msgid "Collision Layer" +msgstr "Sraith Imbhuailtí" + +msgid "Collision Mask" +msgstr "Masc Imbhuailte" + +msgid "Collision Priority" +msgstr "Tosaíocht Imbhuailtí" + +msgid "Flip Faces" +msgstr "Smeach Aghaidheanna" + +msgid "Mesh" +msgstr "Mogalra" + +msgid "Material" +msgstr "Ábhar" + +msgid "Radial Segments" +msgstr "Deighleoga Gathacha" + +msgid "Rings" +msgstr "Fáinní" + +msgid "Smooth Faces" +msgstr "Aghaidheanna Réidh" + +msgid "Sides" +msgstr "Taobhanna" + +msgid "Cone" +msgstr "Cón" + +msgid "Inner Radius" +msgstr "Ga istigh" + +msgid "Outer Radius" +msgstr "Ga Amuigh" + +msgid "Ring Sides" +msgstr "Taobhanna Fáinne" + +msgid "Polygon" +msgstr "Polagán" + +msgid "Depth" +msgstr "Doimhneacht" + +msgid "Spin Degrees" +msgstr "Céimeanna Spin" + +msgid "Spin Sides" +msgstr "Taobhanna Spin" + +msgid "Path Node" +msgstr "Nód Cosáin" + +msgid "Path Interval Type" +msgstr "Cineál Eatramh an Chosáin" + +msgid "Path Interval" +msgstr "Eatramh an Chosáin" + +msgid "Path Simplify Angle" +msgstr "Conair Shimpliú Uillinn" + +msgid "Path Rotation" +msgstr "Rothlú an Chosáin" + +msgid "Path Local" +msgstr "Conair Logánta" + +msgid "Path Continuous U" +msgstr "Conair Leanúnach U" + +msgid "Path U Distance" +msgstr "Conair U Fad" + +msgid "Path Joined" +msgstr "Conair ceangailte" + +msgid "CSG" +msgstr "CSGName" + +msgid "Importer" +msgstr "Iompórtálaí" + +msgid "Allow Geometry Helper Nodes" +msgstr "Ceadaigh Nóid Chabhrach Céimseata" + +msgid "Embedded Image Handling" +msgstr "Láimhseáil Íomhá Leabaithe" + +msgid "FBX2glTF" +msgstr "FBX2glTF" + +msgid "GDScript" +msgstr "GDScriptName" + +msgid "Function Definition Color" +msgstr "Dath Sainmhíniú Feidhme" + +msgid "Global Function Color" +msgstr "Dath na Feidhme Domhanda" + +msgid "Node Path Color" +msgstr "Dath an Chosáin Nód" + +msgid "Node Reference Color" +msgstr "Dath Tagartha nód" + +msgid "Annotation Color" +msgstr "Dath Anótála" + +msgid "String Name Color" +msgstr "Dath Ainm Teaghrán" + +msgid "Comment Markers" +msgstr "Comment Marcóirí" + +msgid "Critical Color" +msgstr "Dath Criticiúil" + +msgid "Warning Color" +msgstr "Dath Rabhaidh" + +msgid "Notice Color" +msgstr "Dath an Fhógra" + +msgid "Critical List" +msgstr "Liosta Criticiúil" + +msgid "Warning List" +msgstr "Liosta Rabhaidh" + +msgid "Notice List" +msgstr "Liosta Fógraí" + +msgid "Max Call Stack" +msgstr "Uasmhéid Carn Glaonna" + +msgid "Exclude Addons" +msgstr "Ná Cuir Breiseáin as an áireamh" + +msgid "Language Server" +msgstr "Freastalaí Teanga" + +msgid "Enable Smart Resolve" +msgstr "Cumasaigh Réiteach Cliste" + +msgid "Show Native Symbols in Editor" +msgstr "Taispeáin Siombailí Dúchasacha san Eagarthóir" + +msgid "Use Thread" +msgstr "Úsáid Snáithe" + +msgid "Poll Limit (µsec)" +msgstr "Teorainn Vótaíochta (μsec)" + +msgid "Copyright" +msgstr "Cóipcheart" + +msgid "Bake FPS" +msgstr "Bácáil FPS" + +msgid "glTF" +msgstr "glTFName" + +msgid "Naming Version" +msgstr "Leagan Ainmniúcháin" + +msgid "Color" +msgstr "Dath" + +msgid "Intensity" +msgstr "Déine" + +msgid "Light Type" +msgstr "Cineál Solais" + +msgid "Range" +msgstr "Raon" + +msgid "Inner Cone Angle" +msgstr "Uillinn Cón Istigh" + +msgid "Outer Cone Angle" +msgstr "Uillinn Cón Seachtrach" + +msgid "Diffuse Img" +msgstr "Idirleata Img" + +msgid "Diffuse Factor" +msgstr "Fachtóir Idirleata" + +msgid "Gloss Factor" +msgstr "Fachtóir Snasta" + +msgid "Specular Factor" +msgstr "Fachtóir Specular" + +msgid "Spec Gloss Img" +msgstr "Snasta Spec Img" + +msgid "Mass" +msgstr "Aifreann" + +msgid "Linear Velocity" +msgstr "Treoluas Líneach" + +msgid "Angular Velocity" +msgstr "Treoluas Uilleach" + +msgid "Center of Mass" +msgstr "Lár an Aifrinn" + +msgid "Inertia Diagonal" +msgstr "Táimhe trasnánach" + +msgid "Inertia Orientation" +msgstr "Treoshuíomh Táimhe" + +msgid "Inertia Tensor" +msgstr "Tensor Táimhe" + +msgid "Is Trigger" +msgstr "An bhfuil Truicear" + +msgid "Mesh Index" +msgstr "Innéacs Mogalra" + +msgid "Importer Mesh" +msgstr "Mogalra an Iompórtálaí" + +msgid "Image Format" +msgstr "Formáid Íomhá" + +msgid "Root Node Mode" +msgstr "Mód Nód Fréimhe" + +msgid "Json" +msgstr "JsonGenericName" + +msgid "Major Version" +msgstr "Mórleagan" + +msgid "Minor Version" +msgstr "Mionleagan" + +msgid "GLB Data" +msgstr "Sonraí GLB" + +msgid "Use Named Skin Binds" +msgstr "Úsáid Ceangail Craicinn Ainmnithe" + +msgid "Buffers" +msgstr "Maoláin" + +msgid "Buffer Views" +msgstr "Radhairc Mhaolánacha" + +msgid "Accessors" +msgstr "Rochtaineoirí" + +msgid "Materials" +msgstr "Ábhair" + +msgid "Scene Name" +msgstr "Ainm an Radhairc" + +msgid "Base Path" +msgstr "Bunchonair" + +msgid "Filename" +msgstr "Ainm comhaid" + +msgid "Root Nodes" +msgstr "Nóid Fréimhe" + +msgid "Texture Samplers" +msgstr "Samplers Uigeachta" + +msgid "Images" +msgstr "Íomhánna" + +msgid "Cameras" +msgstr "Ceamaraí" + +msgid "Lights" +msgstr "Soilse" + +msgid "Unique Names" +msgstr "Ainmneacha Uathúla" + +msgid "Unique Animation Names" +msgstr "Ainmneacha Beochana Uathúla" + +msgid "Skeletons" +msgstr "Cnámharlaigh" + +msgid "Create Animations" +msgstr "Cruthaigh Beochan" + +msgid "Animations" +msgstr "Beochan" + +msgid "Handle Binary Image" +msgstr "Láimhseáil Íomhá Dhénártha" + +msgid "Buffer View" +msgstr "Amharc Maolánach" + +msgid "Byte Offset" +msgstr "Fritháireamh Beart" + +msgid "Component Type" +msgstr "Cineál Comhpháirte" + +msgid "Normalized" +msgstr "Normalaithe" + +msgid "Count" +msgstr "Comhaireamh" + +msgid "Accessor Type" +msgstr "Cineál Accessor" + +msgid "Min" +msgstr "Min" + +msgid "Max" +msgstr "Uasmhéid" + +msgid "Sparse Count" +msgstr "Líon Tanaí" + +msgid "Sparse Indices Buffer View" +msgstr "Amharc Maolánach Innéacsanna Tanaí" + +msgid "Sparse Indices Byte Offset" +msgstr "Innéacsanna Sparse Fritháireamh Beart" + +msgid "Sparse Indices Component Type" +msgstr "Innéacsanna Sparse Cineál Comhpháirte" + +msgid "Sparse Values Buffer View" +msgstr "Amharc Maolánach Luachanna Tanaí" + +msgid "Sparse Values Byte Offset" +msgstr "Luachanna Sparse Fritháireamh Beart" + +msgid "Original Name" +msgstr "Ainm Bunaidh" + +msgid "Loop" +msgstr "Lúb" + +msgid "Buffer" +msgstr "Maolán" + +msgid "Byte Length" +msgstr "Fad Beart" + +msgid "Byte Stride" +msgstr "Beart Stride" + +msgid "Indices" +msgstr "Leideanna" + +msgid "Vertex Attributes" +msgstr "Tréithe Vertex" + +msgid "Perspective" +msgstr "Dearcadh" + +msgid "FOV" +msgstr "FOVName" + +msgid "Size Mag" +msgstr "Méid Mag" + +msgid "Depth Far" +msgstr "Doimhneacht i bhfad" + +msgid "Depth Near" +msgstr "Doimhneacht in aice" + +msgid "Blend Weights" +msgstr "Meáchain Cumaisc" + +msgid "Instance Materials" +msgstr "Ábhair Shamplacha" + +msgid "Parent" +msgstr "Tuismitheoir" + +msgid "Xform" +msgstr "XformName" + +msgid "Skin" +msgstr "Craiceann" + +msgid "Children" +msgstr "Leanaí" + +msgid "Light" +msgstr "Solas" + +msgid "Joints" +msgstr "Ailt" + +msgid "Roots" +msgstr "Fréamhacha" + +msgid "Godot Bone Node" +msgstr "Nód Cnámh Godot" + +msgid "Skin Root" +msgstr "Fréamh an Chraicinn" + +msgid "Joints Original" +msgstr "Ailt Bhunaidh" + +msgid "Non Joints" +msgstr "Neamh-Ailt" + +msgid "Godot Skin" +msgstr "Craiceann Godot" + +msgid "Src Image" +msgstr "Íomhá Src" + +msgid "Sampler" +msgstr "SamplerName" + +msgid "Mag Filter" +msgstr "Scagaire MagName" + +msgid "Min Filter" +msgstr "Scagaire Min" + +msgid "Wrap S" +msgstr "Timfhilleadh S" + +msgid "Wrap T" +msgstr "Timfhilleadh T" + +msgid "Palette Min Width" +msgstr "Leithead Pailéad Min" + +msgid "Preview Size" +msgstr "Méid an Réamhamhairc" + +msgid "Editor Side" +msgstr "Taobh an Eagarthóra" + +msgid "Mesh Library" +msgstr "Leabharlann Mogalra" + +msgid "Physics Material" +msgstr "Ábhar Fisice" + +msgid "Cell" +msgstr "Cill" + +msgid "Octant Size" +msgstr "Méid ochtach" + +msgid "Center X" +msgstr "Lár X" + +msgid "Center Y" +msgstr "Lár Y" + +msgid "Center Z" +msgstr "Lár Z" + +msgid "Priority" +msgstr "Tosaíocht" + +msgid "Bake Navigation" +msgstr "Nascleanúint Bácála" + +msgid "Initial Clip" +msgstr "Gearrthóg Tosaigh" + +msgid "Clip Count" +msgstr "Líon na Gearrthóg" + +msgid "Shuffle" +msgstr "Suaitheadh" + +msgid "Fade Time" +msgstr "Am Céimnithe" + +msgid "Stream Count" +msgstr "Líon na Sruthanna" + +msgid "Lightmapping" +msgstr "Mapáil solais" + +msgid "Bake Quality" +msgstr "Cáilíocht Bácála" + +msgid "Low Quality Ray Count" +msgstr "Líon Gathanna ar Chaighdeán Íseal" + +msgid "Medium Quality Ray Count" +msgstr "Líon Gathanna Meáncháilíochta" + +msgid "High Quality Ray Count" +msgstr "Líon Ray Ardchaighdeáin" + +msgid "Ultra Quality Ray Count" +msgstr "Líon Ray Cáilíochta Ultra" + +msgid "Bake Performance" +msgstr "Feidhmíocht Bácála" + +msgid "Max Rays per Pass" +msgstr "Ghathanna Max in aghaidh an Phas" + +msgid "Region Size" +msgstr "Méid an Réigiúin" + +msgid "Low Quality Probe Ray Count" +msgstr "Líon Ray Probe Cáilíochta Íseal" + +msgid "Medium Quality Probe Ray Count" +msgstr "Líon Ray Probe Meáncháilíochta" + +msgid "High Quality Probe Ray Count" +msgstr "Líon Ray Probe Ardchaighdeáin" + +msgid "Ultra Quality Probe Ray Count" +msgstr "Líon Ray Probe Cáilíochta Ultra" + +msgid "Max Rays per Probe Pass" +msgstr "Max Ghathanna in aghaidh an Probe Pass" + +msgid "Denoising" +msgstr "Dífuaimiú" + +msgid "Denoiser" +msgstr "DenoiserName" + +msgid "BPM" +msgstr "BPM" + +msgid "Beat Count" +msgstr "Líon na mBuillí" + +msgid "Bar Beats" +msgstr "Buillí Barra" + +msgid "Loop Offset" +msgstr "Fritháireamh Lúb" + +msgid "Eye Height" +msgstr "Airde na Súl" + +msgid "IOD" +msgstr "IAIDÍN" + +msgid "Display Width" +msgstr "Taispeáin Leithead" + +msgid "Display to Lens" +msgstr "Taispeáin go Lionsa" + +msgid "Offset Rect" +msgstr "Fritháireamh Rect" + +msgid "Oversample" +msgstr "Ró-shamplaigh" + +msgid "K1" +msgstr "K1GenericName" + +msgid "K2" +msgstr "K2GenericName" + +msgid "Vulkan VRS" +msgstr "Vulkan VRS" + +msgid "Min Radius" +msgstr "Ga Min" + +msgid "Spawnable Scenes" +msgstr "Radhairc Sceite" + +msgid "Spawn Path" +msgstr "Conair Sceite" + +msgid "Spawn Limit" +msgstr "Teorainn Sceite" + +msgid "Root Path" +msgstr "Fréamhchonair" + +msgid "Replication Interval" +msgstr "Eatramh Macasamhlaithe" + +msgid "Delta Interval" +msgstr "Eatramh Deilte" + +msgid "Visibility Update Mode" +msgstr "Mód Nuashonraithe Infheictheachta" + +msgid "Public Visibility" +msgstr "Infheictheacht Phoiblí" + +msgid "Auth Callback" +msgstr "Aisghlaoch Auth" + +msgid "Auth Timeout" +msgstr "Teorainn Ama Auth" + +msgid "Allow Object Decoding" +msgstr "Ceadaigh Díchódú Réada" + +msgid "Refuse New Connections" +msgstr "Diúltaigh Naisc Nua" + +msgid "Server Relay" +msgstr "Athsheachadán Freastalaí" + +msgid "Max Sync Packet Size" +msgstr "Uasmhéid an Phaicéid Shioncronaithe" + +msgid "Max Delta Packet Size" +msgstr "Max Delta Paicéad Méid" + +msgid "Noise Type" +msgstr "Cineál Torainn" + +msgid "Frequency" +msgstr "Minicíocht" + +msgid "Fractal" +msgstr "Frachtal" + +msgid "Octaves" +msgstr "Ochtáiv" + +msgid "Lacunarity" +msgstr "Lacúnachtaí" + +msgid "Gain" +msgstr "Gnóthachan" + +msgid "Weighted Strength" +msgstr "Neart Ualaithe" + +msgid "Ping Pong Strength" +msgstr "Ping pong neart" + +msgid "Cellular" +msgstr "Ceallach" + +msgid "Distance Function" +msgstr "Feidhm Fad" + +msgid "Jitter" +msgstr "JitterName" + +msgid "Return Type" +msgstr "Cineál Fillte" + +msgid "Domain Warp" +msgstr "Warp Fearainn" + +msgid "Amplitude" +msgstr "Aimplitiúid" + +msgid "Fractal Type" +msgstr "Cineál Fractal" + +msgid "Fractal Octaves" +msgstr "Ochtáiv Frachtal" + +msgid "Fractal Lacunarity" +msgstr "Lacúnachtaí Frachtal" + +msgid "Fractal Gain" +msgstr "Gnóthachan Fractal" + +msgid "Width" +msgstr "Leithead" + +msgid "Invert" +msgstr "Inbhéartaigh" + +msgid "In 3D Space" +msgstr "I Spás 3D" + +msgid "Seamless" +msgstr "Gan uaim" + +msgid "Seamless Blend Skirt" +msgstr "Sciorta cumaisc gan uaim" + +msgid "As Normal Map" +msgstr "Mar Ghnáthléarscáil" + +msgid "Bump Strength" +msgstr "Neart Bump" + +msgid "Color Ramp" +msgstr "Rampa Datha" + +msgid "Noise" +msgstr "Torann" + +msgid "Localized Name" +msgstr "Ainm Logánaithe" + +msgid "Action Type" +msgstr "Cineál Gnímh" + +msgid "Toplevel Paths" +msgstr "Cosáin Toplevel" + +msgid "Paths" +msgstr "Cosáin" + +msgid "Interaction Profile Path" +msgstr "Conair Phróifíl Idirghníomhaíochta" + +msgid "Runtime Paths" +msgstr "Cosáin Am Rith" + +msgid "Display Refresh Rate" +msgstr "Taispeáin Ráta Athnuachana" + +msgid "Render Target Size Multiplier" +msgstr "Rindreáil Iolraitheoir Spriocmhéid" + +msgid "Layer Viewport" +msgstr "Amharcphort na Sraithe" + +msgid "Sort Order" +msgstr "Ord Sórtála" + +msgid "Alpha Blend" +msgstr "Cumasc Alfa" + +msgid "Enable Hole Punch" +msgstr "Gníomhachtaigh Puncha Poill" + +msgid "Aspect Ratio" +msgstr "Cóimheas Treoíochta" + +msgid "Central Angle" +msgstr "Uillinn Lárnach" + +msgid "Fallback Segments" +msgstr "Deighleáin Fallback" + +msgid "Central Horizontal Angle" +msgstr "Uillinn Chothrománach Lárnach" + +msgid "Upper Vertical Angle" +msgstr "Uillinn Ingearach Uachtarach" + +msgid "Lower Vertical Angle" +msgstr "Uillinn Ingearach Íochtarach" + +msgid "Quad Size" +msgstr "Méid quad" + +msgid "Hand" +msgstr "Lámh" + +msgid "Motion Range" +msgstr "Raon Gluaisne" + +msgid "Hand Skeleton" +msgstr "Cnámharlach Láimhe" + +msgid "Skeleton Rig" +msgstr "Rig cnámharlaigh" + +msgid "Bone Update" +msgstr "Nuashonrú Cnámh" + +msgid "Subject" +msgstr "Ábhar" + +msgid "Names" +msgstr "Ainmneacha" + +msgid "Strings" +msgstr "Teaghráin" + +msgid "Discover Multicast If" +msgstr "Faigh amach Ilchraolacháin Má" + +msgid "Discover Local Port" +msgstr "Faigh amach an Port Áitiúil" + +msgid "Discover IPv6" +msgstr "Faigh amach IPv6" + +msgid "Description URL" +msgstr "Cur síos URL" + +msgid "Service Type" +msgstr "Cineál Seirbhíse" + +msgid "IGD Control URL" +msgstr "URL Rialaithe IGD" + +msgid "IGD Service Type" +msgstr "Cineál Seirbhíse IGD" + +msgid "IGD Our Addr" +msgstr "IGD Ár Addr" + +msgid "IGD Status" +msgstr "Stádas IGD" + +msgid "WebRTC" +msgstr "WebRTCName" + +msgid "Max Channel in Buffer (KB)" +msgstr "Max Channel i Maolán (KB)" + +msgid "Write Mode" +msgstr "Mód Scríofa" + +msgid "Supported Protocols" +msgstr "Prótacail a dtacaítear leo" + +msgid "Handshake Headers" +msgstr "Ceanntásca Handshake" + +msgid "Inbound Buffer Size" +msgstr "Méid an Mhaoláin Isteach" + +msgid "Outbound Buffer Size" +msgstr "Méid an Mhaoláin Amach" + +msgid "Handshake Timeout" +msgstr "Teorainn Ama Handshake" + +msgid "Max Queued Packets" +msgstr "Paicéid Ciúáilte Uasta" + +msgid "Session Mode" +msgstr "Mód Seisiúin" + +msgid "Required Features" +msgstr "Gnéithe Riachtanacha" + +msgid "Optional Features" +msgstr "Gnéithe Roghnacha" + +msgid "Requested Reference Space Types" +msgstr "Cineálacha Spáis Tagartha Iarrtha" + +msgid "Reference Space Type" +msgstr "Cineál Spáis Tagartha" + +msgid "Enabled Features" +msgstr "Gnéithe Cumasaithe" + +msgid "Visibility State" +msgstr "Staid Infheictheachta" + +msgid "Java SDK Path" +msgstr "Conair SDK Java" + +msgid "Android SDK Path" +msgstr "Conair SDK Android" + +msgid "Debug Keystore" +msgstr "Dífhabhtaigh Keystore" + +msgid "Debug Keystore User" +msgstr "Dífhabhtaigh Úsáideoir an tSiopa Eochrach" + +msgid "Debug Keystore Pass" +msgstr "Dífhabhtaigh Pas Keystore" + +msgid "Force System User" +msgstr "Fórsáil Úsáideoir an Chórais" + +msgid "Shutdown ADB on Exit" +msgstr "Múchadh ADB ar Scor" + +msgid "One Click Deploy Clear Previous Install" +msgstr "Cliceáil amháin Imscaradh Clear Suiteáil Roimhe Seo" + +msgid "Use Wi-Fi for Remote Debug" +msgstr "Úsáid Wi-Fi le haghaidh dífhabhtaithe cianda" + +msgid "Wi-Fi Remote Debug Host" +msgstr "Óstach Dífhabhtaithe Cianda Wi-Fi" + +msgid "Launcher Icons" +msgstr "Deilbhíní Tosaitheora" + +msgid "Main 192 X 192" +msgstr "Príomh 192 X 192" + +msgid "Adaptive Foreground 432 X 432" +msgstr "Tulra Oiriúnaitheach 432 x 432" + +msgid "Adaptive Background 432 X 432" +msgstr "Cúlra oiriúnaitheach 432 x 432" + +msgid "Gradle Build" +msgstr "Tógáil Gradle" + +msgid "Use Gradle Build" +msgstr "Úsáid Tógáil Gradle" + +msgid "Gradle Build Directory" +msgstr "Comhadlann Tógála Gradle" + +msgid "Android Source Template" +msgstr "Teimpléad Foinse Android" + +msgid "Compress Native Libraries" +msgstr "Comhbhrúigh Leabharlanna Dúchasacha" + +msgid "Export Format" +msgstr "Easpórtáil Formáid" + +msgid "Min SDK" +msgstr "Min SDK" + +msgid "Target SDK" +msgstr "Sprioc SDK" + +msgid "Plugins" +msgstr "Breiseáin" + +msgid "Architectures" +msgstr "Ailtireacht" + +msgid "Keystore" +msgstr "Siopa Eochrach" + +msgid "Debug User" +msgstr "Úsáideoir Dífhabhtaithe" + +msgid "Debug Password" +msgstr "Dífhabhtaigh Pasfhocal" + +msgid "Release User" +msgstr "Úsáideoir Scaoilte" + +msgid "Release Password" +msgstr "Pasfhocal Scaoilte" + +msgid "Code" +msgstr "Cód" + +msgid "Package" +msgstr "Pacáiste" + +msgid "Unique Name" +msgstr "Ainm Uathúil" + +msgid "Signed" +msgstr "Sínithe" + +msgid "App Category" +msgstr "Catagóir App" + +msgid "Retain Data on Uninstall" +msgstr "Coinnigh Sonraí ar Dhíshuiteáil" + +msgid "Exclude From Recents" +msgstr "Eisiamh ó Déanaí" + +msgid "Show in Android TV" +msgstr "Taispeáin i Android TV" + +msgid "Show in App Library" +msgstr "Taispeáin sa Leabharlann Aipeanna" + +msgid "Show as Launcher App" +msgstr "Taispeáin mar Fheidhmchlár Tosaitheoir" + +msgid "Graphics" +msgstr "Grafaic" + +msgid "OpenGL Debug" +msgstr "Dífhabhtú OpenGL" + +msgid "XR Features" +msgstr "Gnéithe XR" + +msgid "XR Mode" +msgstr "Mód XR" + +msgid "Immersive Mode" +msgstr "Mód tumtha" + +msgid "Support Small" +msgstr "Tacú le Fiontair Bheaga" + +msgid "Support Normal" +msgstr "Tacaíocht Gnáth" + +msgid "Support Large" +msgstr "Tacaíocht Mór" + +msgid "Support Xlarge" +msgstr "Tacaíocht Xlarge" + +msgid "User Data Backup" +msgstr "Cúltaca Sonraí Úsáideora" + +msgid "Allow" +msgstr "Ceadaigh" + +msgid "Command Line" +msgstr "Líne na nOrduithe" + +msgid "Extra Args" +msgstr "Args Breise" + +msgid "APK Expansion" +msgstr "Leathnú APK" + +msgid "Salt" +msgstr "Salann" + +msgid "Public Key" +msgstr "Eochair Phoiblí" + +msgid "Permissions" +msgstr "Ceadanna" + +msgid "Custom Permissions" +msgstr "Ceadanna Saincheaptha" + +msgid "iOS Deploy" +msgstr "iOS Imscaradh" + +msgid "Icons" +msgstr "Deilbhíní" + +msgid "iPhone 120 X 120" +msgstr "iPhone 120 X 120" + +msgid "iPhone 180 X 180" +msgstr "iPhone 180 × 180" + +msgid "iPad 76 X 76" +msgstr "iPad 76 X 76" + +msgid "iPad 152 X 152" +msgstr "iPad 152 X 152" + +msgid "iPad 167 X 167" +msgstr "iPad 167 X 167" + +msgid "App Store 1024 X 1024" +msgstr "Siopa Aipeanna 1024 X 1024" + +msgid "Spotlight 40 X 40" +msgstr "Spotsolas 40 X 40" + +msgid "Spotlight 80 X 80" +msgstr "Spotsolas 80 X 80" + +msgid "Settings 58 X 58" +msgstr "Socruithe 58 x 58" + +msgid "Settings 87 X 87" +msgstr "Socruithe 87 x 87" + +msgid "Notification 40 X 40" +msgstr "Fógra 40 X 40" + +msgid "Notification 60 X 60" +msgstr "Fógra 60 X 60" + +msgid "App Store Team ID" +msgstr "Aitheantas Foirne App Store" + +msgid "Provisioning Profile UUID Debug" +msgstr "Próifíl Soláthair UUID Dífhabhtaithe" + +msgid "Code Sign Identity Debug" +msgstr "Dífhabhtú Aitheantais Chomharthaigh an Chóid" + +msgid "Export Method Debug" +msgstr "Easpórtáil Modh Dífhabhtaithe" + +msgid "Provisioning Profile UUID Release" +msgstr "Próifíl Soláthair Scaoileadh UUID" + +msgid "Code Sign Identity Release" +msgstr "Scaoileadh Aitheantais Comhartha Cóid" + +msgid "Export Method Release" +msgstr "Scaoileadh modh easpórtála" + +msgid "Targeted Device Family" +msgstr "Teaghlach Gléas Spriocdhírithe" + +msgid "Bundle Identifier" +msgstr "Aitheantóir Cuachta" + +msgid "Signature" +msgstr "Síniú" + +msgid "Short Version" +msgstr "Leagan Gearr" + +msgid "Min iOS Version" +msgstr "Leagan Min iOS" + +msgid "Additional Plist Content" +msgstr "Ábhar Plist Breise" + +msgid "Icon Interpolation" +msgstr "Idirshuíomh Deilbhíní" + +msgid "Export Project Only" +msgstr "Easpórtáil Tionscadal Amháin" + +msgid "Delete Old Export Files Unconditionally" +msgstr "Scrios Seanchomhaid Easpórtála gan choinníoll" + +msgid "Generate Simulator Library If Missing" +msgstr "Gin Leabharlann Insamhlóir má tá sí ar iarraidh" + +msgid "Capabilities" +msgstr "Cumais" + +msgid "Access Wi-Fi" +msgstr "Rochtain Wi-Fi" + +msgid "Push Notifications" +msgstr "Fógraí Brú" + +msgid "Performance Gaming Tier" +msgstr "Sraith Cearrbhachais Feidhmíochta" + +msgid "Performance A 12" +msgstr "Feidhmíocht A 12" + +msgid "User Data" +msgstr "Sonraí Úsáideora" + +msgid "Accessible From Files App" +msgstr "Inrochtana ó chomhaid app" + +msgid "Accessible From iTunes Sharing" +msgstr "Inrochtana ó iTunes Roinnt" + +msgid "Privacy" +msgstr "Príobháideachas" + +msgid "Camera Usage Description" +msgstr "Cur Síos ar Úsáid an Cheamara" + +msgid "Camera Usage Description Localized" +msgstr "Cur síos ar Úsáid an Cheamara Logánaithe" + +msgid "Microphone Usage Description" +msgstr "Cur Síos ar Úsáid Micreafón" + +msgid "Microphone Usage Description Localized" +msgstr "Cur síos ar Úsáid Micreafón Logánaithe" + +msgid "Photolibrary Usage Description" +msgstr "Cur Síos ar Úsáid Photolibrary" + +msgid "Photolibrary Usage Description Localized" +msgstr "Cur Síos ar Úsáid Photolibrary Logánaithe" + +msgid "Tracking Enabled" +msgstr "Rianú Cumasaithe" + +msgid "Tracking Domains" +msgstr "Fearainn Rianaithe" + +msgid "Storyboard" +msgstr "Clár scéalaíochta" + +msgid "Image Scale Mode" +msgstr "Mód Scála Íomhá" + +msgid "Custom Image @2x" +msgstr "Íomhá Saincheaptha @2x" + +msgid "Custom Image @3x" +msgstr "Íomhá Saincheaptha @3x" + +msgid "Use Custom BG Color" +msgstr "Úsáid Dath Saincheaptha BG" + +msgid "Custom BG Color" +msgstr "Dath Saincheaptha BG" + +msgid "Architecture" +msgstr "Ailtireacht" + +msgid "SSH Remote Deploy" +msgstr "SSH Imscaradh cianda" + +msgid "Extra Args SSH" +msgstr "Args Breise SSH" + +msgid "Extra Args SCP" +msgstr "Args Breise SCP" + +msgid "Run Script" +msgstr "Rith Script" + +msgid "Cleanup Script" +msgstr "Glanadh Script" + +msgid "macOS" +msgstr "macOS" + +msgid "rcodesign" +msgstr "rcodesign" + +msgid "Distribution Type" +msgstr "Cineál Dáilte" + +msgid "Copyright Localized" +msgstr "Cóipcheart Logánaithe" + +msgid "Min macOS Version" +msgstr "Leagan Min macOS" + +msgid "Export Angle" +msgstr "Easpórtáil Uillinn" + +msgid "High Res" +msgstr "Ard-Res" + +msgid "Xcode" +msgstr "XcodeGenericName" + +msgid "Platform Build" +msgstr "Tógáil Ardáin" + +msgid "SDK Version" +msgstr "Leagan SDK" + +msgid "SDK Build" +msgstr "Tógáil SDK" + +msgid "SDK Name" +msgstr "Ainm SDK" + +msgid "Xcode Version" +msgstr "Leagan Xcode" + +msgid "Xcode Build" +msgstr "Tógáil XcodeName" + +msgid "Codesign" +msgstr "Comhdhearadh" + +msgid "Installer Identity" +msgstr "Aitheantas suiteálaí" + +msgid "Apple Team ID" +msgstr "Aitheantas Foirne Apple" + +msgid "Identity" +msgstr "Aitheantas" + +msgid "Certificate File" +msgstr "Comhad Teastais" + +msgid "Certificate Password" +msgstr "Pasfhocal an Teastais" + +msgid "Provisioning Profile" +msgstr "Próifíl Soláthair" + +msgid "Entitlements" +msgstr "Teidlíochtaí" + +msgid "Custom File" +msgstr "Comhad Saincheaptha" + +msgid "Allow JIT Code Execution" +msgstr "Ceadaigh Forghníomhú Cód JIT" + +msgid "Allow Unsigned Executable Memory" +msgstr "Ceadaigh cuimhne inrite gan síniú" + +msgid "Allow Dyld Environment Variables" +msgstr "Ceadaigh Athróga Timpeallachta Dyld" + +msgid "Disable Library Validation" +msgstr "Díchumasaigh Bailíochtú Leabharlainne" + +msgid "Audio Input" +msgstr "Ionchur Fuaime" + +msgid "Address Book" +msgstr "Leabhar Seoltaí" + +msgid "Calendars" +msgstr "Féilirí" + +msgid "Photos Library" +msgstr "Leabharlann na nGrianghraf" + +msgid "Apple Events" +msgstr "Imeachtaí Apple" + +msgid "Debugging" +msgstr "Dífhabhtú" + +msgid "App Sandbox" +msgstr "Bosca Gainimh App" + +msgid "Network Server" +msgstr "Freastalaí Líonra" + +msgid "Network Client" +msgstr "Cliant Líonra" + +msgid "Device USB" +msgstr "Gléas USB" + +msgid "Device Bluetooth" +msgstr "Bluetooth Gléas" + +msgid "Files Downloads" +msgstr "Íoslódálacha Comhad" + +msgid "Files Pictures" +msgstr "Pictiúir Comhaid" + +msgid "Files Music" +msgstr "Ceol Comhaid" + +msgid "Files Movies" +msgstr "Scannáin Comhaid" + +msgid "Files User Selected" +msgstr "Comhad Úsáideoir Roghnaithe" + +msgid "Helper Executables" +msgstr "Inrite Cúntóirí" + +msgid "Custom Options" +msgstr "Roghanna Saincheaptha" + +msgid "Notarization" +msgstr "Nodaireacht" + +msgid "Apple ID Name" +msgstr "Ainm Aitheantais Apple" + +msgid "Apple ID Password" +msgstr "Pasfhocal ID Apple" + +msgid "API UUID" +msgstr "API UUID" + +msgid "API Key" +msgstr "Eochair API" + +msgid "API Key ID" +msgstr "Aitheantas Eochrach API" + +msgid "Location Usage Description" +msgstr "Cur Síos ar Úsáid Suímh" + +msgid "Location Usage Description Localized" +msgstr "Cur Síos ar Úsáid Suímh Logánaithe" + +msgid "Address Book Usage Description" +msgstr "Cur Síos ar Úsáid an Leabhair Seoltaí" + +msgid "Address Book Usage Description Localized" +msgstr "Cur Síos ar Úsáid Leabhar Seoltaí Logánaithe" + +msgid "Calendar Usage Description" +msgstr "Cur Síos ar Úsáid Féilire" + +msgid "Calendar Usage Description Localized" +msgstr "Cur Síos ar Úsáid Féilire Logánaithe" + +msgid "Photos Library Usage Description" +msgstr "Grianghraif Cur Síos ar Úsáid na Leabharlainne" + +msgid "Photos Library Usage Description Localized" +msgstr "Grianghraif Cur Síos ar Úsáid na Leabharlainne Logánaithe" + +msgid "Desktop Folder Usage Description" +msgstr "Cur Síos ar Úsáid Fillteán Deisce" + +msgid "Desktop Folder Usage Description Localized" +msgstr "Cur síos ar úsáid fillteán deisce logánaithe" + +msgid "Documents Folder Usage Description" +msgstr "Cur Síos ar Úsáid Fillteán Doiciméad" + +msgid "Documents Folder Usage Description Localized" +msgstr "Doiciméid Cur Síos ar Úsáid Fillteán Logánaithe" + +msgid "Downloads Folder Usage Description" +msgstr "Cur Síos ar Úsáid Fillteán Íoslódálacha" + +msgid "Downloads Folder Usage Description Localized" +msgstr "Íoslódálacha Cur Síos ar Úsáid Fillteán Logánaithe" + +msgid "Network Volumes Usage Description" +msgstr "Cur Síos ar Úsáid Imleabhair Líonra" + +msgid "Network Volumes Usage Description Localized" +msgstr "Cur síos ar úsáid imleabhair líonra logánaithe" + +msgid "Removable Volumes Usage Description" +msgstr "Cur Síos ar Úsáid Imleabhair Inbhainte" + +msgid "Removable Volumes Usage Description Localized" +msgstr "Inbhainte Imleabhair Cur síos Úsáid Logánaithe" + +msgid "Web" +msgstr "Gréasán" + +msgid "HTTP Host" +msgstr "Óstach HTTP" + +msgid "HTTP Port" +msgstr "HTTP Port" + +msgid "Use TLS" +msgstr "Úsáid TLS" + +msgid "TLS Key" +msgstr "Eochair TLS" + +msgid "TLS Certificate" +msgstr "Teastas TLS" + +msgid "Variant" +msgstr "Malairt" + +msgid "Extensions Support" +msgstr "Tacaíocht Síntí" + +msgid "Thread Support" +msgstr "Tacaíocht Snáithe" + +msgid "VRAM Texture Compression" +msgstr "Comhbhrú Uigeachta VRAM" + +msgid "For Desktop" +msgstr "Don Deasc" + +msgid "For Mobile" +msgstr "Le haghaidh Soghluaiste" + +msgid "HTML" +msgstr "HTML" + +msgid "Export Icon" +msgstr "Easpórtáil Deilbhín" + +msgid "Custom HTML Shell" +msgstr "Blaosc Saincheaptha HTML" + +msgid "Head Include" +msgstr "Ceann san áireamh" + +msgid "Canvas Resize Policy" +msgstr "Polasaí Athraigh Méid an Chanbháis" + +msgid "Focus Canvas on Start" +msgstr "Fócas Canbhás ar Tosaigh" + +msgid "Experimental Virtual Keyboard" +msgstr "Méarchlár Fíorúil Turgnamhach" + +msgid "Progressive Web App" +msgstr "Aip Gréasáin Fhorásach" + +msgid "Ensure Cross Origin Isolation Headers" +msgstr "Cinntigh Ceanntásca Leithlisithe Tras-Tionscnaimh" + +msgid "Offline Page" +msgstr "Leathanach As Líne" + +msgid "Icon 144 X 144" +msgstr "Deilbhín 144 X 144" + +msgid "Icon 180 X 180" +msgstr "Deilbhín 180 X 180" + +msgid "Icon 512 X 512" +msgstr "Deilbhín 512 X 512" + +msgid "Windows" +msgstr "Windows" + +msgid "rcedit" +msgstr "RCEDITName" + +msgid "signtool" +msgstr "SigntoolName" + +msgid "osslsigncode" +msgstr "Osslsigncode" + +msgid "wine" +msgstr "fíon" + +msgid "Identity Type" +msgstr "Cineál Aitheantais" + +msgid "Timestamp" +msgstr "Stampa Ama" + +msgid "Timestamp Server URL" +msgstr "URL an Fhreastalaí Stampa Ama" + +msgid "Digest Algorithm" +msgstr "Algartam Díolama" + +msgid "Modify Resources" +msgstr "Mionathraigh Acmhainní" + +msgid "Console Wrapper Icon" +msgstr "Deilbhín fillteán consóil" + +msgid "File Version" +msgstr "Leagan Comhaid" + +msgid "Product Version" +msgstr "Leagan Táirge" + +msgid "Company Name" +msgstr "Ainm na Cuideachta" + +msgid "Product Name" +msgstr "Ainm Táirge" + +msgid "File Description" +msgstr "Cur Síos ar an gComhad" + +msgid "Trademarks" +msgstr "Trádmharcanna" + +msgid "Export D3D12" +msgstr "Easpórtáil D3D12" + +msgid "D3D12 Agility SDK Multiarch" +msgstr "D3D12 Aclaíocht SDK Multiarch" + +msgid "Sprite Frames" +msgstr "Frámaí Sprite" + +msgid "Frame" +msgstr "Fráma" + +msgid "Speed Scale" +msgstr "Scála Luais" + +msgid "Centered" +msgstr "Láraithe" + +msgid "Flip H" +msgstr "Smeach H" + +msgid "Flip V" +msgstr "Smeach V" + +msgid "Current" +msgstr "Reatha" + +msgid "Volume dB" +msgstr "Imleabhar dB" + +msgid "Pitch Scale" +msgstr "Scála Páirce" + +msgid "Playing" +msgstr "Ag imirt" + +msgid "Autoplay" +msgstr "Uathsheinn" + +msgid "Stream Paused" +msgstr "Sruth ar Sos" + +msgid "Max Distance" +msgstr "Fad Uasta" + +msgid "Attenuation" +msgstr "Maolú" + +msgid "Max Polyphony" +msgstr "Uasmhéid Polafónachta" + +msgid "Panning Strength" +msgstr "Neart Panning" + +msgid "Bus" +msgstr "Bus" + +msgid "Area Mask" +msgstr "Masc Ceantair" + +msgid "Playback Type" +msgstr "Cineál Athsheinm" + +msgid "Copy Mode" +msgstr "Mód Cóipeála" + +msgid "Anchor Mode" +msgstr "Mód Ancaire" + +msgid "Ignore Rotation" +msgstr "Déan neamhaird den rothlú" + +msgid "Process Callback" +msgstr "Aisghlaoch Próisis" + +msgid "Left" +msgstr "Ar chlé" + +msgid "Top" +msgstr "Barr" + +msgid "Right" +msgstr "Ceart" + +msgid "Bottom" +msgstr "Bun" + +msgid "Smoothed" +msgstr "Smúdáilte" + +msgid "Position Smoothing" +msgstr "Smúdú Suímh" + +msgid "Rotation Smoothing" +msgstr "Smúdú Rothlaithe" + +msgid "Drag" +msgstr "Tarraing" + +msgid "Horizontal Enabled" +msgstr "Cothrománach Cumasaithe" + +msgid "Vertical Enabled" +msgstr "Cumasaithe go hIngearach" + +msgid "Horizontal Offset" +msgstr "Fritháireamh Cothrománach" + +msgid "Vertical Offset" +msgstr "Fritháireamh Ingearach" + +msgid "Left Margin" +msgstr "Imeall Ar Chlé" + +msgid "Top Margin" +msgstr "Imeall Barr" + +msgid "Right Margin" +msgstr "Imeall Ar Dheis" + +msgid "Bottom Margin" +msgstr "Imeall Bun" + +msgid "Draw Screen" +msgstr "Dear Scáileán" + +msgid "Draw Limits" +msgstr "Teorainneacha Tarraingthe" + +msgid "Draw Drag Margin" +msgstr "Tarraing Imeall Tarraingthe" + +msgid "Tweaks" +msgstr "TweaksName" + +msgid "Fit Margin" +msgstr "Imeall Oiriúnach" + +msgid "Clear Margin" +msgstr "Glan Imeall" + +msgid "Use Mipmaps" +msgstr "Úsáid Mipmaps" + +msgid "Emitting" +msgstr "Astú" + +msgid "Lifetime" +msgstr "Saol" + +msgid "One Shot" +msgstr "Urchar Amháin" + +msgid "Preprocess" +msgstr "Réamhphróiseáil" + +msgid "Explosiveness" +msgstr "Pléascán" + +msgid "Randomness" +msgstr "Randamacht" + +msgid "Lifetime Randomness" +msgstr "Randamacht Saoil" + +msgid "Fixed FPS" +msgstr "FPS Seasta" + +msgid "Fract Delta" +msgstr "Delta Frachtal" + +msgid "Drawing" +msgstr "Líníocht" + +msgid "Local Coords" +msgstr "Coordaigh Áitiúla" + +msgid "Draw Order" +msgstr "Ordú Tarraingthe" + +msgid "Emission Shape" +msgstr "Stencils" + +msgid "Shape" +msgstr "Cruth" + +msgid "Sphere Radius" +msgstr "Ga Sféar" + +msgid "Rect Extents" +msgstr "Fairsinge Rect" + +msgid "Points" +msgstr "Pointí" + +msgid "Normals" +msgstr "Gnáth" + +msgid "Colors" +msgstr "Dathanna" + +msgid "Particle Flags" +msgstr "Bratacha na gCáithníní" + +msgid "Align Y" +msgstr "Ailínigh Y" + +msgid "Direction" +msgstr "Treo" + +msgid "Spread" +msgstr "Scaip" + +msgid "Gravity" +msgstr "Domhantarraingt" + +msgid "Initial Velocity" +msgstr "Treoluas Tosaigh" + +msgid "Velocity Min" +msgstr "Treoluas Min" + +msgid "Velocity Max" +msgstr "Treoluas Max" + +msgid "Velocity Curve" +msgstr "Cuar treoluais" + +msgid "Orbit Velocity" +msgstr "Treoluas na Fithise" + +msgid "Linear Accel" +msgstr "Líneach Accel" + +msgid "Accel Min" +msgstr "Luasghéarú Íosta" + +msgid "Accel Max" +msgstr "Luasghéarú Uasmhéid" + +msgid "Accel Curve" +msgstr "Cuar Accel" + +msgid "Radial Accel" +msgstr "Accel Gathacha" + +msgid "Tangential Accel" +msgstr "Accel Tadhlaíocha" + +msgid "Damping" +msgstr "Díonadh" + +msgid "Damping Min" +msgstr "Díonadh Íosmhéid" + +msgid "Damping Max" +msgstr "Díonadh Uasmhéid" + +msgid "Damping Curve" +msgstr "Cuar Damping" + +msgid "Angle" +msgstr "Uillinn" + +msgid "Angle Min" +msgstr "Uillinn Min" + +msgid "Angle Max" +msgstr "Uillinn Max" + +msgid "Angle Curve" +msgstr "Cuar Uillinne" + +msgid "Scale Amount Min" +msgstr "Scála Méid Min" + +msgid "Scale Amount Max" +msgstr "Scála Méid Uasta" + +msgid "Scale Amount Curve" +msgstr "Scála Méid Cuar" + +msgid "Split Scale" +msgstr "Scála Scoilte" + +msgid "Scale Curve X" +msgstr "Scálaigh Cuar X" + +msgid "Scale Curve Y" +msgstr "Scálaigh Cuar Y" + +msgid "Color Initial Ramp" +msgstr "Rampa Tosaigh Datha" + +msgid "Hue Variation" +msgstr "Athrú Lí" + +msgid "Variation Min" +msgstr "Athrú Min" + +msgid "Variation Max" +msgstr "Athrú Max" + +msgid "Variation Curve" +msgstr "Cuar Athraithe" + +msgid "Speed Min" +msgstr "Luas Min" + +msgid "Speed Max" +msgstr "Luas Max" + +msgid "Speed Curve" +msgstr "Cuar Luais" + +msgid "Offset Min" +msgstr "Fritháireamh Min" + +msgid "Offset Max" +msgstr "Fritháireamh Max" + +msgid "Offset Curve" +msgstr "Fritháireamh an Chuar" + +msgid "Amount Ratio" +msgstr "Cóimheas Méide" + +msgid "Sub Emitter" +msgstr "Fo-Astaír" + +msgid "Process Material" +msgstr "Ábhar Próisis" + +msgid "Interpolate" +msgstr "Idirshuíomh" + +msgid "Interp to End" +msgstr "Interp go Deireadh" + +msgid "Base Size" +msgstr "Bunmhéid" + +msgid "Visibility Rect" +msgstr "Rect Infheictheachta" + +msgid "Trails" +msgstr "Cosáin" + +msgid "Sections" +msgstr "Rannóga" + +msgid "Section Subdivisions" +msgstr "Foranna Rannóige" + +msgid "Editor Only" +msgstr "Eagarthóir Amháin" + +msgid "Energy" +msgstr "Fuinneamh" + +msgid "Blend Mode" +msgstr "Mód Cumaisc" + +msgid "Z Min" +msgstr "Le min" + +msgid "Z Max" +msgstr "Le Max" + +msgid "Layer Min" +msgstr "Sraith Min" + +msgid "Layer Max" +msgstr "Sraith Max" + +msgid "Item Cull Mask" +msgstr "Masc Cuileann Míre" + +msgid "Shadow" +msgstr "Scáth" + +msgid "Filter Smooth" +msgstr "Scag Go Réidh" + +msgid "Texture Scale" +msgstr "Scála Uigeachta" + +msgid "Closed" +msgstr "Dúnta" + +msgid "Cull Mode" +msgstr "Mód Cuil" + +msgid "SDF Collision" +msgstr "Imbhualadh SDF" + +msgid "Occluder Light Mask" +msgstr "Masc Solais Occluder" + +msgid "Width Curve" +msgstr "Cuar Leithead" + +msgid "Default Color" +msgstr "Dath Réamhshocraithe" + +msgid "Fill" +msgstr "Líon" + +msgid "Gradient" +msgstr "Grádán" + +msgid "Texture Mode" +msgstr "Mód Uigeachta" + +msgid "Capping" +msgstr "Uasteorannú" + +msgid "Joint Mode" +msgstr "Mód Comhpháirteach" + +msgid "Begin Cap Mode" +msgstr "Tosaigh Mód Caipín" + +msgid "End Cap Mode" +msgstr "Mód Caipín Deiridh" + +msgid "Border" +msgstr "Teorainn" + +msgid "Sharp Limit" +msgstr "Teorainn ghéar" + +msgid "Round Precision" +msgstr "Cruinneas Babhta" + +msgid "Antialiased" +msgstr "Gan laige" + +msgid "Gizmo Extents" +msgstr "Fairsinge Gizmo" + +msgid "Multimesh" +msgstr "MultimeshName" + +msgid "Pathfinding" +msgstr "Fionnadh Bealaigh" + +msgid "Path Desired Distance" +msgstr "Fad atá ag teastáil ón gcosán" + +msgid "Target Desired Distance" +msgstr "Sprioc Fad atá ag teastáil" + +msgid "Path Max Distance" +msgstr "Conair Max Fad" + +msgid "Navigation Layers" +msgstr "Sraitheanna Nascleanúna" + +msgid "Pathfinding Algorithm" +msgstr "Algartam Pathfinding" + +msgid "Path Postprocessing" +msgstr "Postphróiseáil Cosán" + +msgid "Path Metadata Flags" +msgstr "Bratacha Meiteashonraí an Chosáin" + +msgid "Simplify Path" +msgstr "Simpligh an Cosán" + +msgid "Simplify Epsilon" +msgstr "Simpligh Epsilon" + +msgid "Avoidance" +msgstr "Seachaint" + +msgid "Avoidance Enabled" +msgstr "Seachaint Cumasaithe" + +msgid "Neighbor Distance" +msgstr "Fad na gcomharsan" + +msgid "Max Neighbors" +msgstr "Max Comharsana" + +msgid "Time Horizon Agents" +msgstr "Gníomhairí Time Horizon" + +msgid "Time Horizon Obstacles" +msgstr "Constaicí Léaslíne Ama" + +msgid "Max Speed" +msgstr "Luas Uasta" + +msgid "Avoidance Layers" +msgstr "Sraitheanna Seachanta" + +msgid "Avoidance Mask" +msgstr "Masc Seachanta" + +msgid "Avoidance Priority" +msgstr "Tosaíocht Seachanta" + +msgid "Use Custom" +msgstr "Úsáid Saincheaptha" + +msgid "Path Custom Color" +msgstr "Dath Saincheaptha an Chosáin" + +msgid "Path Custom Point Size" +msgstr "Conair Custom Point Size" + +msgid "Path Custom Line Width" +msgstr "Leithead Líne Saincheaptha Cosán" + +msgid "Bidirectional" +msgstr "Déthreo" + +msgid "Start Position" +msgstr "Tosaigh an tIonad" + +msgid "End Position" +msgstr "Ionad Deiridh" + +msgid "Enter Cost" +msgstr "Cuir isteach Costas" + +msgid "Travel Cost" +msgstr "Costas Taistil" + +msgid "Vertices" +msgstr "VerticesName" + +msgid "NavigationMesh" +msgstr "NascleanúintMesh" + +msgid "Affect Navigation Mesh" +msgstr "Tionchar a imirt ar mhogall nascleanúna" + +msgid "Carve Navigation Mesh" +msgstr "Mogalra Nascleanúna Carve" + +msgid "Navigation Polygon" +msgstr "Polagán Nascleanúna" + +msgid "Use Edge Connections" +msgstr "Úsáid Naisc Ciumhais" + +msgid "Skew" +msgstr "Sceabhach" + +msgid "Scroll Scale" +msgstr "Scrollaigh Scála" + +msgid "Scroll Offset" +msgstr "Fritháireamh Scrollaigh" + +msgid "Repeat" +msgstr "Athdhéan" + +msgid "Repeat Size" +msgstr "Athdhéan Méid" + +msgid "Autoscroll" +msgstr "Uathscrollaigh" + +msgid "Repeat Times" +msgstr "Amanna Athdhéanta" + +msgid "Begin" +msgstr "Tosaigh" + +msgid "End" +msgstr "Deireadh" + +msgid "Follow Viewport" +msgstr "Lean Viewport" + +msgid "Ignore Camera Scroll" +msgstr "Ceamara Scrollaigh na mBan" + +msgid "Screen Offset" +msgstr "Fritháireamh Scáileáin" + +msgid "Scroll" +msgstr "Scrollaigh" + +msgid "Base Offset" +msgstr "Fritháireamh Bonn" + +msgid "Base Scale" +msgstr "Bunscála" + +msgid "Limit Begin" +msgstr "Teorainn Tosaigh" + +msgid "Limit End" +msgstr "Deireadh Teorann" + +msgid "Ignore Camera Zoom" +msgstr "Déan neamhaird de Zúmáil an Cheamara" + +msgid "Motion" +msgstr "Tairiscint" + +msgid "Mirroring" +msgstr "Scáthánú" + +msgid "Curve" +msgstr "Cuar" + +msgid "Progress" +msgstr "Dul chun cinn" + +msgid "Progress Ratio" +msgstr "Cóimheas Dul Chun Cinn" + +msgid "H Offset" +msgstr "Fritháireamh H" + +msgid "V Offset" +msgstr "V Fritháireamh" + +msgid "Rotates" +msgstr "Rothlaigh" + +msgid "Cubic Interp" +msgstr "Interp Ciúbach" + +msgid "Sync to Physics" +msgstr "Sioncronú leis an bhFisic" + +msgid "Monitoring" +msgstr "Monatóireacht" + +msgid "Monitorable" +msgstr "Inmhonatóirithe" + +msgid "Space Override" +msgstr "Sáraíocht Spáis" + +msgid "Point" +msgstr "Pointe" + +msgid "Point Unit Distance" +msgstr "Fad Aonad Pointe" + +msgid "Point Center" +msgstr "Ionad Pointe" + +msgid "Linear Damp" +msgstr "Taise Líneach" + +msgid "Angular Damp" +msgstr "Taise uilleach" + +msgid "Audio Bus" +msgstr "Bus Fuaime" + +msgid "Motion Mode" +msgstr "Mód Gluaisne" + +msgid "Up Direction" +msgstr "Treo Suas" + +msgid "Slide on Ceiling" +msgstr "Sleamhnaigh ar an tSíleáil" + +msgid "Wall Min Slide Angle" +msgstr "Uillinn Sleamhnáin Wall Min" + +msgid "Floor" +msgstr "Urlár" + +msgid "Stop on Slope" +msgstr "Stop ar Fhána" + +msgid "Constant Speed" +msgstr "Luas Tairiseach" + +msgid "Block on Wall" +msgstr "Bloc ar Bhalla" + +msgid "Max Angle" +msgstr "Uillinn Uasta" + +msgid "Snap Length" +msgstr "Fad Léime" + +msgid "Moving Platform" +msgstr "Ardán Gluaiste" + +msgid "On Leave" +msgstr "Ar Saoire" + +msgid "Floor Layers" +msgstr "Sraitheanna Urláir" + +msgid "Wall Layers" +msgstr "Sraitheanna Balla" + +msgid "Safe Margin" +msgstr "Imeall Sábháilte" + +msgid "Disable Mode" +msgstr "Díchumasaigh Mód" + +msgid "Pickable" +msgstr "Inroghnaithe" + +msgid "Build Mode" +msgstr "Mód Tógála" + +msgid "Disabled" +msgstr "Díchumasaithe" + +msgid "One Way Collision" +msgstr "Imbhualadh AonTreo" + +msgid "One Way Collision Margin" +msgstr "Imeall Imbhuailtí Aon-Bhealach" + +msgid "Debug Color" +msgstr "Dífhabhtaigh Dath" + +msgid "Length" +msgstr "Fad" + +msgid "Rest Length" +msgstr "Fad Scíthe" + +msgid "Stiffness" +msgstr "Righin" + +msgid "Initial Offset" +msgstr "Fritháireamh Tosaigh" + +msgid "Node A" +msgstr "Nód A" + +msgid "Node B" +msgstr "Nód B" + +msgid "Bias" +msgstr "Claonadh" + +msgid "Disable Collision" +msgstr "Díchumasaigh Imbhualadh" + +msgid "Softness" +msgstr "Bogas" + +msgid "Angular Limit" +msgstr "Teorainn Uilleach" + +msgid "Lower" +msgstr "Íochtarach" + +msgid "Upper" +msgstr "Uachtarach" + +msgid "Motor" +msgstr "Inneall" + +msgid "Target Velocity" +msgstr "Treoluas Sprice" + +msgid "Bone 2D Nodepath" +msgstr "Nódpath Cnámh 2D" + +msgid "Bone 2D Index" +msgstr "Innéacs Cnámh 2D" + +msgid "Auto Configure Joint" +msgstr "Cumraigh Comhpháirt Uathoibríoch" + +msgid "Simulate Physics" +msgstr "Insamhladh Fisic" + +msgid "Follow Bone When Simulating" +msgstr "Lean cnámh agus tú ag insamhladh" + +msgid "Exclude Parent" +msgstr "Tuismitheoir a Eisiamh" + +msgid "Target Position" +msgstr "Suíomh na Sprice" + +msgid "Hit From Inside" +msgstr "Buail ón taobh istigh" + +msgid "Collide With" +msgstr "Collide Le" + +msgid "Areas" +msgstr "Ceantair" + +msgid "Bodies" +msgstr "Comhlachtaí" + +msgid "Gravity Scale" +msgstr "Scála Domhantarraingthe" + +msgid "Mass Distribution" +msgstr "Dáileadh Aifrinn" + +msgid "Center of Mass Mode" +msgstr "Lár an Mhód Aifrinn" + +msgid "Inertia" +msgstr "Táimhe" + +msgid "Deactivation" +msgstr "Díghníomhachtú" + +msgid "Sleeping" +msgstr "Codladh" + +msgid "Can Sleep" +msgstr "An féidir Codladh" + +msgid "Lock Rotation" +msgstr "Glasáil Rothlú" + +msgid "Freeze" +msgstr "Reo" + +msgid "Freeze Mode" +msgstr "Mód Reoite" + +msgid "Solver" +msgstr "Réiteoir" + +msgid "Custom Integrator" +msgstr "Integrator Saincheaptha" + +msgid "Continuous CD" +msgstr "Dlúthdhiosca leanúnach" + +msgid "Contact Monitor" +msgstr "Monatóir Teagmhála" + +msgid "Max Contacts Reported" +msgstr "Uasteagmhálacha Tuairiscithe" + +msgid "Linear" +msgstr "Líneach" + +msgid "Damp Mode" +msgstr "Mód Taise" + +msgid "Damp" +msgstr "Taise" + +msgid "Angular" +msgstr "Uilleach" + +msgid "Constant Forces" +msgstr "Fórsaí Tairiseacha" + +msgctxt "Physics" +msgid "Force" +msgstr "Fórsáil" + +msgid "Torque" +msgstr "Chasmhóimint" + +msgid "Margin" +msgstr "Imeall" + +msgid "Max Results" +msgstr "Torthaí Uasta" + +msgid "Constant Linear Velocity" +msgstr "Treoluas líneach tairiseach" + +msgid "Constant Angular Velocity" +msgstr "Treoluas Uilleach Tairiseach" + +msgid "UV" +msgstr "UV" + +msgid "Vertex Colors" +msgstr "Dathanna Vertex" + +msgid "Internal Vertex Count" +msgstr "Líon Na Vertex Inmheánach" + +msgid "Remote Path" +msgstr "Conair Chianda" + +msgid "Use Global Coordinates" +msgstr "Úsáid Comhordanáidí Domhanda" + +msgid "Update" +msgstr "Nuashonrú" + +msgid "Auto Calculate Length and Angle" +msgstr "Ríomh Fad agus Uillinn Uathoibríoch" + +msgid "Bone Angle" +msgstr "Uillinn Cnámh" + +msgid "Editor Settings" +msgstr "Socruithe an Eagarthóra" + +msgid "Show Bone Gizmo" +msgstr "Taispeáin Gizmo Cnámh" + +msgid "Rest" +msgstr "An chuid eile" + +msgid "Modification Stack" +msgstr "Cruach Mionathraithe" + +msgid "Hframes" +msgstr "HframesName" + +msgid "Vframes" +msgstr "VframesName" + +msgid "Frame Coords" +msgstr "Coords Fráma" + +msgid "Filter Clip Enabled" +msgstr "Scagaire Clip Cumasaithe" + +msgid "Tile Set" +msgstr "Socraigh Tíleanna" + +msgid "Rendering Quadrant Size" +msgstr "Rindreáil Quadrant Méid" + +msgid "Collision Animatable" +msgstr "Imbhualadh Animatable" + +msgid "Collision Visibility Mode" +msgstr "Mód Infheictheachta Imbhuailtí" + +msgid "Navigation Visibility Mode" +msgstr "Mód Infheictheachta Nascleanúna" + +msgid "Y Sort Origin" +msgstr "Y Sórtáil Origin" + +msgid "X Draw Order Reversed" +msgstr "X Tarraing Ordú droim ar ais" + +msgid "Collision Enabled" +msgstr "Imbhualadh Cumasaithe" + +msgid "Use Kinematic Bodies" +msgstr "Úsáid Comhlachtaí Kinematic" + +msgid "Navigation Enabled" +msgstr "Nascleanúint Cumasaithe" + +msgid "Texture Normal" +msgstr "Uigeacht Gnáth" + +msgid "Texture Pressed" +msgstr "Uigeacht Brúite" + +msgid "Bitmask" +msgstr "Péisteanna giolcacha" + +msgid "Shape Centered" +msgstr "Cruth Láraithe" + +msgid "Shape Visible" +msgstr "Cruth Infheicthe" + +msgid "Passby Press" +msgstr "Preas Passby" + +msgid "Visibility Mode" +msgstr "Mód Infheictheachta" + +msgid "Enabling" +msgstr "Cumasú" + +msgid "Node Path" +msgstr "Conair nód" + +msgid "Attenuation Model" +msgstr "Múnla Maolaithe" + +msgid "Unit Size" +msgstr "Méid an Aonaid" + +msgid "Max dB" +msgstr "Uasmhéid dB" + +msgid "Emission Angle" +msgstr "Uillinn Astaíochta" + +msgid "Degrees" +msgstr "Céimeanna" + +msgid "Filter Attenuation dB" +msgstr "Scagaire Maolú dB" + +msgid "Attenuation Filter" +msgstr "Scagaire MaolaitheComment" + +msgid "Cutoff Hz" +msgstr "Gearradh Hz" + +msgid "dB" +msgstr "dB" + +msgid "Doppler" +msgstr "DopplerName" + +msgid "Tracking" +msgstr "Rianú" + +msgid "Bone Name" +msgstr "Ainm na gCnámh" + +msgid "Bone Idx" +msgstr "Idx Cnámh" + +msgid "Override Pose" +msgstr "Sáraigh Údar" + +msgid "Keep Aspect" +msgstr "Coinnigh Gné" + +msgid "Cull Mask" +msgstr "Masc Cuil" + +msgid "Attributes" +msgstr "Tréithe" + +msgid "Compositor" +msgstr "Cumadóir" + +msgid "Doppler Tracking" +msgstr "Rianú Doppler" + +msgid "Projection" +msgstr "Teilgean" + +msgid "Frustum Offset" +msgstr "Fritháireamh Frustum" + +msgid "Near" +msgstr "In aice le" + +msgid "Far" +msgstr "I bhfad" + +msgid "Visibility AABB" +msgstr "Infheictheacht AABB" + +msgid "Box Extents" +msgstr "Fairsinge an Bhosca" + +msgid "Ring Axis" +msgstr "Ais Fáinne" + +msgid "Ring Height" +msgstr "Airde Fáinne" + +msgid "Ring Radius" +msgstr "Ga Fáinne" + +msgid "Ring Inner Radius" +msgstr "Fáinne Ga Istigh" + +msgid "Rotate Y" +msgstr "Rothlaigh Y" + +msgid "Disable Z" +msgstr "Díchumasaigh Z" + +msgid "Flatness" +msgstr "Maoithneachas" + +msgid "Scale Curve Z" +msgstr "Scálaigh Cuar Z" + +msgid "Albedo" +msgstr "AlbedoName" + +msgctxt "Geometry" +msgid "Normal" +msgstr "Gnáth" + +msgid "Orm" +msgstr "Orm" + +msgid "Emission" +msgstr "Astaíochtaí" + +msgid "Parameters" +msgstr "Paraiméadair" + +msgid "Emission Energy" +msgstr "Fuinneamh Astaíochta" + +msgid "Modulate" +msgstr "Mionathraigh" + +msgid "Albedo Mix" +msgstr "Meascán Albedo" + +msgid "Normal Fade" +msgstr "Gnáth-Céimnithe" + +msgid "Vertical Fade" +msgstr "Céimnigh Ingearach" + +msgid "Upper Fade" +msgstr "An Céimneach Uachtarach" + +msgid "Lower Fade" +msgstr "Céimnithe Íochtarach" + +msgid "Distance Fade" +msgstr "Fadú" + +msgid "Transform Align" +msgstr "Ailínigh Trasfhoirmithe" + +msgid "Draw Passes" +msgstr "Tarraing Pasanna" + +msgid "Passes" +msgstr "Pasanna" + +msgid "Thickness" +msgstr "Tiús" + +msgid "Bake Mask" +msgstr "Masc Bácála" + +msgid "Update Mode" +msgstr "Mód Nuashonraithe" + +msgid "Follow Camera Enabled" +msgstr "Lean an Ceamara Cumasaithe" + +msgid "Directionality" +msgstr "Treoíocht" + +msgid "Skeleton Path" +msgstr "Conair an Chnámharlaigh" + +msgid "Layer Mask" +msgstr "Masc Sraithe" + +msgid "Visibility Range" +msgstr "Raon Infheictheachta" + +msgid "Begin Margin" +msgstr "Tosaigh Imeall" + +msgid "End Margin" +msgstr "Imeall Deiridh" + +msgid "Fade Mode" +msgstr "Mód Céimnithe" + +msgid "Pixel Size" +msgstr "Méid Picteilíní" + +msgid "Flags" +msgstr "Bratacha" + +msgid "Billboard" +msgstr "Clár fógraí" + +msgid "Shaded" +msgstr "Scáthaithe" + +msgid "Double Sided" +msgstr "Dhá Thaobh" + +msgid "No Depth Test" +msgstr "Gan Tástáil Doimhneachta" + +msgid "Fixed Size" +msgstr "Méid Seasta" + +msgid "Alpha Cut" +msgstr "Alfa Gearr" + +msgid "Alpha Scissor Threshold" +msgstr "Tairseach Alfa Siosúr" + +msgid "Alpha Hash Scale" +msgstr "Scála Alfa Hash" + +msgid "Alpha Antialiasing Mode" +msgstr "Mód Alfa Antialiasing" + +msgid "Alpha Antialiasing Edge" +msgstr "Imeall Alfa Antialiasing" + +msgid "Texture Filter" +msgstr "Scagaire Uigeachta" + +msgid "Render Priority" +msgstr "Tosaíocht a Thabhairt" + +msgid "Outline Render Priority" +msgstr "Imlíne Tosaíocht Rindreála" + +msgid "Text" +msgstr "Téacs" + +msgid "Outline Modulate" +msgstr "Mionathrú Imlíneach" + +msgid "Font" +msgstr "Cló" + +msgid "Horizontal Alignment" +msgstr "Ailíniú Cothrománach" + +msgid "Vertical Alignment" +msgstr "Ailíniú Ingearach" + +msgid "Uppercase" +msgstr "Cás Uachtair" + +msgid "Justification Flags" +msgstr "Bratacha Fírinniú" + +msgid "BiDi" +msgstr "BiDiName" + +msgid "Text Direction" +msgstr "Treo Téacs" + +msgid "Structured Text BiDi Override" +msgstr "Sárú Téacs Struchtúrtha BiDi" + +msgid "Structured Text BiDi Override Options" +msgstr "Roghanna Sáraithe Téacs Struchtúrtha BiDi" + +msgid "Intensity Lumens" +msgstr "Déine Lumens" + +msgid "Intensity Lux" +msgstr "Déine Lux" + +msgid "Temperature" +msgstr "Teocht" + +msgid "Indirect Energy" +msgstr "Fuinneamh Indíreach" + +msgid "Volumetric Fog Energy" +msgstr "Fuinneamh Ceo Toirtmhéadrach" + +msgid "Projector" +msgstr "Teilgeoir" + +msgid "Angular Distance" +msgstr "Fad Uilleach" + +msgid "Negative" +msgstr "Diúltach" + +msgid "Specular" +msgstr "Tuairimíocht" + +msgid "Bake Mode" +msgstr "Mód Bácála" + +msgid "Normal Bias" +msgstr "Gnáthchlaonadh" + +msgid "Reverse Cull Face" +msgstr "Droim ar ais Aghaidh Cull" + +msgid "Transmittance Bias" +msgstr "Claonadh Tarchuir" + +msgid "Opacity" +msgstr "Teimhneacht" + +msgid "Blur" +msgstr "Doiléirigh" + +msgid "Directional Shadow" +msgstr "Scáth Treoch" + +msgid "Split 1" +msgstr "Scoilt 1" + +msgid "Split 2" +msgstr "Scoilt 2" + +msgid "Split 3" +msgstr "Scoilt 3" + +msgid "Blend Splits" +msgstr "Scoilteanna Cumaisc" + +msgid "Fade Start" +msgstr "Céimnigh Tús" + +msgid "Pancake Size" +msgstr "Méid na Pancóg" + +msgid "Sky Mode" +msgstr "Mód Spéire" + +msgid "Omni" +msgstr "OmniName" + +msgid "Shadow Mode" +msgstr "Mód Scátha" + +msgid "Spot" +msgstr "Spota" + +msgid "Angle Attenuation" +msgstr "Maolú uillinne" + +msgid "Light Texture" +msgstr "Uigeacht Éadrom" + +msgid "Quality" +msgstr "Cáilíocht" + +msgid "Bounces" +msgstr "Preabanna" + +msgid "Bounce Indirect Energy" +msgstr "Preab Fuinneamh Indíreach" + +msgid "Directional" +msgstr "Treo" + +msgid "Use Texture for Bounces" +msgstr "Úsáid uigeacht le haghaidh preabanna" + +msgid "Interior" +msgstr "Taobh istigh" + +msgid "Use Denoiser" +msgstr "Úsáid Denoiser" + +msgid "Denoiser Strength" +msgstr "Neart Denoiser" + +msgid "Denoiser Range" +msgstr "Raon Denoiser" + +msgid "Texel Scale" +msgstr "Scála Texel" + +msgid "Max Texture Size" +msgstr "Uasmhéid uigeachta" + +msgid "Custom Sky" +msgstr "Spéir Shaincheaptha" + +msgid "Custom Color" +msgstr "Dath Saincheaptha" + +msgid "Custom Energy" +msgstr "Fuinneamh Saincheaptha" + +msgid "Camera Attributes" +msgstr "Tréithe an Cheamara" + +msgid "Gen Probes" +msgstr "Tástálacha Gineadóirí" + +msgid "Subdiv" +msgstr "SubdivName" + +msgid "Light Data" +msgstr "Sonraí Solais" + +msgid "Surface Material Override" +msgstr "Sáraigh Ábhar Dromchla" + +msgid "Path Height Offset" +msgstr "Fritháireamh Airde an Chosáin" + +msgid "Use 3D Avoidance" +msgstr "Úsáid Seachaint 3D" + +msgid "Keep Y Velocity" +msgstr "Coinnigh Treoluas Y" + +msgid "Navigation Mesh" +msgstr "Mogalra Nascleanúna" + +msgid "Quaternion" +msgstr "Ceathrún" + +msgid "Basis" +msgstr "Bonn" + +msgid "Rotation Edit Mode" +msgstr "Mód Eagarthóireachta Rothlaithe" + +msgid "Rotation Order" +msgstr "Ordú Uainíochta" + +msgid "Top Level" +msgstr "Barrleibhéal" + +msgid "Visibility" +msgstr "Infheictheacht" + +msgid "Visible" +msgstr "Infheicthe" + +msgid "Visibility Parent" +msgstr "Tuismitheoir Infheictheachta" + +msgid "Bake" +msgstr "Bácáil" + +msgid "Rotation Mode" +msgstr "Mód Rothlaithe" + +msgid "Use Model Front" +msgstr "Úsáid Tosaigh na Samhla" + +msgid "Tilt Enabled" +msgstr "Tilt Cumasaithe" + +msgid "Wind" +msgstr "Gaoth" + +msgid "Force Magnitude" +msgstr "Méid an Fhórsa" + +msgid "Attenuation Factor" +msgstr "Fachtóir Maolaithe" + +msgid "Source Path" +msgstr "Conair Foinseach" + +msgid "Reverb Bus" +msgstr "Bus Reverb" + +msgid "Uniformity" +msgstr "Aonfhoirmeacht" + +msgid "Ray Pickable" +msgstr "Ráiteoir Roghnaithe" + +msgid "Capture on Drag" +msgstr "Gabháil ar Tarraing" + +msgid "Swing Span" +msgstr "Réise Luascáin" + +msgid "Twist Span" +msgstr "Réise Twist" + +msgid "Relaxation" +msgstr "Scíth" + +msgid "Linear Limit" +msgstr "Teorainn Líneach" + +msgid "X" +msgstr "X" + +msgid "Upper Distance" +msgstr "Fad Uachtarach" + +msgid "Lower Distance" +msgstr "Fad Níos Ísle" + +msgid "Restitution" +msgstr "Aiseag" + +msgid "Y" +msgstr "Agus" + +msgid "Z" +msgstr "Leis an" + +msgid "Linear Motor" +msgstr "Mótar Líneach" + +msgid "Force Limit" +msgstr "Teorainn Fórsa" + +msgid "Linear Spring" +msgstr "Earrach Líneach" + +msgid "Equilibrium Point" +msgstr "Pointe Cothromaíochta" + +msgid "Upper Angle" +msgstr "Uillinn Uachtarach" + +msgid "Lower Angle" +msgstr "Uillinn Íochtarach" + +msgid "ERP" +msgstr "ERPName" + +msgid "Angular Motor" +msgstr "Mótar uilleach" + +msgid "Angular Spring" +msgstr "Earrach uilleach" + +msgid "Params" +msgstr "Paraimí" + +msgid "Max Impulse" +msgstr "Impulses Max" + +msgid "Solver Priority" +msgstr "Tosaíocht an Réiteora" + +msgid "Exclude Nodes From Collision" +msgstr "Nóid a eisiamh ó imbhualadh" + +msgid "Impulse Clamp" +msgstr "Cineál Timpiste" + +msgid "Linear Motion" +msgstr "Gluaisne Líneach" + +msgid "Linear Ortho" +msgstr "Ortaca Líneach" + +msgid "Angular Motion" +msgstr "Gluaisne Uilleach" + +msgid "Angular Ortho" +msgstr "Ortho uilleach" + +msgid "Joint Constraints" +msgstr "Srianta Comhpháirteacha" + +msgid "Angular Limit Enabled" +msgstr "Teorainn Uilleach Cumasaithe" + +msgid "Angular Limit Upper" +msgstr "Teorainn Uilleach Uachtarach" + +msgid "Angular Limit Lower" +msgstr "Teorainn Uilleach Níos Ísle" + +msgid "Angular Limit Bias" +msgstr "Claonadh Teorann Uilleach" + +msgid "Angular Limit Softness" +msgstr "Softness Teorainn Uilleach" + +msgid "Angular Limit Relaxation" +msgstr "Maolú Teorann Uilleach" + +msgid "Linear Limit Upper" +msgstr "Teorainn Líneach Uachtarach" + +msgid "Linear Limit Lower" +msgstr "Teorainn Líneach Íochtarach" + +msgid "Linear Limit Softness" +msgstr "Softness Teorainn Líneach" + +msgid "Linear Limit Restitution" +msgstr "Aiseag Teorann Líneach" + +msgid "Linear Limit Damping" +msgstr "Damping Teorainn Líneach" + +msgid "Angular Limit Restitution" +msgstr "Aiseag Teorann Uilleach" + +msgid "Angular Limit Damping" +msgstr "Damping Teorainn Uilleach" + +msgid "Linear Limit Enabled" +msgstr "Teorainn líneach cumasaithe" + +msgid "Linear Spring Enabled" +msgstr "Líneach Earraigh Cumasaithe" + +msgid "Linear Spring Stiffness" +msgstr "Stiffness Earraigh Líneach" + +msgid "Linear Spring Damping" +msgstr "Damping Earraigh Líneach" + +msgid "Linear Equilibrium Point" +msgstr "Pointe Cothromaíochta Líneach" + +msgid "Linear Restitution" +msgstr "Aiseag Líneach" + +msgid "Linear Damping" +msgstr "Damping Líneach" + +msgid "Angular Restitution" +msgstr "Aiseag Uilleach" + +msgid "Angular Damping" +msgstr "Damping uilleach" + +msgid "Angular Spring Enabled" +msgstr "Earrach uilleach cumasaithe" + +msgid "Angular Spring Stiffness" +msgstr "Stiffness Earraigh Uilleach" + +msgid "Angular Spring Damping" +msgstr "Damping Earraigh Uilleach" + +msgid "Angular Equilibrium Point" +msgstr "Pointe Cothromaíochta Uilleach" + +msgid "Body Offset" +msgstr "Fritháireamh Coirp" + +msgid "Friction" +msgstr "Frithchuimilt" + +msgid "Bounce" +msgstr "Preab" + +msgid "Linear Damp Mode" +msgstr "Mód Taise Líneach" + +msgid "Angular Damp Mode" +msgstr "Mód Taise Uilleach" + +msgid "Axis Lock" +msgstr "Glas ais" + +msgid "Linear X" +msgstr "Líneach X" + +msgid "Linear Y" +msgstr "Líneach Y" + +msgid "Linear Z" +msgstr "Líneach Z" + +msgid "Angular X" +msgstr "Uilleach X" + +msgid "Angular Y" +msgstr "Uilleach agus" + +msgid "Angular Z" +msgstr "Uilleach Z" + +msgid "Hit Back Faces" +msgstr "Buail Aghaidheanna Ar Ais" + +msgid "Debug Shape" +msgstr "Cruth Dífhabhtaithe" + +msgid "Spring Length" +msgstr "Fad an Earraigh" + +msgid "Per-Wheel Motion" +msgstr "Gluaisne in aghaidh an rotha" + +msgid "Engine Force" +msgstr "Fórsa Innill" + +msgid "Brake" +msgstr "Coscán" + +msgid "Steering" +msgstr "Stiúradh" + +msgid "VehicleBody3D Motion" +msgstr "Gluaisne VehicleBody3D" + +msgid "Use as Traction" +msgstr "Úsáid mar Tharraingt" + +msgid "Use as Steering" +msgstr "Úsáid mar Stiúradh" + +msgid "Wheel" +msgstr "Roth" + +msgid "Roll Influence" +msgstr "Tionchar Rolla" + +msgid "Friction Slip" +msgstr "Duillín Frithchuimilte" + +msgid "Suspension" +msgstr "Fionraí" + +msgid "Travel" +msgstr "Taisteal" + +msgid "Max Force" +msgstr "Fórsa Uasta" + +msgid "Origin Offset" +msgstr "Fritháireamh Tionscnaimh" + +msgid "Box Projection" +msgstr "Teilgean Bosca" + +msgid "Enable Shadows" +msgstr "Cumasaigh Scáthanna" + +msgid "Reflection Mask" +msgstr "Masc Machnaimh" + +msgid "Mesh LOD Threshold" +msgstr "Tairseach LOD mogalra" + +msgid "Ambient" +msgstr "Débhríocht" + +msgid "Color Energy" +msgstr "Fuinneamh Datha" + +msgid "Bones" +msgstr "Cnámha" + +msgid "Motion Scale" +msgstr "Scála Gluaisne" + +msgid "Show Rest Only" +msgstr "Taispeáin An Chuid Eile Amháin" + +msgid "Modifier" +msgstr "Mionathraigh" + +msgid "Callback Mode Process" +msgstr "Próiseas Mód Aisghlaoigh" + +msgid "Deprecated" +msgstr "Dímheasta" + +msgid "Animate Physical Bones" +msgstr "Beoigh Cnámha Fisiciúla" + +msgid "Root Bone" +msgstr "Cnámh fréimhe" + +msgid "Tip Bone" +msgstr "Cnámh Leid" + +msgid "Target" +msgstr "Sprioc" + +msgid "Override Tip Basis" +msgstr "Sáraigh Bonn Leid" + +msgid "Use Magnet" +msgstr "Úsáid maighnéad" + +msgid "Magnet" +msgstr "Maighnéad" + +msgid "Target Node" +msgstr "Sprioc nód" + +msgid "Min Distance" +msgstr "Min Fad" + +msgid "Max Iterations" +msgstr "Uas-atriall" + +msgid "Active" +msgstr "Gníomhach" + +msgid "Influence" +msgstr "Tionchar" + +msgid "Pinned Points" +msgstr "Pointí pinned" + +msgid "Attachments" +msgstr "Ceangaltáin" + +msgid "Point Index" +msgstr "Innéacs Pointe" + +msgid "Spatial Attachment Path" +msgstr "Conair Iatáin Spásúil" + +msgid "Parent Collision Ignore" +msgstr "Neamhaird ar Imbhualadh Tuismitheora" + +msgid "Simulation Precision" +msgstr "Beachtas Insamhladh" + +msgid "Total Mass" +msgstr "Aifreann Iomlán" + +msgid "Linear Stiffness" +msgstr "Stiffness Líneach" + +msgid "Pressure Coefficient" +msgstr "Comhéifeacht Brú" + +msgid "Damping Coefficient" +msgstr "Comhéifeacht Damping" + +msgid "Drag Coefficient" +msgstr "Tarraing Comhéifeacht" + +msgid "Track Physics Step" +msgstr "Céim na Fisice Riain" + +msgid "Sorting" +msgstr "Sórtáil" + +msgid "Use AABB Center" +msgstr "Úsáid Ionad AABB" + +msgid "Geometry" +msgstr "Céimseata" + +msgid "Material Override" +msgstr "Sárú Ábhar" + +msgid "Material Overlay" +msgstr "Forleagan Ábhar" + +msgid "Transparency" +msgstr "Trédhearcacht" + +msgid "Extra Cull Margin" +msgstr "Corrlach Cuileann Breise" + +msgid "Custom AABB" +msgstr "AABB Saincheaptha" + +msgid "LOD Bias" +msgstr "Claonadh LOD" + +msgid "Ignore Occlusion Culling" +msgstr "Déan neamhaird de Culling Occlusion" + +msgid "Global Illumination" +msgstr "Soilsiú Domhanda" + +msgid "Lightmap Scale" +msgstr "Scála Mapa Solais" + +msgid "Dynamic Range" +msgstr "Raon Dinimiciúil" + +msgid "Propagation" +msgstr "Iomadú" + +msgid "Use Two Bounces" +msgstr "Bain úsáid as Dhá Preab" + +msgid "Body Tracker" +msgstr "Lorgaire Coirp" + +msgid "Body Update" +msgstr "Nuashonrú coirp" + +msgid "Face Tracker" +msgstr "Lorgaire Aghaidhe" + +msgid "Hand Tracker" +msgstr "Lorgaire Láimhe" + +msgid "Tracker" +msgstr "Lorgaire" + +msgid "Pose" +msgstr "Údar" + +msgid "Show When Tracked" +msgstr "Taispeáin nuair a rianaítear é" + +msgid "World Scale" +msgstr "Scála Domhanda" + +msgid "Play Mode" +msgstr "Mód Seinnte" + +msgid "Use Custom Timeline" +msgstr "Úsáid Amlíne Shaincheaptha" + +msgid "Timeline Length" +msgstr "Fad amlíne" + +msgid "Stretch Time Scale" +msgstr "Scála Ama Sín" + +msgid "Sync" +msgstr "Sioncronú" + +msgid "Mix Mode" +msgstr "Mód Meascáin" + +msgid "Fadein Time" +msgstr "Am Céimnithe" + +msgid "Fadein Curve" +msgstr "Cuar céimnithe" + +msgid "Fadeout Time" +msgstr "Am Céimnithe" + +msgid "Fadeout Curve" +msgstr "Cuar céimnithe" + +msgid "Break Loop at End" +msgstr "Bris lúb ag an deireadh" + +msgid "Auto Restart" +msgstr "Atosaigh go hUathoibríoch" + +msgid "Autorestart" +msgstr "Uath- atosú" + +msgid "Delay" +msgstr "Moill" + +msgid "Random Delay" +msgstr "Moill Randamach" + +msgid "Xfade Time" +msgstr "Am Xfade" + +msgid "Xfade Curve" +msgstr "Cuar Xfade" + +msgid "Allow Transition to Self" +msgstr "Ceadaigh Aistriú go Féin" + +msgid "Input Count" +msgstr "Líon na nIonchur" + +msgid "Request" +msgstr "Iarratas" + +msgid "Internal Active" +msgstr "Gníomhach Inmheánach" + +msgid "Add Amount" +msgstr "Cuir Méid Leis" + +msgid "Blend Amount" +msgstr "Méid Cumaisc" + +msgid "Sub Amount" +msgstr "Fo-Mhéid" + +msgid "Seek Request" +msgstr "Iarratas a Lorg" + +msgid "Current Index" +msgstr "Innéacs Reatha" + +msgid "Current State" +msgstr "Staid Reatha" + +msgid "Transition Request" +msgstr "Iarratas ar Aistriú" + +msgid "Libraries" +msgstr "Leabharlanna" + +msgid "Deterministic" +msgstr "Cinntitheach" + +msgid "Reset on Save" +msgstr "Athshocraigh ar Sábháil" + +msgid "Root Node" +msgstr "Nód Fréimhe" + +msgid "Root Motion" +msgstr "Gluaisne Fréimhe" + +msgid "Track" +msgstr "Amhrán" + +msgid "Callback Mode" +msgstr "Mód aisghlaoigh" + +msgid "Method" +msgstr "Modh" + +msgid "Discrete" +msgstr "Scoite" + +msgid "Reset" +msgstr "Athshocraigh" + +msgid "Switch" +msgstr "Athraigh" + +msgid "Switch Mode" +msgstr "Athraigh Mód" + +msgid "Advance" +msgstr "Dul chun cinn" + +msgid "Condition" +msgstr "Coinníoll" + +msgid "Expression" +msgstr "Slonn" + +msgid "State Machine Type" +msgstr "Cineál Meaisín Stáit" + +msgid "Reset Ends" +msgstr "Athshocraigh Críoch" + +msgid "Current Animation" +msgstr "Beochan Reatha" + +msgid "Playback Options" +msgstr "Roghanna Athsheinm" + +msgid "Auto Capture" +msgstr "Gabháil Uathoibríoch" + +msgid "Auto Capture Duration" +msgstr "Fad Gabhála Uathoibríoch" + +msgid "Auto Capture Transition Type" +msgstr "Cineál Aistrithe Gabhála Uathoibríoch" + +msgid "Auto Capture Ease Type" +msgstr "Auto Gabháil Cineál Éasca" + +msgid "Default Blend Time" +msgstr "Am Cumaisc Réamhshocraithe" + +msgid "Movie Quit on Finish" +msgstr "Scannán Scoir ar Críochnaigh" + +msgid "Tree Root" +msgstr "Fréamh an Chrainn" + +msgid "Advance Expression Base Node" +msgstr "Nód Bonn Slonn Roimh Ré" + +msgid "Anim Player" +msgstr "Imreoir Anim" + +msgid "Animation Path" +msgstr "Conair Bheochana" + +msgid "Zero Y" +msgstr "Náid Y" + +msgid "Mix Target" +msgstr "Measc Sprioc" + +msgid "Ratio" +msgstr "Cóimheas" + +msgid "Stretch Mode" +msgstr "Mód Sín" + +msgid "Alignment" +msgstr "Ailíniú" + +msgid "Button Pressed" +msgstr "Cnaipe Brúite" + +msgid "Action Mode" +msgstr "Mód Gnímh" + +msgid "Keep Pressed Outside" +msgstr "Coinnigh Brúite Lasmuigh" + +msgid "Button Group" +msgstr "Grúpa Na gCnaipí" + +msgid "Shortcut Feedback" +msgstr "Aiseolas Aicearra" + +msgid "Shortcut in Tooltip" +msgstr "Aicearra i leid uirlisí" + +msgid "Button Shortcut Feedback Highlight Time" +msgstr "Aicearra Cnaipe Aiseolas Aibhsiú Am Aibhsithe" + +msgid "Allow Unpress" +msgstr "Ceadaigh Díbhrú" + +msgid "Text Behavior" +msgstr "Oibriú Téacs" + +msgid "Text Overrun Behavior" +msgstr "Iompar Róchaite Téacs" + +msgid "Clip Text" +msgstr "Clip Téacs" + +msgid "Icon Behavior" +msgstr "Oibriú Deilbhíní" + +msgid "Icon Alignment" +msgstr "Ailíniú Deilbhíní" + +msgid "Vertical Icon Alignment" +msgstr "Ailíniú Deilbhín Ingearach" + +msgid "Expand Icon" +msgstr "Fairsingigh Deilbhín" + +msgid "Use Top Left" +msgstr "Úsáid Barr ar Chlé" + +msgid "Symbol Lookup on Click" +msgstr "Siombail Lookup ar Cliceáil" + +msgid "Line Folding" +msgstr "Líne Fillte" + +msgid "Line Length Guidelines" +msgstr "Treoirlínte maidir le Fad Líne" + +msgid "Draw Breakpoints Gutter" +msgstr "Tarraing Gáitéar Brisphointí" + +msgid "Draw Bookmarks" +msgstr "Dear Leabharmharcanna" + +msgid "Draw Executing Lines" +msgstr "Dear Línte Feidhmithe" + +msgid "Draw Line Numbers" +msgstr "Tarraing Uimhreacha Líne" + +msgid "Zero Pad Line Numbers" +msgstr "Uimhreacha Líne Pad Nialais" + +msgid "Draw Fold Gutter" +msgstr "Tarraing Gáitéar Fillte" + +msgid "Delimiters" +msgstr "Teormharcóirí" + +msgid "Comments" +msgstr "Tuairimí" + +msgid "Code Completion" +msgstr "Comhlánú an Chóid" + +msgid "Prefixes" +msgstr "Réimíreanna" + +msgid "Indentation" +msgstr "Eangú" + +msgid "Use Spaces" +msgstr "Úsáid Spásanna" + +msgid "Automatic" +msgstr "Uathoibríoch" + +msgid "Automatic Prefixes" +msgstr "Réimíreanna Uathoibríocha" + +msgid "Auto Brace Completion" +msgstr "Comhlánú Auto Brace" + +msgid "Highlight Matching" +msgstr "Meaitseáil Aibhsithe" + +msgid "Pairs" +msgstr "Péirí" + +msgid "Edit Alpha" +msgstr "Cuir Alfa in Eagar" + +msgid "Color Mode" +msgstr "Mód Datha" + +msgid "Deferred Mode" +msgstr "Mód Iarchurtha" + +msgid "Picker Shape" +msgstr "Stencils" + +msgid "Can Add Swatches" +msgstr "An féidir uaireadóirí a chur leis" + +msgid "Customization" +msgstr "Saincheapadh" + +msgid "Sampler Visible" +msgstr "Sampler Infheicthe" + +msgid "Color Modes Visible" +msgstr "Modhanna Datha Infheicthe" + +msgid "Sliders Visible" +msgstr "Sleamhnáin Infheicthe" + +msgid "Hex Visible" +msgstr "Heics Infheicthe" + +msgid "Presets Visible" +msgstr "Réamhshocruithe Infheicthe" + +msgid "Theme Overrides" +msgstr "Sáraítear Téama" + +msgid "Constants" +msgstr "Tairisigh" + +msgid "Font Sizes" +msgstr "Clómhéideanna" + +msgid "Styles" +msgstr "Stíleanna" + +msgid "Clip Contents" +msgstr "Clár ábhair gearrthóg" + +msgid "Custom Minimum Size" +msgstr "Íosmhéid Saincheaptha" + +msgid "Layout Direction" +msgstr "Treo an Leagain Amach" + +msgid "Layout Mode" +msgstr "Mód Leagan Amach" + +msgid "Anchors Preset" +msgstr "Réamhshocrú Ancairí" + +msgid "Anchor Points" +msgstr "Pointí Ancaire" + +msgid "Anchor Offsets" +msgstr "Fritháirimh Ancaire" + +msgid "Grow Direction" +msgstr "Treo Fáis" + +msgid "Pivot Offset" +msgstr "Fritháireamh Pivot" + +msgid "Container Sizing" +msgstr "Coimeádán Sizing" + +msgid "Stretch Ratio" +msgstr "Cóimheas Sín" + +msgid "Localization" +msgstr "Logánú" + +msgid "Localize Numeral System" +msgstr "Logánaigh Córas Uimhriúil" + +msgid "Tooltip" +msgstr "Leid Uirlisí" + +msgid "Focus" +msgstr "Fócas" + +msgid "Neighbor Left" +msgstr "Comharsa ar chlé" + +msgid "Neighbor Top" +msgstr "Barr na gcomharsan" + +msgid "Neighbor Right" +msgstr "Comharsa Ar Dheis" + +msgid "Neighbor Bottom" +msgstr "Bun na gcomharsan" + +msgid "Next" +msgstr "Ar Aghaidh" + +msgid "Previous" +msgstr "Roimhe Seo" + +msgid "Mouse" +msgstr "Luch" + +msgid "Force Pass Scroll Events" +msgstr "Fórsa Pas Scrollaigh Imeachtaí" + +msgid "Default Cursor Shape" +msgstr "Stencils" + +msgid "Shortcut Context" +msgstr "Comhthéacs Aicearra" + +msgid "Type Variation" +msgstr "Cineál Athrú" + +msgid "OK Button Text" +msgstr "Téacs Cnaipe OK" + +msgid "Dialog" +msgstr "Dialóg" + +msgid "Hide on OK" +msgstr "Folaigh ar OK" + +msgid "Close on Escape" +msgstr "Dún ar Éalú" + +msgid "Autowrap" +msgstr "Timfhilleadh gluaisteáin" + +msgid "Cancel Button Text" +msgstr "Cealaigh Téacs na gCnaipí" + +msgid "Mode Overrides Title" +msgstr "Sáraíonn an Mód Teideal" + +msgid "Root Subfolder" +msgstr "Fofhillteán Fréimhe" + +msgid "Use Native Dialog" +msgstr "Úsáid Dialóg Dhúchasach" + +msgid "Last Wrap Alignment" +msgstr "Ailíniú Timfhilleadh Deiridh" + +msgid "Reverse Fill" +msgstr "Fill droim ar ais" + +msgid "Show Grid" +msgstr "Taispeáin Greille" + +msgid "Snapping Enabled" +msgstr "Snapping Cumasaithe" + +msgid "Snapping Distance" +msgstr "Fad Léime" + +msgid "Panning Scheme" +msgstr "Scéim Panning" + +msgid "Right Disconnects" +msgstr "Dícheangail Ar Dheis" + +msgid "Connection Lines" +msgstr "Línte ceangail" + +msgid "Curvature" +msgstr "Cuaire" + +msgid "Zoom Min" +msgstr "Zúmáil Min" + +msgid "Zoom Max" +msgstr "Súmáil Uasmhéid" + +msgid "Zoom Step" +msgstr "Céim Zúmála" + +msgid "Toolbar Menu" +msgstr "Roghchlár an Bharra Uirlisí" + +msgid "Show Menu" +msgstr "Taispeáin an Roghchlár" + +msgid "Show Zoom Label" +msgstr "Taispeáin Lipéad Zúmála" + +msgid "Show Zoom Buttons" +msgstr "Taispeáin cnaipí zúmála" + +msgid "Show Grid Buttons" +msgstr "Taispeáin Cnaipí Greille" + +msgid "Show Minimap Button" +msgstr "Taispeáin cnaipe Minimap" + +msgid "Show Arrange Button" +msgstr "Taispeáin Socraigh an cnaipe" + +msgid "Position Offset" +msgstr "Fritháireamh Suímh" + +msgid "Draggable" +msgstr "In-íomhá" + +msgid "Selectable" +msgstr "Inroghnaithe" + +msgid "Selected" +msgstr "Roghnaithe" + +msgid "Title" +msgstr "Teideal" + +msgid "Autoshrink Enabled" +msgstr "Uathchrapadh Cumasaithe" + +msgid "Autoshrink Margin" +msgstr "Imeall Autoshrink" + +msgid "Drag Margin" +msgstr "Tarraing Imeall" + +msgid "Tint Color Enabled" +msgstr "Dath Tint cumasaithe" + +msgid "Tint Color" +msgstr "Dath Tint" + +msgid "Ignore Invalid Connection Type" +msgstr "Déan neamhaird den chineál ceangail neamhbhailí" + +msgid "Select Mode" +msgstr "Roghnaigh Mód" + +msgid "Allow Reselect" +msgstr "Ceadaigh Athroghnú" + +msgid "Allow RMB Select" +msgstr "Ceadaigh RMB Roghnaigh" + +msgid "Allow Search" +msgstr "Ceadaigh Cuardach" + +msgid "Max Text Lines" +msgstr "Uaslínte Téacs" + +msgid "Auto Height" +msgstr "Airde Uathoibríoch" + +msgid "Items" +msgstr "Míreanna" + +msgid "Max Columns" +msgstr "Colúin Uasta" + +msgid "Same Column Width" +msgstr "Leithead an Cholúin Chéanna" + +msgid "Fixed Column Width" +msgstr "Leithead Colún Seasta" + +msgid "Icon Mode" +msgstr "Mód Deilbhíní" + +msgid "Icon Scale" +msgstr "Scála Deilbhíní" + +msgid "Fixed Icon Size" +msgstr "Méid na nDeilbhíní Seasta" + +msgid "Label Settings" +msgstr "Socruithe Lipéid" + +msgid "Ellipsis Char" +msgstr "Éilipsis Char" + +msgid "Tab Stops" +msgstr "Stadanna Cluaisíní" + +msgid "Displayed Text" +msgstr "Téacs Ar Taispeáint" + +msgid "Lines Skipped" +msgstr "Línte Scipeáilte" + +msgid "Max Lines Visible" +msgstr "Uaslínte Infheicthe" + +msgid "Visible Characters" +msgstr "Carachtair Infheicthe" + +msgid "Visible Characters Behavior" +msgstr "Oibriú na gCarachtar Infheicthe" + +msgid "Visible Ratio" +msgstr "Cóimheas Infheicthe" + +msgid "Placeholder Text" +msgstr "Téacs an Ionadchoinneálaí" + +msgid "Max Length" +msgstr "Fad Uasta" + +msgid "Expand to Text Length" +msgstr "Leathnaigh go Fad an Téacs" + +msgid "Context Menu Enabled" +msgstr "Roghchlár Comhthéacs Cumasaithe" + +msgid "Virtual Keyboard Enabled" +msgstr "Méarchlár Fíorúil Cumasaithe" + +msgid "Virtual Keyboard Type" +msgstr "Cineál Fíorúil Méarchláir" + +msgid "Clear Button Enabled" +msgstr "Glan cnaipe cumasaithe" + +msgid "Shortcut Keys Enabled" +msgstr "Eochracha Aicearra Cumasaithe" + +msgid "Middle Mouse Paste Enabled" +msgstr "Greamaigh an Luiche Láir Cumasaithe" + +msgid "Selecting Enabled" +msgstr "Cumasaithe á roghnú" + +msgid "Deselect on Focus Loss Enabled" +msgstr "Díroghnaigh ar Chaillteanas Fócais Cumasaithe" + +msgid "Drag and Drop Selection Enabled" +msgstr "Tarraing agus scaoil an roghnúchán cumasaithe" + +msgid "Right Icon" +msgstr "Deilbhín Ar Dheis" + +msgid "Draw Control Chars" +msgstr "Tarraing Carachtair Rialaithe" + +msgid "Select All on Focus" +msgstr "Roghnaigh Gach Rud ar Fócas" + +msgid "Blink" +msgstr "BlinkGenericName" + +msgid "Blink Interval" +msgstr "Eatramh Blink" + +msgid "Column" +msgstr "Colún" + +msgid "Force Displayed" +msgstr "Fórsáil Ar Taispeáint" + +msgid "Mid Grapheme" +msgstr "Lár Grapheme" + +msgid "Secret" +msgstr "Rúnda" + +msgid "Secret Character" +msgstr "Carachtar Rúnda" + +msgid "Underline" +msgstr "Cuir líne faoi" + +msgid "URI" +msgstr "URI" + +msgid "Start Index" +msgstr "Tosaigh an tInnéacs" + +msgid "Switch on Hover" +msgstr "Athraigh ar Hover" + +msgid "Prefer Global Menu" +msgstr "Is Fearr Roghchlár Domhanda" + +msgid "Draw Center" +msgstr "Tarraing Ionad" + +msgid "Region Rect" +msgstr "Réigiún Rect" + +msgid "Patch Margin" +msgstr "Imeall Paiste" + +msgid "Axis Stretch" +msgstr "Stráice Ais" + +msgid "Fit to Longest Item" +msgstr "Oiriúnach don Mhír is faide" + +msgid "Hide on Item Selection" +msgstr "Folaigh ar Roghnú Míre" + +msgid "Hide on Checkable Item Selection" +msgstr "Folaigh ar Roghnú Míre Inseiceáilte" + +msgid "Hide on State Item Selection" +msgstr "Folaigh ar Roghnú Míre Stáit" + +msgid "Submenu Popup Delay" +msgstr "Moill ar Phreabfhuinneog Fo-roghchlár" + +msgid "System Menu ID" +msgstr "Aitheantas an Roghchláir Chórais" + +msgid "Prefer Native Menu" +msgstr "Is Fearr Roghchlár Dúchasach" + +msgid "Fill Mode" +msgstr "Mód Líonta" + +msgid "Show Percentage" +msgstr "Taispeáin Céatadán" + +msgid "Indeterminate" +msgstr "Neamhchinntithe" + +msgid "Preview Indeterminate" +msgstr "Réamhamharc Neamhchinntithe" + +msgid "Min Value" +msgstr "Luach Min" + +msgid "Max Value" +msgstr "Luach Uasta" + +msgid "Step" +msgstr "Céim" + +msgid "Page" +msgstr "Leathanach" + +msgid "Exp Edit" +msgstr "Eagarthóir Exp" + +msgid "Rounded" +msgstr "Slánaithe" + +msgid "Allow Greater" +msgstr "Ceadaigh Níos Mó" + +msgid "Allow Lesser" +msgstr "Ceadaigh Níos Lú" + +msgid "Border Color" +msgstr "Dath na Teorann" + +msgid "Border Width" +msgstr "Leithead na Teorann" + +msgid "Elapsed Time" +msgstr "Am Caite" + +msgid "Outline" +msgstr "Imlíne" + +msgid "Env" +msgstr "Clúdach" + +msgid "Glyph Index" +msgstr "Innéacs Glyph" + +msgid "Glyph Count" +msgstr "Líon Glyph" + +msgid "Glyph Flags" +msgstr "Bratacha Glyph" + +msgid "Relative Index" +msgstr "Innéacs Coibhneasta" + +msgid "BBCode Enabled" +msgstr "BBCode Cumasaithe" + +msgid "Fit Content" +msgstr "Oiriúnaigh Ábhar" + +msgid "Scroll Active" +msgstr "Scrollaigh Gníomhach" + +msgid "Scroll Following" +msgstr "Scrollaigh tar éis" + +msgid "Tab Size" +msgstr "Méid na gCluaisíní" + +msgid "Markup" +msgstr "Marcáil" + +msgid "Custom Effects" +msgstr "Maisíochtaí Saincheaptha" + +msgid "Meta Underlined" +msgstr "Meta béim" + +msgid "Hint Underlined" +msgstr "Leid Aibhsithe" + +msgid "Threaded" +msgstr "Snáithithe" + +msgid "Progress Bar Delay" +msgstr "Moill ar Bharra Dul Chun Cinn" + +msgid "Text Selection" +msgstr "Roghnú Téacs" + +msgid "Selection Enabled" +msgstr "Roghnúchán Cumasaithe" + +msgid "Custom Step" +msgstr "Céim Shaincheaptha" + +msgid "Follow Focus" +msgstr "Lean Fócas" + +msgid "Horizontal Custom Step" +msgstr "Céim Shaincheaptha Chothrománach" + +msgid "Vertical Custom Step" +msgstr "Céim Shaincheaptha Ingearach" + +msgid "Horizontal Scroll Mode" +msgstr "Mód Scrollaigh Cothrománach" + +msgid "Vertical Scroll Mode" +msgstr "Mód Scrollaigh Ingearach" + +msgid "Scroll Deadzone" +msgstr "Scrollaigh Deadzone" + +msgid "Default Scroll Deadzone" +msgstr "Deadzone Scrollaigh Réamhshocraithe" + +msgid "Scrollable" +msgstr "Inscrollaithe" + +msgid "Tick Count" +msgstr "Cuir tic sa Líon" + +msgid "Ticks on Borders" +msgstr "Sceartáin ar Theorainneacha" + +msgid "Update on Text Changed" +msgstr "Nuashonrú ar théacs athraithe" + +msgid "Custom Arrow Step" +msgstr "Céim Saighead Saincheaptha" + +msgid "Split Offset" +msgstr "Fritháireamh Scoilte" + +msgid "Collapsed" +msgstr "Tite as a chéile" + +msgid "Dragger Visibility" +msgstr "Infheictheacht Dragger" + +msgid "Stretch Shrink" +msgstr "Sín Laghdaigh" + +msgid "Current Tab" +msgstr "Cluaisín Reatha" + +msgid "Tab Alignment" +msgstr "Ailíniú Cluaisíní" + +msgid "Clip Tabs" +msgstr "Cluaisíní Gearrthóg" + +msgid "Tab Close Display Policy" +msgstr "Polasaí Taispeána Dún na gCluaisíní" + +msgid "Max Tab Width" +msgstr "Leithead Cluaisíní Uasta" + +msgid "Scrolling Enabled" +msgstr "Scrollaigh cumasaithe" + +msgid "Drag to Rearrange Enabled" +msgstr "Tarraing go dtí an Cúlshocrú Cumasaithe" + +msgid "Tabs Rearrange Group" +msgstr "Grúpa Athchóirithe na dTáb" + +msgid "Scroll to Selected" +msgstr "Scrollaigh go Roghnaithe" + +msgid "Select With RMB" +msgstr "Roghnaigh le RMB" + +msgid "Deselect Enabled" +msgstr "Díroghnaigh Cumasaithe" + +msgid "Tabs" +msgstr "Cluaisíní" + +msgid "Tabs Position" +msgstr "Suíomh na dTáb" + +msgid "Tabs Visible" +msgstr "Táib Infheicthe" + +msgid "All Tabs in Front" +msgstr "Gach Cluaisín chun Tosaigh" + +msgid "Use Hidden Tabs for Min Size" +msgstr "Bain úsáid as cluaisíní i bhfolach le haghaidh méid min" + +msgid "Tab Focus Mode" +msgstr "Mód Fócas Cluaisíní" + +msgid "Wrap Mode" +msgstr "Timfhilleadh Mód" + +msgid "Smooth" +msgstr "Mín" + +msgid "Past End of File" +msgstr "Deireadh an Chomhaid Roimhe Seo" + +msgid "Fit Content Height" +msgstr "Oiriúnaigh Airde an Ábhair" + +msgid "Draw" +msgstr "Tarraing" + +msgid "Draw When Editable Disabled" +msgstr "Tarraing nuair is féidir é a chur in eagar" + +msgid "Move on Right Click" +msgstr "Bog ar dheis cliceáil" + +msgid "Multiple" +msgstr "Il" + +msgid "Syntax Highlighter" +msgstr "Aibhsitheoir Comhréire" + +msgid "Visual Whitespace" +msgstr "Spás Bán Amhairc" + +msgid "Control Chars" +msgstr "Chars Rialaithe" + +msgid "Spaces" +msgstr "Spásanna" + +msgid "Text Edit Idle Detect (sec)" +msgstr "Téacs Edit Idle Bhrath (soic)" + +msgid "Text Edit Undo Stack Max Size" +msgstr "Cuir Téacs in Eagar Cealaigh Méid Max Stack" + +msgctxt "Ordinary" +msgid "Normal" +msgstr "Gnáth" + +msgid "Hover" +msgstr "HoverGenericName" + +msgid "Focused" +msgstr "Dírithe" + +msgid "Click Mask" +msgstr "Cliceáil Masc" + +msgid "Ignore Texture Size" +msgstr "Déan neamhaird de mhéid na huigeachta" + +msgid "Radial Fill" +msgstr "Líonadh Gathacha" + +msgid "Initial Angle" +msgstr "Uillinn Tosaigh" + +msgid "Fill Degrees" +msgstr "Líon Céimeanna" + +msgid "Center Offset" +msgstr "Fritháireamh an Ionaid" + +msgid "Nine Patch Stretch" +msgstr "Stráice Naoi Paiste" + +msgid "Stretch Margin" +msgstr "Imeall Sín" + +msgid "Under" +msgstr "Faoi" + +msgid "Over" +msgstr "Níos mó ná" + +msgid "Progress Offset" +msgstr "Fritháireamh Dul Chun Cinn" + +msgid "Tint" +msgstr "Dathadh" + +msgid "Expand Mode" +msgstr "Leathnaigh Mód" + +msgid "Custom Minimum Height" +msgstr "Airde Íosta Saincheaptha" + +msgid "Column Titles Visible" +msgstr "Teidil Cholúin Infheicthe" + +msgid "Hide Folding" +msgstr "Folaigh Fillte" + +msgid "Enable Recursive Folding" +msgstr "Cumasaigh Fillte Athchúrsach" + +msgid "Hide Root" +msgstr "Folaigh Fréamh" + +msgid "Drop Mode Flags" +msgstr "Bratacha mód titim" + +msgid "Scroll Horizontal Enabled" +msgstr "Scrollaigh Cothrománach Cumasaithe" + +msgid "Scroll Vertical Enabled" +msgstr "Scrollaigh Ingearach Cumasaithe" + +msgid "Audio Track" +msgstr "Rian Fuaime" + +msgid "Paused" +msgstr "Curtha ar sos" + +msgid "Expand" +msgstr "Leathnaigh" + +msgid "Buffering Msec" +msgstr "Maolánú Msec" + +msgid "Self Modulate" +msgstr "Féin-Mhodhnú" + +msgid "Show Behind Parent" +msgstr "Taispeáin taobh thiar de thuismitheoir" + +msgid "Clip Children" +msgstr "Clip Leanaí" + +msgid "Light Mask" +msgstr "Masc Solais" + +msgid "Visibility Layer" +msgstr "Sraith Infheictheachta" + +msgid "Ordering" +msgstr "Ordú" + +msgid "Z Index" +msgstr "Innéacs Z" + +msgid "Z as Relative" +msgstr "Z mar Ghaolainn" + +msgid "Y Sort Enabled" +msgstr "Sórtáil Y Cumasaithe" + +msgid "Use Parent Material" +msgstr "Úsáid Ábhar Tuismitheora" + +msgid "Diffuse" +msgstr "Idirleata" + +msgid "NormalMap" +msgstr "Gnáthmhapa" + +msgid "Shininess" +msgstr "Solas" + +msgid "Download File" +msgstr "Íoslódáil Comhad" + +msgid "Download Chunk Size" +msgstr "Íosluchtaigh Méid an Smutáin" + +msgid "Accept Gzip" +msgstr "Glac le Gzip" + +msgid "Body Size Limit" +msgstr "Teorainn Mhéid an Choirp" + +msgid "Max Redirects" +msgstr "Atreoruithe Max" + +msgid "Timeout" +msgstr "Teorainn ama" + +msgid "Transfer Mode" +msgstr "Mód Aistrithe" + +msgid "Transfer Channel" +msgstr "Cainéal Aistrithe" + +msgid "Node Name Num Separator" +msgstr "Node Ainm Num Deighilteoir" + +msgid "Node Name Casing" +msgstr "Cásáil Ainm Nód" + +msgid "Physics Priority" +msgstr "Tosaíocht Fisice" + +msgid "Thread Group" +msgstr "Grúpa Snáithe" + +msgid "Group" +msgstr "Grúpa" + +msgid "Group Order" +msgstr "Ordú Grúpa" + +msgid "Messages" +msgstr "Teachtaireachtaí" + +msgid "Physics Interpolation" +msgstr "Idirshuíomh Fisice" + +msgid "Auto Translate" +msgstr "Aistriú Uathoibríoch" + +msgid "Editor Description" +msgstr "Cur Síos ar an Eagarthóir" + +msgid "Time Left" +msgstr "Am Fágtha" + +msgid "Debug Collisions Hint" +msgstr "Leid Imbhuailtí Dífhabhtaithe" + +msgid "Debug Paths Hint" +msgstr "Leid cosáin dífhabhtaithe" + +msgid "Debug Navigation Hint" +msgstr "Leid Nascleanúna Dífhabhtaithe" + +msgid "Multiplayer Poll" +msgstr "Pobalbhreith Ilimreora" + +msgid "Shapes" +msgstr "Cruthanna" + +msgid "Shape Color" +msgstr "Dath an Chrutha" + +msgid "Contact Color" +msgstr "Dath Teagmhála" + +msgid "Geometry Color" +msgstr "Dath céimseata" + +msgid "Geometry Width" +msgstr "Leithead céimseata" + +msgid "Max Contacts Displayed" +msgstr "Uasteagmhálacha ar taispeáint" + +msgid "Draw 2D Outlines" +msgstr "Tarraing Imlíne 2T" + +msgid "Anti Aliasing" +msgstr "Frithailiasáil" + +msgid "MSAA 2D" +msgstr "MSAA 2D" + +msgid "MSAA 3D" +msgstr "MSAA 3D" + +msgid "Viewport" +msgstr "Amharcphort" + +msgid "Transparent Background" +msgstr "Cúlra Trédhearcach" + +msgid "HDR 2D" +msgstr "HDR 2D" + +msgid "Screen Space AA" +msgstr "Spás Scáileáin AA" + +msgid "Use TAA" +msgstr "Úsáid TAA" + +msgid "Use Debanding" +msgstr "Bain úsáid as Díbhandáil" + +msgid "Use Occlusion Culling" +msgstr "Úsáid Culling Occlusion" + +msgid "Mesh LOD" +msgstr "Mogalra LOD" + +msgid "LOD Change" +msgstr "Athrú LOD" + +msgid "Threshold Pixels" +msgstr "Picteilíní Tairsí" + +msgid "Snap 2D Transforms to Pixel" +msgstr "Athraíonn Snap 2D go Picteilíní" + +msgid "Snap 2D Vertices to Pixel" +msgstr "Léim Vertices 2D go Picteilíní" + +msgid "VRS" +msgstr "VRSName" + +msgid "Lights and Shadows" +msgstr "Soilse agus Scáthanna" + +msgid "Positional Shadow" +msgstr "Scáth Suímh" + +msgid "Atlas Size" +msgstr "Atlas Méid" + +msgid "Atlas 16 Bits" +msgstr "Atlas 16 giotán" + +msgid "Atlas Quadrant 0 Subdiv" +msgstr "Ceathrúchán Atláis 0 Fo-roinn" + +msgid "Atlas Quadrant 1 Subdiv" +msgstr "Ceathrúchán Atláis 1 Fo-roinn" + +msgid "Atlas Quadrant 2 Subdiv" +msgstr "Ceathrúchán Atláis 2 Fo-roinn" + +msgid "Atlas Quadrant 3 Subdiv" +msgstr "Ceathrúchán Atláis 3 Fo-roinn" + +msgid "SDF" +msgstr "SDF" + +msgid "Oversize" +msgstr "Ró-thomhas" + +msgid "Default Environment" +msgstr "Timpeallacht Réamhshocraithe" + +msgid "Enable Object Picking" +msgstr "Cumasaigh Piocadh Réada" + +msgid "Menu" +msgstr "Clár" + +msgid "Wait Time" +msgstr "Am Feithimh" + +msgid "Autostart" +msgstr "Uath- thosaithe" + +msgid "Viewport Path" +msgstr "Conair an Phoirt Amhairc" + +msgid "Disable 3D" +msgstr "Díchumasaigh 3D" + +msgid "Use XR" +msgstr "Úsáid XR" + +msgid "Own World 3D" +msgstr "Domhan Féin 3D" + +msgid "World 3D" +msgstr "Domhan 3D" + +msgid "Transparent BG" +msgstr "BG Trédhearcach" + +msgid "Handle Input Locally" +msgstr "Láimhseáil Ionchur go hÁitiúil" + +msgid "Debug Draw" +msgstr "Tarraingt Dífhabhtaithe" + +msgid "Use HDR 2D" +msgstr "Úsáid HDR 2D" + +msgid "Scaling 3D" +msgstr "Scálú 3D" + +msgid "Scaling 3D Mode" +msgstr "Mód Scálú 3D" + +msgid "Scaling 3D Scale" +msgstr "Scálú Scála 3D" + +msgid "Texture Mipmap Bias" +msgstr "Claonadh Mipmap Uigeachta" + +msgid "FSR Sharpness" +msgstr "Géire FSR" + +msgid "Variable Rate Shading" +msgstr "Scáthú Ráta Athraitheach" + +msgid "Canvas Items" +msgstr "Míreanna Canbháis" + +msgid "Audio Listener" +msgstr "Éisteoir Fuaime" + +msgid "Enable 2D" +msgstr "Cumasaigh 2D" + +msgid "Enable 3D" +msgstr "Cumasaigh 3D" + +msgid "Object Picking" +msgstr "Piocadh Réada" + +msgid "Object Picking Sort" +msgstr "Sórtáil Piocadh Réada" + +msgid "Object Picking First Only" +msgstr "Réad Ag Piocadh Ar Dtús Amháin" + +msgid "Disable Input" +msgstr "Díchumasaigh Ionchur" + +msgid "Positional Shadow Atlas" +msgstr "Atlas Scáth Suímh" + +msgid "16 Bits" +msgstr "16 Giotán" + +msgid "Quad 0" +msgstr "Cuad 0" + +msgid "Quad 1" +msgstr "Ceathair 1" + +msgid "Quad 2" +msgstr "Ceathair 2" + +msgid "Quad 3" +msgstr "Ceathair 3" + +msgid "Canvas Cull Mask" +msgstr "Masc Cuileann Canbháis" + +msgid "Size 2D Override" +msgstr "Sáraíocht Méid 2D" + +msgid "Size 2D Override Stretch" +msgstr "Stráice Sáraithe Méid 2D" + +msgid "Render Target" +msgstr "Sprioc Rindreála" + +msgid "Clear Mode" +msgstr "Mód Glan" + +msgid "Current Screen" +msgstr "Scáileán Reatha" + +msgid "Mouse Passthrough Polygon" +msgstr "Polagán Passthrough Luiche" + +msgid "Wrap Controls" +msgstr "Timfhilleadh Rialtáin" + +msgid "Transient" +msgstr "Neamhbhuan" + +msgid "Transient to Focused" +msgstr "Neamhbhuan go Dírithe" + +msgid "Exclusive" +msgstr "Eisiach" + +msgid "Unresizable" +msgstr "Neamh-inghlactha" + +msgid "Unfocusable" +msgstr "Neamhdhírithe" + +msgid "Popup Window" +msgstr "Preabfhuinneog" + +msgid "Mouse Passthrough" +msgstr "Passthrough Luiche" + +msgid "Force Native" +msgstr "Fórsa Dúchasach" + +msgid "Min Size" +msgstr "Méid Min" + +msgid "Max Size" +msgstr "Uasmhéid" + +msgid "Keep Title Visible" +msgstr "Coinnigh an Teideal Infheicthe" + +msgid "Content Scale" +msgstr "Scála Inneachair" + +msgid "Swap Cancel OK" +msgstr "Babhtáil Cealaigh OK" + +msgid "Layer Names" +msgstr "Ainmneacha na Sraithe" + +msgid "2D Render" +msgstr "Rindreáil 2D" + +msgid "3D Render" +msgstr "Rindreáil 3D" + +msgid "2D Physics" +msgstr "Fisic 2D" + +msgid "2D Navigation" +msgstr "Nascleanúint 2D" + +msgid "3D Physics" +msgstr "Fisic 3D" + +msgid "3D Navigation" +msgstr "Nascleanúint 3D" + +msgid "Segments" +msgstr "Deighleáin" + +msgid "Parsed Geometry Type" +msgstr "Cineál Céimseata Parsáilte" + +msgid "Parsed Collision Mask" +msgstr "Masc Imbhuailtí Parsáilte" + +msgid "Source Geometry Mode" +msgstr "Mód Céimseata Foinseach" + +msgid "Source Geometry Group Name" +msgstr "Ainm an Ghrúpa Céimseata Foinseach" + +msgid "Cells" +msgstr "Cealla" + +msgid "Baking Rect" +msgstr "Rect Bácála" + +msgid "Baking Rect Offset" +msgstr "Fritháireamh Rect Bácála" + +msgid "A" +msgstr "A" + +msgid "B" +msgstr "B" + +msgid "Slide on Slope" +msgstr "Sleamhnaigh ar Fhána" + +msgid "Custom Solver Bias" +msgstr "Claonadh Réitigh Saincheaptha" + +msgid "Execution Mode" +msgstr "Mód Forghníomhaithe" + +msgid "Target Nodepath" +msgstr "Sprioc Nodepath" + +msgid "Tip Nodepath" +msgstr "Leid Nodepath" + +msgid "CCDIK Data Chain Length" +msgstr "Fad Slabhra Sonraí CCDIK" + +msgid "FABRIK Data Chain Length" +msgstr "Fabrik Fad Slabhra Sonraí" + +msgid "Jiggle Data Chain Length" +msgstr "Fad Slabhra Sonraí Jiggle" + +msgid "Default Joint Settings" +msgstr "Comhshocruithe Réamhshocraithe" + +msgid "Use Gravity" +msgstr "Úsáid Domhantarraingt" + +msgid "Bone Index" +msgstr "Innéacs Cnámh" + +msgid "Bone 2D Node" +msgstr "Nód Cnámh 2D" + +msgid "Physical Bone Chain Length" +msgstr "Fad Slabhra Cnámh Fisiciúil" + +msgid "Target Minimum Distance" +msgstr "Sprioc Íosfhad" + +msgid "Target Maximum Distance" +msgstr "Sprioc Fad Uasta" + +msgid "Flip Bend Direction" +msgstr "Smeach Bend Treo" + +msgid "Modification Count" +msgstr "Líon na modhnuithe" + +msgid "Right Side" +msgstr "Taobh Deas" + +msgid "Right Corner" +msgstr "Cúinne Ar Dheis" + +msgid "Bottom Right Side" +msgstr "Bun an Taobh Deas" + +msgid "Bottom Right Corner" +msgstr "Bun an chúinne ar dheis" + +msgid "Bottom Side" +msgstr "Taobh Bun" + +msgid "Bottom Corner" +msgstr "Cúinne Bun" + +msgid "Bottom Left Side" +msgstr "Bun Taobh Clé" + +msgid "Bottom Left Corner" +msgstr "Cúinne Bun ar Chlé" + +msgid "Left Side" +msgstr "Taobh Clé" + +msgid "Left Corner" +msgstr "An Cúinne Ar Chlé" + +msgid "Top Left Side" +msgstr "Barr ar an Taobh Clé" + +msgid "Top Left Corner" +msgstr "Cúinne Barr ar Chlé" + +msgid "Top Side" +msgstr "An Taobh Barr" + +msgid "Top Corner" +msgstr "Cúinne Barr" + +msgid "Top Right Side" +msgstr "Barr ar thaobh na láimhe deise" + +msgid "Top Right Corner" +msgstr "Cúinne Barr ar Dheis" + +msgid "Terrains" +msgstr "Talamh" + +msgid "Custom Data" +msgstr "Sonraí Saincheaptha" + +msgid "Tile Proxies" +msgstr "Proxies Tíleanna" + +msgid "Source Level" +msgstr "Leibhéal Foinseach" + +msgid "Coords Level" +msgstr "Leibhéal Coords" + +msgid "Alternative Level" +msgstr "Leibhéal Malartach" + +msgid "Tile Shape" +msgstr "Stencils" + +msgid "Tile Layout" +msgstr "Leagan Amach Tíleanna" + +msgid "Tile Offset Axis" +msgstr "Ais Fritháireamh Tíleanna" + +msgid "Tile Size" +msgstr "Méid na Tíleanna" + +msgid "UV Clipping" +msgstr "Gearradh UV" + +msgid "Occlusion Layers" +msgstr "Sraitheanna Occlusion" + +msgid "Physics Layers" +msgstr "Sraitheanna Fisice" + +msgid "Terrain Sets" +msgstr "Seiteanna tír-raoin" + +msgid "Custom Data Layers" +msgstr "Sraitheanna Sonraí Saincheaptha" + +msgid "Scenes" +msgstr "Radhairc" + +msgid "Scene" +msgstr "Radharc" + +msgid "Display Placeholder" +msgstr "Ionadchoinneálaí Taispeána" + +msgid "Polygons Count" +msgstr "Líon na bPolagán" + +msgid "One Way" +msgstr "Bealach Amháin" + +msgid "One Way Margin" +msgstr "Imeall Bealach Amháin" + +msgid "Terrains Peering Bit" +msgstr "Tír-raon Peering Bit" + +msgid "Transpose" +msgstr "Trasuíomh" + +msgid "Texture Origin" +msgstr "Bunús uigeachta" + +msgid "Terrain Set" +msgstr "Tír-raon Socraigh" + +msgid "Terrain" +msgstr "Tír-raon" + +msgid "Miscellaneous" +msgstr "Ilghnéitheach" + +msgid "Probability" +msgstr "Dóchúlacht" + +msgid "Distance" +msgstr "Fad" + +msgid "Backface Collision" +msgstr "Imbhualadh Cúlchló" + +msgid "Density" +msgstr "Dlús" + +msgid "Height Falloff" +msgstr "Falloff Airde" + +msgid "Edge Fade" +msgstr "Céimnigh an Chiumhais" + +msgid "Density Texture" +msgstr "Uigeacht Dlúis" + +msgid "Map Width" +msgstr "Leithead an Mhapa" + +msgid "Map Depth" +msgstr "Doimhneacht na Léarscáile" + +msgid "Map Data" +msgstr "Sonraí Léarscáile" + +msgid "Item" +msgstr "Mír" + +msgid "Mesh Transform" +msgstr "Mogalra Trasfhoirmigh" + +msgid "Navigation Mesh Transform" +msgstr "Nascleanúint mogalra Trasfhoirmigh" + +msgid "Preview" +msgstr "Réamhamharc" + +msgid "Add UV2" +msgstr "Cuir UV2 Leis" + +msgid "UV2 Padding" +msgstr "Stuáil UV2" + +msgid "Subdivide Width" +msgstr "Leithead Foroinnte" + +msgid "Subdivide Height" +msgstr "Airde Foroinnte" + +msgid "Subdivide Depth" +msgstr "Doimhneacht Foroinnte" + +msgid "Top Radius" +msgstr "Ga Barr" + +msgid "Bottom Radius" +msgstr "Ga Bun" + +msgid "Cap Top" +msgstr "Barr caipín" + +msgid "Cap Bottom" +msgstr "Cap Bun" + +msgid "Left to Right" +msgstr "Clé go Deas" + +msgid "Is Hemisphere" +msgstr "An bhfuil leathsféar" + +msgid "Ring Segments" +msgstr "Deighleáin Fáinne" + +msgid "Radial Steps" +msgstr "Céimeanna Gathacha" + +msgid "Section Length" +msgstr "Fad na Rannóige" + +msgid "Section Rings" +msgstr "Fáinní Rannóige" + +msgid "Section Segments" +msgstr "Deighleáin Rannáin" + +msgid "Curve Step" +msgstr "Céim Cuar" + +msgid "Bind Count" +msgstr "Líon na gCeangailtí" + +msgid "Bind" +msgstr "Ceangal" + +msgid "Bone" +msgstr "Cnámh" + +msgid "Sky" +msgstr "Spéir" + +msgid "Top Color" +msgstr "Dath Barr" + +msgid "Horizon Color" +msgstr "Dath na Spéire" + +msgid "Energy Multiplier" +msgstr "Iolraitheoir Fuinnimh" + +msgid "Cover" +msgstr "Clúdach" + +msgid "Cover Modulate" +msgstr "Modhnú clúdaigh" + +msgid "Ground" +msgstr "Talamh" + +msgid "Bottom Color" +msgstr "Dath Bun" + +msgid "Sun" +msgstr "An Ghrian" + +msgid "Panorama" +msgstr "Lánléargas" + +msgid "Rayleigh" +msgstr "Rayleigh" + +msgid "Coefficient" +msgstr "Comhéifeacht" + +msgid "Mie" +msgstr "Tá mo" + +msgid "Eccentricity" +msgstr "Éicint" + +msgid "Turbidity" +msgstr "Cumas Taise" + +msgid "Sun Disk Scale" +msgstr "Scála Diosca Gréine" + +msgid "Ground Color" +msgstr "Dath na Talún" + +msgid "Night Sky" +msgstr "Spéir na hOíche" + +msgid "Fallback Environment" +msgstr "Timpeallacht Fallback" + +msgid "Plane" +msgstr "Eitleán" + +msgid "Frames" +msgstr "Frámaí" + +msgid "Pause" +msgstr "ginideach: Dhún na nGall" + +msgid "Atlas" +msgstr "Atlas" + +msgid "Filter Clip" +msgstr "Gearrthóg Scagaire" + +msgid "Polyphony" +msgstr "PolyphonyName" + +msgid "Format" +msgstr "Formáid" + +msgid "Mix Rate" +msgstr "Ráta Meascáin" + +msgid "Stereo" +msgstr "Steirió" + +msgid "Profile" +msgstr "Próifíl" + +msgid "Bonemap" +msgstr "Mapa cnámh" + +msgid "Exposure" +msgstr "Nochtadh" + +msgid "Sensitivity" +msgstr "Íogaireacht" + +msgid "Multiplier" +msgstr "Iolraitheoir" + +msgid "Auto Exposure" +msgstr "Nochtadh Uathoibríoch" + +msgid "DOF Blur" +msgstr "Cuma DOF" + +msgid "Far Enabled" +msgstr "Cumasaithe go Fada" + +msgid "Far Distance" +msgstr "Fad Fad" + +msgid "Far Transition" +msgstr "Aistriú Fada" + +msgid "Near Enabled" +msgstr "In aice le Cumasaithe" + +msgid "Near Distance" +msgstr "Gar d'achar" + +msgid "Near Transition" +msgstr "Gar don Aistriú" + +msgid "Min Sensitivity" +msgstr "Íogaireacht Min" + +msgid "Max Sensitivity" +msgstr "Íogaireacht Uasta" + +msgid "Frustum" +msgstr "FrustumName" + +msgid "Focus Distance" +msgstr "Fad Fócais" + +msgid "Focal Length" +msgstr "Fad Fócasach" + +msgid "Aperture" +msgstr "Cró" + +msgid "Shutter Speed" +msgstr "Luas Cróluas" + +msgid "Min Exposure Value" +msgstr "Luach nochta min" + +msgid "Max Exposure Value" +msgstr "Luach Nochta Uasta" + +msgid "Camera Feed ID" +msgstr "ID Fotha Ceamara" + +msgid "Which Feed" +msgstr "Cén Fotha" + +msgid "Camera Is Active" +msgstr "Tá an ceamara gníomhach" + +msgid "Light Mode" +msgstr "Mód Solais" + +msgid "Particles Animation" +msgstr "Beochan na gCáithníní" + +msgid "Particles Anim H Frames" +msgstr "Cáithníní Anim H Frámaí" + +msgid "Particles Anim V Frames" +msgstr "Cáithníní Anim V Frámaí" + +msgid "Particles Anim Loop" +msgstr "Lúb Anim Cáithníní" + +msgid "Effect Callback Type" +msgstr "Cineál aisghlaoigh maisíochta" + +msgid "Access Resolved Color" +msgstr "Rochtain Réitithe Dath" + +msgid "Access Resolved Depth" +msgstr "Rochtain Réitithe Doimhneacht" + +msgid "Needs Motion Vectors" +msgstr "Veicteoirí Gluaisne de Dhíth" + +msgid "Needs Normal Roughness" +msgstr "Riachtanais Roughness Gnáth" + +msgid "Needs Separate Specular" +msgstr "Riachtanais Specular Ar Leith" + +msgid "Compositor Effects" +msgstr "Éifeachtaí Compositor" + +msgid "Load Path" +msgstr "Luchtaigh Conair" + +msgid "Bake Resolution" +msgstr "Rún Bácála" + +msgid "Bake Interval" +msgstr "Eatramh Bácála" + +msgid "Up Vector" +msgstr "Veicteoir Suas" + +msgid "Curve X" +msgstr "Cuar X" + +msgid "Curve Y" +msgstr "Cuar Y" + +msgid "Curve Z" +msgstr "Cuar Z" + +msgid "Background" +msgstr "Cúlra" + +msgid "Canvas Max Layer" +msgstr "Canbhás Max Sraith" + +msgid "Custom FOV" +msgstr "FOV Saincheaptha" + +msgid "Ambient Light" +msgstr "Solas Comhthimpeallach" + +msgid "Source" +msgstr "Foinse" + +msgid "Sky Contribution" +msgstr "Ranníocaíocht Sky" + +msgid "Reflected Light" +msgstr "Solas Frithchaite" + +msgid "Tonemap" +msgstr "Mapa Ton" + +msgid "White" +msgstr "Bán" + +msgid "SSR" +msgstr "SSR" + +msgid "Fade In" +msgstr "céimnithe isteach" + +msgid "Fade Out" +msgstr "Céimnigh Amach" + +msgid "Depth Tolerance" +msgstr "Caoinfhulaingt Doimhneachta" + +msgid "SSAO" +msgstr "SSAOName" + +msgid "Power" +msgstr "Cumhacht" + +msgid "Detail" +msgstr "Mionsonraí" + +msgid "Horizon" +msgstr "Léaslíne" + +msgid "Sharpness" +msgstr "Faobhar" + +msgid "Light Affect" +msgstr "Tionchar Solais" + +msgid "AO Channel Affect" +msgstr "Tionchar Cainéal AO" + +msgid "SSIL" +msgstr "SSIL" + +msgid "Normal Rejection" +msgstr "Gnáthdhiúltú" + +msgid "SDFGI" +msgstr "SDFGIName" + +msgid "Use Occlusion" +msgstr "Úsáid Occlusion" + +msgid "Read Sky Light" +msgstr "Léigh Sky Light" + +msgid "Bounce Feedback" +msgstr "Preab Aiseolas" + +msgid "Cascades" +msgstr "Cascáidigh" + +msgid "Min Cell Size" +msgstr "Méid na Cille Min" + +msgid "Cascade 0 Distance" +msgstr "Cascáidigh 0 Fad" + +msgid "Y Scale" +msgstr "Scála Y" + +msgid "Probe Bias" +msgstr "Claonadh Probe" + +msgid "Glow" +msgstr "Luisne" + +msgid "Levels" +msgstr "Leibhéil" + +msgid "1" +msgstr "1" + +msgid "2" +msgstr "2" + +msgid "3" +msgstr "3" + +msgid "4" +msgstr "4" + +msgid "5" +msgstr "5" + +msgid "6" +msgstr "6" + +msgid "7" +msgstr "7" + +msgid "Mix" +msgstr "Measc" + +msgid "Bloom" +msgstr "Faoi Bhláth" + +msgid "HDR Threshold" +msgstr "Tairseach HDR" + +msgid "HDR Scale" +msgstr "Scála HDR" + +msgid "HDR Luminance Cap" +msgstr "Caipín Luminance HDR" + +msgid "Map Strength" +msgstr "Neart Léarscáile" + +msgid "Map" +msgstr "Léarscáil" + +msgid "Fog" +msgstr "Ceo" + +msgid "Light Color" +msgstr "Dath Éadrom" + +msgid "Light Energy" +msgstr "Fuinneamh Éadrom" + +msgid "Sun Scatter" +msgstr "Scaip na Gréine" + +msgid "Aerial Perspective" +msgstr "Dearcadh ón aer" + +msgid "Sky Affect" +msgstr "Tionchar na Spéire" + +msgid "Height Density" +msgstr "Dlús Airde" + +msgid "Depth Curve" +msgstr "Cuar Doimhneachta" + +msgid "Depth Begin" +msgstr "Tús Doimhneachta" + +msgid "Depth End" +msgstr "Deireadh doimhneachta" + +msgid "Volumetric Fog" +msgstr "Ceo toirtmhéadrach" + +msgid "GI Inject" +msgstr "Instealladh GI" + +msgid "Anisotropy" +msgstr "Ainiseatrópa" + +msgid "Detail Spread" +msgstr "Scaipeadh Sonraí" + +msgid "Ambient Inject" +msgstr "Instealladh Comhthimpeallach" + +msgid "Temporal Reprojection" +msgstr "Athdhíriú Ama" + +msgid "Adjustments" +msgstr "Coigeartuithe" + +msgid "Brightness" +msgstr "Gile" + +msgid "Saturation" +msgstr "Sáithiú" + +msgid "Color Correction" +msgstr "Ceartú Datha" + +msgid "Base Font" +msgstr "Bunchló" + +msgid "Features" +msgstr "Gnéithe" + +msgid "Extra Spacing" +msgstr "Spásáil Bhreise" + +msgid "Glyph" +msgstr "GlyphName" + +msgid "Space" +msgstr "Spás" + +msgid "Baseline" +msgstr "Bonnlíne" + +msgid "Font Names" +msgstr "Ainmneacha Clófhoirne" + +msgid "Font Italic" +msgstr "Cló Iodálach" + +msgid "Font Weight" +msgstr "Meáchan Cló" + +msgid "Font Stretch" +msgstr "Stráice Cló" + +msgid "Interpolation" +msgstr "Idirshuíomh" + +msgid "Color Space" +msgstr "Spás Datha" + +msgid "Raw Data" +msgstr "Sonraí Amha" + +msgid "Offsets" +msgstr "Fritháirimh" + +msgid "Use HDR" +msgstr "Úsáid HDR" + +msgid "From" +msgstr "Ó" + +msgid "To" +msgstr "Chun" + +msgid "Next Pass" +msgstr "An Chéad Phas Eile" + +msgid "Shader" +msgstr "Scáthóir" + +msgid "Depth Draw Mode" +msgstr "Mód Tarraingthe Doimhneachta" + +msgid "Shading" +msgstr "Scáthú" + +msgid "Shading Mode" +msgstr "Mód Scáthaithe" + +msgid "Diffuse Mode" +msgstr "Mód Idirleata" + +msgid "Specular Mode" +msgstr "Mód Specular" + +msgid "Disable Ambient Light" +msgstr "Díchumasaigh Solas Comhthimpeallach" + +msgid "Disable Fog" +msgstr "Díchumasaigh Ceo" + +msgid "Vertex Color" +msgstr "Dath Stuaic" + +msgid "Use as Albedo" +msgstr "Úsáid mar Albedo" + +msgid "Is sRGB" +msgstr "An bhfuil sRGB" + +msgid "Texture Force sRGB" +msgstr "Fórsa Uigeachta sRGB" + +msgid "Texture MSDF" +msgstr "Uigeacht MSDF" + +msgid "ORM" +msgstr "ORM" + +msgid "Metallic" +msgstr "Miotalach" + +msgid "Texture Channel" +msgstr "Cainéal Uigeachta" + +msgid "Operator" +msgstr "Oibreoir" + +msgid "On UV2" +msgstr "Ar UV2" + +msgid "Rim" +msgstr "Imeall" + +msgid "Clearcoat" +msgstr "ClearcoatName" + +msgid "Flowmap" +msgstr "Sreabhmhapa" + +msgid "Ambient Occlusion" +msgstr "Occlusion Comhthimpeallach" + +msgid "Deep Parallax" +msgstr "Parallax Domhain" + +msgid "Min Layers" +msgstr "Sraitheanna Min" + +msgid "Max Layers" +msgstr "Sraitheanna Uasta" + +msgid "Flip Tangent" +msgstr "Smeach Tangent" + +msgid "Flip Binormal" +msgstr "Smeach Binormal" + +msgid "Flip Texture" +msgstr "Smeach Uigeacht" + +msgid "Subsurface Scattering" +msgstr "Scaipeadh Fodhromchla" + +msgid "Skin Mode" +msgstr "Mód Craicinn" + +msgid "Transmittance" +msgstr "Tarchur" + +msgid "Boost" +msgstr "Borradh" + +msgid "Back Lighting" +msgstr "Soilsiú Ar Ais" + +msgid "Backlight" +msgstr "BacklightName" + +msgid "Refraction" +msgstr "Athraonadh" + +msgid "UV Layer" +msgstr "Sraith UV" + +msgid "UV1" +msgstr "UV1" + +msgid "Triplanar" +msgstr "Tríphlandú" + +msgid "Triplanar Sharpness" +msgstr "Sárthacht Trí-phláin" + +msgid "World Triplanar" +msgstr "Tríphlandú Domhanda" + +msgid "UV2" +msgstr "UV2" + +msgid "Sampling" +msgstr "Sampláil" + +msgid "Shadows" +msgstr "Scáthanna" + +msgid "Disable Receive Shadows" +msgstr "Díchumasaigh Scáthanna Glactha" + +msgid "Shadow to Opacity" +msgstr "Scáth go Teimhneacht" + +msgid "Keep Scale" +msgstr "Coinnigh Scála" + +msgid "Particles Anim" +msgstr "Cáithníní Anim" + +msgid "H Frames" +msgstr "Frámaí H" + +msgid "V Frames" +msgstr "Frámaí V" + +msgid "Grow" +msgstr "Ag Fás" + +msgid "Use Point Size" +msgstr "Úsáid Méid an Phointe" + +msgid "Point Size" +msgstr "Méid an Phointe" + +msgid "Use Particle Trails" +msgstr "Úsáid Conairí na gCáithníní" + +msgid "Proximity Fade" +msgstr "Céimnithe Cóngarachta" + +msgid "MSDF" +msgstr "Msdf" + +msgid "Pixel Range" +msgstr "Raon Picteilíní" + +msgid "Convex Hull Downsampling" +msgstr "Downsampling Cabhail Dronnach" + +msgid "Convex Hull Approximation" +msgstr "Comhfhogasú Cabhail Dronnach" + +msgid "Lightmap Size Hint" +msgstr "Leid Méid Lightmap" + +msgid "Blend Shape Mode" +msgstr "Mód Cruth Cumaisc" + +msgid "Shadow Mesh" +msgstr "Mogalra Scáth" + +msgid "Base Texture" +msgstr "Uigeacht Bonn" + +msgid "Image Size" +msgstr "Méid na hÍomhá" + +msgid "Transform Format" +msgstr "Trasfhoirmigh Formáid" + +msgid "Use Colors" +msgstr "Úsáid Dathanna" + +msgid "Use Custom Data" +msgstr "Úsáid Sonraí Saincheaptha" + +msgid "Instance Count" +msgstr "Líon na nÁsc" + +msgid "Visible Instance Count" +msgstr "Líon na nÁsc Infheicthe" + +msgid "Partition Type" +msgstr "Cineál Deighiltí" + +msgid "Source Group Name" +msgstr "Ainm an Ghrúpa Foinseach" + +msgid "Cell Height" +msgstr "Airde na Cille" + +msgid "Max Climb" +msgstr "Tóg Max" + +msgid "Max Slope" +msgstr "Fána Uasta" + +msgid "Merge Size" +msgstr "Cumaisc Méid" + +msgid "Max Error" +msgstr "Earráid Uasta" + +msgid "Vertices per Polygon" +msgstr "Vertices per Polagán" + +msgid "Details" +msgstr "Sonraí" + +msgid "Sample Distance" +msgstr "Fad Samplach" + +msgid "Sample Max Error" +msgstr "Earráid Max Samplach" + +msgid "Low Hanging Obstacles" +msgstr "Constaicí Crochta Íseal" + +msgid "Ledge Spans" +msgstr "Réisí Ledge" + +msgid "Walkable Low Height Spans" +msgstr "Réisí Airde Íseal Insiúlta" + +msgid "Baking AABB" +msgstr "Bácáil AABB" + +msgid "Baking AABB Offset" +msgstr "Fritháireamh AABB Bácála" + +msgid "Bundled" +msgstr "Cuachta" + +msgid "Damping as Friction" +msgstr "Damping mar Frithchuimilt" + +msgid "Spawn" +msgstr "Sceith" + +msgid "Emission Shape Offset" +msgstr "Fritháireamh Cruth Astaíochta" + +msgid "Emission Shape Scale" +msgstr "Scála Cruth Astaíochta" + +msgid "Emission Sphere Radius" +msgstr "Ga Sféar Astaíochta" + +msgid "Emission Box Extents" +msgstr "Méid an Bhosca Astaíochta" + +msgid "Emission Point Texture" +msgstr "Uigeacht Pointe Astaíochta" + +msgid "Emission Normal Texture" +msgstr "Gnáthuigeacht Astaíochta" + +msgid "Emission Color Texture" +msgstr "Uigeacht Dath Astaíochta" + +msgid "Emission Point Count" +msgstr "Líon na bPointe Astaíochta" + +msgid "Emission Ring Axis" +msgstr "Ais Fáinne Astaíochta" + +msgid "Emission Ring Height" +msgstr "Astaíochta Ring Airde" + +msgid "Emission Ring Radius" +msgstr "Ga Fáinne Astaíochta" + +msgid "Emission Ring Inner Radius" +msgstr "Ga istigh fáinne astaíochta" + +msgid "Inherit Velocity Ratio" +msgstr "Cóimheas treoluais oidhreachta" + +msgid "Velocity Pivot" +msgstr "Treoluas Pivot" + +msgid "Animated Velocity" +msgstr "Treoluas Beoite" + +msgid "Velocity Limit" +msgstr "Teorainn treoluais" + +msgid "Directional Velocity" +msgstr "Treoluas Treorach" + +msgid "Radial Velocity" +msgstr "Treoluas Gathacha" + +msgid "Velocity Limit Curve" +msgstr "Cuar Teorann Treoluais" + +msgid "Accelerations" +msgstr "Luasghéaruithe" + +msgid "Attractor Interaction" +msgstr "Idirghníomhaíocht mhealltóra" + +msgid "Scale Curve" +msgstr "Scálaigh Cuar" + +msgid "Scale Over Velocity" +msgstr "Scálaigh Thar Treoluas" + +msgid "Scale over Velocity Curve" +msgstr "Scálaigh thar Chuar treoluais" + +msgid "Color Curves" +msgstr "Cuaráin Datha" + +msgid "Alpha Curve" +msgstr "Cuar Alfa" + +msgid "Emission Curve" +msgstr "Cuar Astaíochta" + +msgid "Turbulence" +msgstr "Suaiteacht" + +msgid "Noise Strength" +msgstr "Neart Torainn" + +msgid "Noise Scale" +msgstr "Scála Torainn" + +msgid "Noise Speed" +msgstr "Luas Torainn" + +msgid "Noise Speed Random" +msgstr "Luas Torainn Randamach" + +msgid "Influence over Life" +msgstr "Tionchar ar an Saol" + +msgid "Use Scale" +msgstr "Úsáid Scála" + +msgid "Amount at End" +msgstr "Méid ag deireadh" + +msgid "Amount at Collision" +msgstr "Méid ag Imbhualadh" + +msgid "Keep Velocity" +msgstr "Coinnigh treoluas" + +msgid "Rough" +msgstr "Garbh" + +msgid "Absorbent" +msgstr "Súgach" + +msgid "Size Override" +msgstr "Sáraigh Méid" + +msgid "Keep Compressed Buffer" +msgstr "Coinnigh Maolán Comhbhrúite" + +msgid "Scale Base Bone" +msgstr "Scálaigh Cnámh Bonn" + +msgid "Group Size" +msgstr "Méid an Ghrúpa" + +msgid "Bone Size" +msgstr "Méid na gCnámh" + +msgid "Sky Material" +msgstr "Ábhar Spéir" + +msgid "Process Mode" +msgstr "Mód Próisis" + +msgid "Radiance Size" +msgstr "Méid Radiance" + +msgid "Content Margins" +msgstr "Imill Inneachair" + +msgid "Blend" +msgstr "Cumaisc" + +msgid "Top Left" +msgstr "Barr ar Chlé" + +msgid "Top Right" +msgstr "Barr ar Dheis" + +msgid "Bottom Right" +msgstr "Bun ar Dheis" + +msgid "Bottom Left" +msgstr "Bun ar Chlé" + +msgid "Corner Detail" +msgstr "Sonraí cúinne" + +msgid "Expand Margins" +msgstr "Leathnaigh Imill" + +msgid "Grow Begin" +msgstr "Tús Fáis" + +msgid "Grow End" +msgstr "Deireadh Fáis" + +msgid "Texture Margins" +msgstr "Imill Uigeachta" + +msgid "Sub-Region" +msgstr "Fo-Réigiún" + +msgid "Keyword Colors" +msgstr "Dathanna Eochairfhocal" + +msgid "Member Keyword Colors" +msgstr "Dathanna Eochairfhocal Ball" + +msgid "Color Regions" +msgstr "Réigiúin Datha" + +msgid "Preserve Invalid" +msgstr "Caomhnaigh Neamhbhailí" + +msgid "Preserve Control" +msgstr "Caomhnaigh Rialú" + +msgid "Custom Punctuation" +msgstr "Poncaíocht Shaincheaptha" + +msgid "Break Flags" +msgstr "Bratacha Sosa" + +msgid "Default Base Scale" +msgstr "Bunscála Réamhshocraithe" + +msgid "Default Font" +msgstr "Cló Réamhshocraithe" + +msgid "Default Font Size" +msgstr "Clómhéid Réamhshocraithe" + +msgid "File" +msgstr "Comhad" + +msgid "Output Port for Preview" +msgstr "Port Aschurtha le haghaidh Réamhamhairc" + +msgid "Modes" +msgstr "Móid" + +msgid "Varyings" +msgstr "Athraíonn" + +msgid "Input Name" +msgstr "Ainm Ionchurtha" + +msgid "Parameter Name" +msgstr "Ainm an pharaiméadair" + +msgid "Qualifier" +msgstr "Cáilitheoir" + +msgid "Autoshrink" +msgstr "AutoshrinkName" + +msgid "Varying Name" +msgstr "Ainm Éagsúil" + +msgid "Varying Type" +msgstr "Cineál Éagsúil" + +msgid "Op Type" +msgstr "De Réir Cineáil" + +msgid "Constant" +msgstr "Tairiseach" + +msgid "Texture Type" +msgstr "Cineál Uigeachta" + +msgid "Texture Array" +msgstr "Eagar Uigeachta" + +msgid "Cube Map" +msgstr "Léarscáil Ciúb" + +msgid "Function" +msgstr "Feidhm" + +msgid "Hint" +msgstr "Leid" + +msgid "Default Value Enabled" +msgstr "Luach Réamhshocraithe Cumasaithe" + +msgid "Default Value" +msgstr "Luach Réamhshocraithe" + +msgid "Color Default" +msgstr "Réamhshocrú datha" + +msgid "Texture Repeat" +msgstr "Athdhéanamh Uigeachta" + +msgid "Texture Source" +msgstr "Foinse Uigeachta" + +msgid "Billboard Type" +msgstr "Cineál Billboard" + +msgid "Mode 2D" +msgstr "Mód 2D" + +msgid "Use All Surfaces" +msgstr "Úsáid Gach Dromchla" + +msgid "Surface Index" +msgstr "Innéacs Dromchla" + +msgid "Degrees Mode" +msgstr "Mód Céimeanna" + +msgid "Font Pressed Color" +msgstr "Dath Brúite ar an gCló" + +msgid "Font Hover Color" +msgstr "Dath ainlithe cló" + +msgid "Font Focus Color" +msgstr "Dath Fócas an Chló" + +msgid "Font Hover Pressed Color" +msgstr "Dath Brúite Hover Cló" + +msgid "Font Disabled Color" +msgstr "Dath Díchumasaithe an Chló" + +msgid "Font Outline Color" +msgstr "Dath Imlíneach an Chló" + +msgid "Icon Normal Color" +msgstr "Gnáthdhath deilbhíní" + +msgid "Icon Pressed Color" +msgstr "Dath Brúite Deilbhíní" + +msgid "Icon Hover Color" +msgstr "Dath an Deilbhín Hover" + +msgid "Icon Hover Pressed Color" +msgstr "Dath Brúite Deilbhín Hover" + +msgid "Icon Focus Color" +msgstr "Dath Fócas Deilbhíní" + +msgid "Icon Disabled Color" +msgstr "Dath Díchumasaithe Deilbhíní" + +msgid "H Separation" +msgstr "H Scaradh" + +msgid "Icon Max Width" +msgstr "Leithead Uasta Deilbhíní" + +msgid "Align to Largest Stylebox" +msgstr "Ailínigh leis an mbosca stíle is mó" + +msgid "Underline Spacing" +msgstr "Cuir béim ar Spásáil" + +msgid "Normal Mirrored" +msgstr "Gnáth-Scáthánaithe" + +msgid "Hover Mirrored" +msgstr "Hover Scáthánaithe" + +msgid "Pressed Mirrored" +msgstr "Scáthánaithe Brúite" + +msgid "Disabled Mirrored" +msgstr "Díchumasaithe Scáthánaithe" + +msgid "Arrow" +msgstr "Saighead" + +msgid "Arrow Margin" +msgstr "Imeall Saighead" + +msgid "Modulate Arrow" +msgstr "Saighead Mionathraithe" + +msgid "Hover Pressed" +msgstr "Hover Brúite" + +msgid "Checked Disabled" +msgstr "Díchumasaithe Seiceáilte" + +msgid "Unchecked" +msgstr "Díthiceáilte" + +msgid "Unchecked Disabled" +msgstr "Díchumasaithe gan seiceáil" + +msgid "Radio Checked" +msgstr "Raidió Seiceáilte" + +msgid "Radio Checked Disabled" +msgstr "Raidió Seiceáilte Díchumasaithe" + +msgid "Radio Unchecked" +msgstr "Raidió Gan Seiceáil" + +msgid "Radio Unchecked Disabled" +msgstr "Raidió Gan Seiceáil Díchumasaithe" + +msgid "Check V Offset" +msgstr "Seiceáil Fritháireamh V" + +msgid "Checked Mirrored" +msgstr "Seiceáil Scáthánaithe" + +msgid "Checked Disabled Mirrored" +msgstr "Seiceáil Díchumasaithe Scáthánaithe" + +msgid "Unchecked Mirrored" +msgstr "Gan Seiceáil Scáthánaithe" + +msgid "Unchecked Disabled Mirrored" +msgstr "Díchumasaithe Gan Seiceáil Scáthánaithe" + +msgid "Font Shadow Color" +msgstr "Dath Scáth cló" + +msgid "Shadow Offset X" +msgstr "Fritháireamh Scáth X" + +msgid "Shadow Offset Y" +msgstr "Fritháireamh Scáth Y" + +msgid "Shadow Outline Size" +msgstr "Scáth-imlíne Méid" + +msgid "Font Selected Color" +msgstr "Dath roghnaithe an chló" + +msgid "Font Uneditable Color" +msgstr "Dath Do-aimsithe cló" + +msgid "Font Placeholder Color" +msgstr "Dath ionadchoinneálaí cló" + +msgid "Clear Button Color" +msgstr "Glan Dath an Chnaipe" + +msgid "Clear Button Color Pressed" +msgstr "Glan Dath an Chnaipe Brúite" + +msgid "Minimum Character Width" +msgstr "Leithead Íosta Carachtar" + +msgid "Caret Width" +msgstr "Leithead Caret" + +msgid "Clear" +msgstr "Glan" + +msgid "Tab" +msgstr "Táb" + +msgid "Font Readonly Color" +msgstr "Dath inléite cló" + +msgid "Breakpoint" +msgstr "Brisphointe" + +msgid "Bookmark" +msgstr "Leabharmharc" + +msgid "Executing Line" +msgstr "Líne á Rith" + +msgid "Can Fold" +msgstr "An féidir Fill" + +msgid "Folded" +msgstr "Fillte" + +msgid "Can Fold Code Region" +msgstr "An féidir Fold Code Region" + +msgid "Folded Code Region" +msgstr "Réigiún Cód Fillte" + +msgid "Folded EOL Icon" +msgstr "Deilbhín EOL Fillte" + +msgid "Completion Lines" +msgstr "Línte Críochnaithe" + +msgid "Completion Max Width" +msgstr "Uasleithead Críochnaithe" + +msgid "Completion Scroll Width" +msgstr "Comhlánaigh Leithead Scrolla" + +msgid "Scroll Focus" +msgstr "Scrollaigh Fócas" + +msgid "Grabber" +msgstr "GrabberName" + +msgid "Grabber Highlight" +msgstr "Aibhsiú Grabber" + +msgid "Grabber Pressed" +msgstr "Grabber Brúite" + +msgid "Increment" +msgstr "Méadaigh" + +msgid "Increment Highlight" +msgstr "Buaicphointe Incriminte" + +msgid "Increment Pressed" +msgstr "Incrimint Brúite" + +msgid "Decrement" +msgstr "Laghdu" + +msgid "Decrement Highlight" +msgstr "Aibhsiú Decrement" + +msgid "Decrement Pressed" +msgstr "Decrement brúite" + +msgid "Slider" +msgstr "Barra Sleamhnáin" + +msgid "Grabber Area" +msgstr "Limistéar Grabber" + +msgid "Grabber Area Highlight" +msgstr "Buaicphointe Limistéar Grabber" + +msgid "Grabber Disabled" +msgstr "Grabber Díchumasaithe" + +msgid "Tick" +msgstr "Cuir tic" + +msgid "Center Grabber" +msgstr "Ionad Grabber" + +msgid "Grabber Offset" +msgstr "Fritháireamh Grabber" + +msgid "Updown" +msgstr "Suas an Dún" + +msgid "Embedded Border" +msgstr "Teorainn Leabaithe" + +msgid "Embedded Unfocused Border" +msgstr "Teorainn Neamhdhírithe Leabaithe" + +msgid "Title Font" +msgstr "Cló teidil" + +msgid "Title Font Size" +msgstr "Clómhéid an Teidil" + +msgid "Title Color" +msgstr "Dath an Teidil" + +msgid "Title Outline Modulate" +msgstr "Teideal Imlíne Modulate" + +msgid "Title Outline Size" +msgstr "Teideal Breac-chuntas Méid" + +msgid "Title Height" +msgstr "Airde teidil" + +msgid "Resize Margin" +msgstr "Athraigh Méid an Chorrlaigh" + +msgid "Close" +msgstr "Dún" + +msgid "Close Pressed" +msgstr "Dún Brúite" + +msgid "Close H Offset" +msgstr "Dún Fritháireamh H" + +msgid "Close V Offset" +msgstr "Dún Fritháireamh V" + +msgid "Buttons Separation" +msgstr "Scaradh Cnaipí" + +msgid "Parent Folder" +msgstr "Máthairfhillteán" + +msgid "Back Folder" +msgstr "Fillteán Ar Ais" + +msgid "Forward Folder" +msgstr "Cuir Fillteán Ar Aghaidh" + +msgid "Reload" +msgstr "Athluchtaigh" + +msgid "Toggle Hidden" +msgstr "Scoránaigh i bhfolach" + +msgid "Folder" +msgstr "Fillteán" + +msgid "Create Folder" +msgstr "Cruthaigh Fillteán" + +msgid "Folder Icon Color" +msgstr "Dath Dheilbhín an Fhillteáin" + +msgid "File Icon Color" +msgstr "Dath Dheilbhín an Chomhaid" + +msgid "File Disabled Color" +msgstr "Dath Díchumasaithe an Chomhaid" + +msgid "Separator" +msgstr "Deighilteoir" + +msgid "Labeled Separator Left" +msgstr "Deighilteoir Lipéadaithe Ar Chlé" + +msgid "Labeled Separator Right" +msgstr "Ceart deighilteora lipéadaithe" + +msgid "Submenu" +msgstr "Fo-roghchlár" + +msgid "Submenu Mirrored" +msgstr "Fo-roghchlár scáthánaithe" + +msgid "Font Separator" +msgstr "Deighilteoir Clónna" + +msgid "Font Separator Size" +msgstr "Méid an Deighilteora Clónna" + +msgid "Font Accelerator Color" +msgstr "Dath an Luasaire Clónna" + +msgid "Font Separator Color" +msgstr "Dath an Deighilteora Clónna" + +msgid "Font Separator Outline Color" +msgstr "Dath Imlíneach an Deighilteora Clónna" + +msgid "V Separation" +msgstr "V Scaradh" + +msgid "Separator Outline Size" +msgstr "Méid imlíne deighilteora" + +msgid "Item Start Padding" +msgstr "Mír Tosaigh Stuáil" + +msgid "Item End Padding" +msgstr "Mír Deireadh Stuáil" + +msgid "Panel Selected" +msgstr "Painéal roghnaithe" + +msgid "Titlebar" +msgstr "Barra teidil" + +msgid "Titlebar Selected" +msgstr "Barra teidil roghnaithe" + +msgid "Slot" +msgstr "Sliotán" + +msgid "Resizer" +msgstr "ResizerName" + +msgid "Resizer Color" +msgstr "Dath Resizer" + +msgid "Port H Offset" +msgstr "Fritháireamh Phort H" + +msgid "Selected Focus" +msgstr "Fócas Roghnaithe" + +msgid "Cursor" +msgstr "Cúrsóir" + +msgid "Cursor Unfocused" +msgstr "Cúrsóir Neamhdhírithe" + +msgid "Title Button Normal" +msgstr "Cnaipe Teidil Gnáth" + +msgid "Title Button Pressed" +msgstr "Cnaipe Teidil Brúite" + +msgid "Title Button Hover" +msgstr "Teideal Button Hover" + +msgid "Custom Button" +msgstr "Cnaipe Saincheaptha" + +msgid "Custom Button Pressed" +msgstr "Cnaipe Saincheaptha Brúite" + +msgid "Custom Button Hover" +msgstr "Hover Cnaipe Saincheaptha" + +msgid "Indeterminate Disabled" +msgstr "Díchumasaithe Neamhchinntithe" + +msgid "Select Arrow" +msgstr "Roghnaigh Saighead" + +msgid "Arrow Collapsed" +msgstr "Saighead tite as a chéile" + +msgid "Arrow Collapsed Mirrored" +msgstr "Saighead tite scáthánaithe" + +msgid "Title Button Font" +msgstr "Cló cnaipe teidil" + +msgid "Title Button Font Size" +msgstr "Clómhéid an Chnaipe Teidil" + +msgid "Title Button Color" +msgstr "Dath an Chnaipe Teidil" + +msgid "Guide Color" +msgstr "Dath treorach" + +msgid "Drop Position Color" +msgstr "Buail Dath an tSuímh" + +msgid "Relationship Line Color" +msgstr "Dath Líne Caidrimh" + +msgid "Parent HL Line Color" +msgstr "Dath Líne HL Tuismitheora" + +msgid "Children HL Line Color" +msgstr "Dath Líne HL Leanaí" + +msgid "Custom Button Font Highlight" +msgstr "Aibhsiú Cló Cnaipe Saincheaptha" + +msgid "Item Margin" +msgstr "Imeall Míre" + +msgid "Inner Item Margin Bottom" +msgstr "Imeall Mír Istigh Bun" + +msgid "Inner Item Margin Left" +msgstr "Imeall Míre Istigh Ar Chlé" + +msgid "Inner Item Margin Right" +msgstr "Imeall Míre Istigh Ar Dheis" + +msgid "Inner Item Margin Top" +msgstr "Barr Imeall Míre Istigh" + +msgid "Button Margin" +msgstr "Imeall na gCnaipí" + +msgid "Draw Relationship Lines" +msgstr "Tarraing Línte Caidrimh" + +msgid "Relationship Line Width" +msgstr "Leithead Líne Caidrimh" + +msgid "Parent HL Line Width" +msgstr "Leithead Líne Tuismitheora HL" + +msgid "Children HL Line Width" +msgstr "Leanaí HL Líne Leithead" + +msgid "Parent HL Line Margin" +msgstr "Corrlach Líne Tuismitheora HL" + +msgid "Draw Guides" +msgstr "Treoracha Tarraingthe" + +msgid "Scroll Border" +msgstr "Scrollaigh Teorainn" + +msgid "Scroll Speed" +msgstr "Luas Scrollaigh" + +msgid "Scrollbar Margin Left" +msgstr "Imeall scrollbharra ar chlé" + +msgid "Scrollbar Margin Top" +msgstr "Barr Imeall Scrollbharra" + +msgid "Scrollbar Margin Right" +msgstr "Imeall scrollbharra ar dheis" + +msgid "Scrollbar Margin Bottom" +msgstr "Bun Imeall Scrollbharra" + +msgid "Scrollbar H Separation" +msgstr "Scrollbharra H Scaradh" + +msgid "Scrollbar V Separation" +msgstr "Scrollbharra V Scaradh" + +msgid "Icon Margin" +msgstr "Imeall Deilbhíní" + +msgid "Font Hovered Color" +msgstr "Dath ainlithe cló" + +msgid "Hovered" +msgstr "Ag Dul Ar" + +msgid "Tab Selected" +msgstr "Táb roghnaithe" + +msgid "Tab Hovered" +msgstr "Cluaisín Hovered" + +msgid "Tab Unselected" +msgstr "Cluaisín Gan Roghnú" + +msgid "Tab Disabled" +msgstr "Díchumasaíodh cluaisíní" + +msgid "Tab Focus" +msgstr "Fócas na gCluaisíní" + +msgid "Tabbar Background" +msgstr "Cúlra Tabbar" + +msgid "Drop Mark" +msgstr "Marc Buail" + +msgid "Menu Highlight" +msgstr "Aibhsiú roghchláir" + +msgid "Font Unselected Color" +msgstr "Dath Neamhroghnaithe an Chló" + +msgid "Drop Mark Color" +msgstr "Buail Dath an Mharc" + +msgid "Side Margin" +msgstr "Imeall Taobh" + +msgid "Icon Separation" +msgstr "Scaradh Deilbhíní" + +msgid "Button Highlight" +msgstr "Aibhsiú na gCnaipí" + +msgid "SV Width" +msgstr "Leithead SV" + +msgid "SV Height" +msgstr "Airde SV" + +msgid "H Width" +msgstr "Leithead H" + +msgid "Label Width" +msgstr "Leithead an Lipéid" + +msgid "Center Slider Grabbers" +msgstr "Grabbers Sleamhnán Ionad" + +msgid "Folded Arrow" +msgstr "Saighead Fillte" + +msgid "Expanded Arrow" +msgstr "Saighead Leathnaithe" + +msgid "Screen Picker" +msgstr "Roghnóir Scáileáin" + +msgid "Shape Circle" +msgstr "Ciorcal Crutha" + +msgid "Shape Rect" +msgstr "Cruth Rect" + +msgid "Shape Rect Wheel" +msgstr "Cruth Roth Rect" + +msgid "Add Preset" +msgstr "Cuir Réamhshocrú Leis" + +msgid "Sample BG" +msgstr "Sampla BG" + +msgid "Sample Revert" +msgstr "Fill Samplach" + +msgid "Overbright Indicator" +msgstr "Táscaire Overbright" + +msgid "Bar Arrow" +msgstr "Saighead Bharra" + +msgid "Picker Cursor" +msgstr "Cúrsóir an Roghnóra" + +msgid "Color Hue" +msgstr "Lí Datha" + +msgid "Color Okhsl Hue" +msgstr "Dath Okhsl Lí" + +msgid "BG" +msgstr "BGName" + +msgid "Preset FG" +msgstr "Réamhshocraithe FG" + +msgid "Preset BG" +msgstr "Réamhshocrú BG" + +msgid "Normal Font" +msgstr "Gnáthchló" + +msgid "Bold Font" +msgstr "Cló trom" + +msgid "Italics Font" +msgstr "Cló Iodálach" + +msgid "Bold Italics Font" +msgstr "Cló Iodálach Trom" + +msgid "Mono Font" +msgstr "Cló Mona" + +msgid "Normal Font Size" +msgstr "Gnáthmhéid an Chló" + +msgid "Bold Font Size" +msgstr "Clómhéid Trom" + +msgid "Italics Font Size" +msgstr "Clómhéid Iodálach" + +msgid "Bold Italics Font Size" +msgstr "clómhéid cló trom iodálach" + +msgid "Mono Font Size" +msgstr "Clómhéid Mona" + +msgid "Table H Separation" +msgstr "Tábla H Scaradh" + +msgid "Table V Separation" +msgstr "Tábla V Scaradh" + +msgid "Table Odd Row BG" +msgstr "Tábla Odd Row BG" + +msgid "Table Even Row BG" +msgstr "Tábla Fiú Rae BG" + +msgid "Table Border" +msgstr "Teorainn Tábla" + +msgid "Text Highlight H Padding" +msgstr "Aibhsiú Téacs H Padding" + +msgid "Text Highlight V Padding" +msgstr "Aibhsiú Téacs V stuáil" + +msgid "H Grabber" +msgstr "Grábálaí H" + +msgid "V Grabber" +msgstr "V GrabberName" + +msgid "Margin Left" +msgstr "Imeall Ar Chlé" + +msgid "Margin Top" +msgstr "Imeall Barr" + +msgid "Margin Right" +msgstr "Imeall ar dheis" + +msgid "Margin Bottom" +msgstr "Imeall Bun" + +msgid "Minimum Grab Thickness" +msgstr "Tiús Grab Íosta" + +msgid "Autohide" +msgstr "Uathíde" + +msgid "Zoom Out" +msgstr "Zúmáil Amach" + +msgid "Zoom In" +msgstr "Zúmáil Isteach" + +msgid "Zoom Reset" +msgstr "Athshocraigh Zúmáil" + +msgid "Grid Toggle" +msgstr "Scoránaigh Greille" + +msgid "Minimap Toggle" +msgstr "Scoránaigh Minimap" + +msgid "Snapping Toggle" +msgstr "Scoránaigh Snapping" + +msgid "Menu Panel" +msgstr "Painéal Roghchláir" + +msgid "Grid Minor" +msgstr "Mionghreille" + +msgid "Grid Major" +msgstr "Greille Mór" + +msgid "Selection Fill" +msgstr "Líon Roghnúcháin" + +msgid "Selection Stroke" +msgstr "Stróc Roghnaithe" + +msgid "Activity" +msgstr "Gníomhaíocht" + +msgid "Connection Hover Tint Color" +msgstr "Ceangal Hover Tint Dath" + +msgid "Connection Valid Target Tint Color" +msgstr "Ceangal Bailí Sprioc Tint Dath" + +msgid "Connection Rim Color" +msgstr "Dath Imeall an Cheangail" + +msgid "Port Hotzone Inner Extent" +msgstr "Port Hotzone Méid Istigh" + +msgid "Port Hotzone Outer Extent" +msgstr "Port Hotzone Méid Seachtrach" + +msgid "Node" +msgstr "Nód" + +msgid "Default Theme Scale" +msgstr "Scála Réamhshocraithe Téama" + +msgid "Custom" +msgstr "Saincheaptha" + +msgid "Custom Font" +msgstr "Cló Saincheaptha" + +msgid "Default Font Antialiasing" +msgstr "Antialiasing Cló Réamhshocraithe" + +msgid "Default Font Hinting" +msgstr "Leid Réamhshocraithe Cló" + +msgid "Default Font Subpixel Positioning" +msgstr "Suíomh Réamhshocraithe Fophicteilíní Cló" + +msgid "Default Font Multichannel Signed Distance Field" +msgstr "Réimse Faid Sínithe Multichannel Cló Réamhshocraithe" + +msgid "Default Font Generate Mipmaps" +msgstr "Cló Réamhshocraithe Gin Mipmaps" + +msgid "LCD Subpixel Layout" +msgstr "Leagan Amach Subpixel LCD" + +msgid "Fallback values" +msgstr "Luachanna cúltaca" + +msgid "Playback Mode" +msgstr "Mód Athsheinm" + +msgid "Random Pitch" +msgstr "Páirc Randamach" + +msgid "Random Volume Offset dB" +msgstr "Fritháireamh Imleabhar Randamach dB" + +msgid "Streams" +msgstr "Sruthanna" + +msgid "Buffer Length" +msgstr "Fad an mhaoláin" + +msgid "Voice Count" +msgstr "Líon na nGuthanna" + +msgid "Dry" +msgstr "Tirim" + +msgid "Wet" +msgstr "Fliuch" + +msgid "Voice" +msgstr "Guth" + +msgid "Delay (ms)" +msgstr "Moill (ms)" + +msgid "Rate Hz" +msgstr "Ráta Hz" + +msgid "Depth (ms)" +msgstr "Doimhneacht (ms)" + +msgid "Level dB" +msgstr "Leibhéal dB" + +msgid "Pan" +msgstr "Fear uasal" + +msgid "Attack (µs)" +msgstr "Ionsaí (μs)" + +msgid "Release (ms)" +msgstr "Scaoileadh (ms)" + +msgid "Sidechain" +msgstr "SidechainName" + +msgid "Tap 1" +msgstr "Beartaíonn 1" + +msgid "Tap 2" +msgstr "Beartaíonn 2" + +msgid "Feedback" +msgstr "Aiseolas" + +msgid "Low-pass" +msgstr "Pas íseal" + +msgid "Pre Gain" +msgstr "Réamhghnóthachan" + +msgid "Keep Hf Hz" +msgstr "Coinnigh Hf Hz" + +msgid "Drive" +msgstr "Tiomántán" + +msgid "Post Gain" +msgstr "Gnóthachan Poist" + +msgid "Resonance" +msgstr "Athshondas" + +msgid "Pre Gain dB" +msgstr "Réamhghnóthachan dB" + +msgid "Ceiling dB" +msgstr "Uasteorainn dB" + +msgid "Threshold dB" +msgstr "Tairseach dB" + +msgid "Soft Clip dB" +msgstr "Clip Bog dB" + +msgid "Soft Clip Ratio" +msgstr "Cóimheas Gearrthóg Bog" + +msgid "Range Min Hz" +msgstr "Raon Min Hz" + +msgid "Range Max Hz" +msgstr "Raon Max Hz" + +msgid "FFT Size" +msgstr "Méid FFT" + +msgid "Predelay" +msgstr "PredelayGenericName" + +msgid "Msec" +msgstr "MsecGenericName" + +msgid "Room Size" +msgstr "Méid an tseomra" + +msgid "High-pass" +msgstr "Ard-phas" + +msgid "Tap Back Pos" +msgstr "Tapáil ar ais Pos" + +msgid "Pan Pullout" +msgstr "Pan Tarraingt Amach" + +msgid "Time Pullout (ms)" +msgstr "Tarraingt Ama (ms)" + +msgid "Surround" +msgstr "Timpeall" + +msgid "Enable Input" +msgstr "Cumasaigh Ionchur" + +msgid "Channel Disable Threshold dB" +msgstr "Cainéal Díchumasaigh Tairseach dB" + +msgid "Channel Disable Time" +msgstr "Am Díchumasaigh Cainéal" + +msgid "Video Delay Compensation (ms)" +msgstr "Cúiteamh Moill Físe (MS)" + +msgid "Bus Count" +msgstr "Líon na mBusanna" + +msgid "Output Device" +msgstr "Gléas Aschurtha" + +msgid "Input Device" +msgstr "Gléas Ionchurtha" + +msgid "Playback Speed Scale" +msgstr "Scála Luas Athsheinm" + +msgid "Feed" +msgstr "Fotha" + +msgid "Is Active" +msgstr "gníomhach" + +msgid "Movie Writer" +msgstr "Scríbhneoir Scannáin" + +msgid "Speaker Mode" +msgstr "Mód Cainteoir" + +msgid "MJPEG Quality" +msgstr "Cáilíocht MJPEG" + +msgid "Movie File" +msgstr "Comhad Scannáin" + +msgid "Disable V-Sync" +msgstr "Díchumasaigh V- Sync" + +msgid "Metadata Flags" +msgstr "Bratacha Meiteashonraí" + +msgid "Path Types" +msgstr "Cineálacha Cosáin" + +msgid "Path Rids" +msgstr "Rids Cosán" + +msgid "Path Owner IDs" +msgstr "IDanna Úinéir an Chosáin" + +msgid "Default Cell Size" +msgstr "Méid Réamhshocraithe na Cille" + +msgid "Default Edge Connection Margin" +msgstr "Imeall Réamhshocraithe Nasc" + +msgid "Default Link Connection Radius" +msgstr "Ga réamhshocraithe nasctha nasc" + +msgid "Default Cell Height" +msgstr "Airde Cille Réamhshocraithe" + +msgid "Default Up" +msgstr "Réamhshocrú" + +msgid "Merge Rasterizer Cell Scale" +msgstr "Cumaisc Scála Cille Rasterizer" + +msgid "Avoidance Use Multiple Threads" +msgstr "Seachaint Úsáid Snáitheanna Il" + +msgid "Avoidance Use High Priority Threads" +msgstr "Seachaint Úsáid Snáitheanna Ardtosaíochta" + +msgid "Baking" +msgstr "Bácáil" + +msgid "Use Crash Prevention Checks" +msgstr "Úsáid Seiceálacha um Chosc Tuairteála" + +msgid "Baking Use Multiple Threads" +msgstr "Bácáil Úsáid Snáitheanna Il" + +msgid "Baking Use High Priority Threads" +msgstr "Bácáil Úsáid Snáitheanna Ardtosaíochta" + +msgid "Edge Connection Color" +msgstr "Dath an Naisc Ciumhais" + +msgid "Geometry Edge Color" +msgstr "Dath Ciumhais Céimseata" + +msgid "Geometry Face Color" +msgstr "Dath Aghaidh Céimseata" + +msgid "Geometry Edge Disabled Color" +msgstr "Dath Díchumasaithe Ciumhais Céimseata" + +msgid "Geometry Face Disabled Color" +msgstr "Dath Díchumasaithe Aghaidh Céimseata" + +msgid "Link Connection Color" +msgstr "Dath an Naisc" + +msgid "Link Connection Disabled Color" +msgstr "Dath Díchumasaithe an Naisc" + +msgid "Agent Path Color" +msgstr "Dath an Chosáin Gníomhaire" + +msgid "Enable Edge Connections" +msgstr "Cumasaigh Naisc Chiumhais" + +msgid "Enable Edge Connections X-Ray" +msgstr "Cumasaigh naisc chiumhais X- gha" + +msgid "Enable Edge Lines" +msgstr "Cumasaigh Línte Ciumhais" + +msgid "Enable Edge Lines X-Ray" +msgstr "Cumasaigh Línte Ciumhais X- Gha" + +msgid "Enable Geometry Face Random Color" +msgstr "Cumasaigh Dath Randamach Aghaidh Céimseata" + +msgid "Enable Link Connections" +msgstr "Cumasaigh Naisc" + +msgid "Enable Link Connections X-Ray" +msgstr "Gníomhachtaigh Ceangail Naisc X-Ghath" + +msgid "Enable Agent Paths" +msgstr "Cumasaigh Conairí Gníomhaire" + +msgid "Enable Agent Paths X-Ray" +msgstr "Cumasaigh Conairí Gníomhaire X- Ray" + +msgid "Agent Path Point Size" +msgstr "Méid Phointe Conair an Ghníomhaire" + +msgid "Agents Radius Color" +msgstr "Dath Ga Gníomhairí" + +msgid "Obstacles Radius Color" +msgstr "Constaicí Ga Dath" + +msgid "Obstacles Static Face Pushin Color" +msgstr "Constaicí Statach Aghaidh Pushin Dath" + +msgid "Obstacles Static Edge Pushin Color" +msgstr "Constaicí Dath Pushin Imeall Statach" + +msgid "Obstacles Static Face Pushout Color" +msgstr "Constaicí Dath Pushout Aghaidh Statach" + +msgid "Obstacles Static Edge Pushout Color" +msgstr "Constaicí Statach Imeall Pushout Dath" + +msgid "Enable Agents Radius" +msgstr "Cumasaigh Ga na nGníomhairí" + +msgid "Enable Obstacles Radius" +msgstr "Cumasaigh Ga na gConstaicí" + +msgid "Enable Obstacles Static" +msgstr "Cumasaigh Constaicí Statacha" + +msgid "Inverse Mass" +msgstr "Aifreann Inbhéartach" + +msgid "Inverse Inertia" +msgstr "Táimhe Inbhéartach" + +msgid "Total Angular Damp" +msgstr "Taise Uilleach Iomlán" + +msgid "Total Linear Damp" +msgstr "Taise Líneach Iomlán" + +msgid "Total Gravity" +msgstr "Domhantarraingt Iomlán" + +msgid "Center of Mass Local" +msgstr "Lár an Aifrinn Áitiúil" + +msgid "Exclude" +msgstr "Ná cuir as an áireamh" + +msgid "Collide With Bodies" +msgstr "Collide Le Comhlachtaí" + +msgid "Collide With Areas" +msgstr "Collide le Ceantair" + +msgid "Canvas Instance ID" +msgstr "Aitheantas an Ásc Canbháis" + +msgid "Shape RID" +msgstr "Cruth RID" + +msgid "Collide Separation Ray" +msgstr "Collide Scaradh Ray" + +msgid "Exclude Bodies" +msgstr "Comhlachtaí a Eisiamh" + +msgid "Exclude Objects" +msgstr "Ná Cuir Réada as an áireamh" + +msgid "Recovery as Collision" +msgstr "Aisghabháil mar Imbhualadh" + +msgid "Default Gravity" +msgstr "Domhantarraingt Réamhshocraithe" + +msgid "Default Gravity Vector" +msgstr "Veicteoir Domhantarraingthe Réamhshocraithe" + +msgid "Default Linear Damp" +msgstr "Taise Líneach Réamhshocraithe" + +msgid "Default Angular Damp" +msgstr "Taise uilleach Réamhshocraithe" + +msgid "Sleep Threshold Linear" +msgstr "Tairseach Codlata Líneach" + +msgid "Sleep Threshold Angular" +msgstr "Tairseach Chodlata Uilleach" + +msgid "Time Before Sleep" +msgstr "Am Roimh Chodladh" + +msgid "Solver Iterations" +msgstr "Atriall Réitigh" + +msgid "Contact Recycle Radius" +msgstr "Déan teagmháil le Ga Athchúrsála" + +msgid "Contact Max Separation" +msgstr "Déan teagmháil le Max Separation" + +msgid "Contact Max Allowed Penetration" +msgstr "Déan teagmháil le Max Treá Ceadaithe" + +msgid "Default Contact Bias" +msgstr "Claonadh Teagmhála Réamhshocraithe" + +msgid "Default Constraint Bias" +msgstr "Claonadh Srianta Réamhshocraithe" + +msgid "Physics Engine" +msgstr "Inneall Fisice" + +msgid "Inverse Inertia Tensor" +msgstr "Inbhéartach Táimhe Tensor" + +msgid "Principal Inertia Axes" +msgstr "Príomh-Aiseanna Táimhe" + +msgid "Max Collisions" +msgstr "Imbhuailtí Uasta" + +msgid "Debug Redraw Time" +msgstr "Dífhabhtaigh Am Athdhréachtaithe" + +msgid "Debug Redraw Color" +msgstr "Dífhabhtaigh Dath na hAthdhréachta" + +msgid "Tighter Shadow Caster Culling" +msgstr "Níos déine Scáth Caster Culling" + +msgid "Vertex" +msgstr "Stuaic" + +msgid "Fragment" +msgstr "Blúire" + +msgid "Tesselation Control" +msgstr "Rialú Tesselation" + +msgid "Tesselation Evaluation" +msgstr "Meastóireacht Tesselation" + +msgid "Compute" +msgstr "Ríomh" + +msgid "Syntax" +msgstr "Comhréir" + +msgid "Bytecode" +msgstr "BytecodeName" + +msgid "Compile Error" +msgstr "Earráid Tiomsaithe" + +msgid "Base Error" +msgstr "Earráid Bhunáite" + +msgid "IDs" +msgstr "IDanna" + +msgid "Constant ID" +msgstr "Aitheantas tairiseach" + +msgid "Sample Masks" +msgstr "Maisc Shamplacha" + +msgid "Depth Draw" +msgstr "Tarraingt Doimhneachta" + +msgid "Depth Prepass Alpha" +msgstr "Doimhneacht Prepass Alfa" + +msgid "Depth Test Disabled" +msgstr "Tástáil Doimhneachta Díchumasaithe" + +msgid "SSS Mode Skin" +msgstr "Craiceann Mód SSS" + +msgid "Cull" +msgstr "An Chuilinn" + +msgid "Unshaded" +msgstr "Gan scáthú" + +msgid "Wireframe" +msgstr "Sreangfhráma" + +msgid "Skip Vertex Transform" +msgstr "Trasfhoirmigh Vertex Long" + +msgid "World Vertex Coords" +msgstr "Coords Vertex Domhanda" + +msgid "Ensure Correct Normals" +msgstr "Cinntigh Gnáthaimh Chearta" + +msgid "Shadows Disabled" +msgstr "Scáthanna Díchumasaithe" + +msgid "Ambient Light Disabled" +msgstr "Solas Comhthimpeallach Díchumasaithe" + +msgid "Vertex Lighting" +msgstr "Soilsiú Vertex" + +msgid "Particle Trails" +msgstr "Conairí na gCáithníní" + +msgid "Alpha to Coverage" +msgstr "Alfa go Clúdach" + +msgid "Alpha to Coverage and One" +msgstr "Alfa go Clúdach agus Ceann" + +msgid "Debug Shadow Splits" +msgstr "Scoilteanna Scáth Dífhabhtaithe" + +msgid "Fog Disabled" +msgstr "Ceo Díchumasaithe" + +msgid "Light Only" +msgstr "Solas Amháin" + +msgid "Collision Use Scale" +msgstr "Scála Úsáide Imbhuailtí" + +msgid "Disable Force" +msgstr "Díchumasaigh Fórsa" + +msgid "Disable Velocity" +msgstr "Díchumasaigh treoluas" + +msgid "Keep Data" +msgstr "Coinnigh Sonraí" + +msgid "Use Half Res Pass" +msgstr "Úsáid Pas Leath-Res" + +msgid "Use Quarter Res Pass" +msgstr "Úsáid Pas Ceathrú Res" + +msgid "Internal Size" +msgstr "Méid Inmheánach" + +msgid "Target Size" +msgstr "Spriocmhéid" + +msgid "View Count" +msgstr "Amharc ar Líon" + +msgid "Render Loop Enabled" +msgstr "Lúb Rindreála Cumasaithe" + +msgid "VRAM Compression" +msgstr "Comhbhrú VRAM" + +msgid "Import S3TC BPTC" +msgstr "Iompórtáil S3TC BPTC" + +msgid "Import ETC2 ASTC" +msgstr "Iompórtáil ASTC ETC2" + +msgid "Lossless Compression" +msgstr "Comhbhrú gan chailliúint" + +msgid "Force PNG" +msgstr "Fórsáil PNG" + +msgid "WebP Compression" +msgstr "Comhbhrú WebP" + +msgid "Compression Method" +msgstr "Modh Comhbhrúite" + +msgid "Lossless Compression Factor" +msgstr "Fachtóir Comhbhrúite Gan Chailliúint" + +msgid "Time Rollover Secs" +msgstr "Secs Rollover Am" + +msgid "Use Physical Light Units" +msgstr "Úsáid Aonaid Solais Fhisiciúla" + +msgid "Soft Shadow Filter Quality" +msgstr "Caighdeán scagaire scáth bog" + +msgid "Shadow Atlas" +msgstr "Atlas Scáth" + +msgid "Item Buffer Size" +msgstr "Méid an mhaoláin míre" + +msgid "Shader Compiler" +msgstr "Tiomsaitheoir Scáthaigh" + +msgid "Shader Cache" +msgstr "Taisce Scáthaigh" + +msgid "Use Zstd Compression" +msgstr "Úsáid Comhbhrú Zstd" + +msgid "Strip Debug" +msgstr "Dífhabhtú Stiallacha" + +msgid "Reflections" +msgstr "Machnamh" + +msgid "Sky Reflections" +msgstr "Machnamh spéire" + +msgid "Roughness Layers" +msgstr "Sraitheanna Gairbhe" + +msgid "Texture Array Reflections" +msgstr "Machnamh ar Eagar Uigeachta" + +msgid "GGX Samples" +msgstr "Samplaí GGX" + +msgid "Fast Filter High Quality" +msgstr "Scagaire Fast Ardchaighdeáin" + +msgid "Reflection Atlas" +msgstr "Atlas Machnaimh" + +msgid "Reflection Size" +msgstr "Méid an Mhachnaimh" + +msgid "Reflection Count" +msgstr "Líon na Machnaimh" + +msgid "GI" +msgstr "GI" + +msgid "Use Half Resolution" +msgstr "Úsáid Leathtaifeach" + +msgid "Overrides" +msgstr "Sáraigh" + +msgid "Force Vertex Shading" +msgstr "Fórsa Scáthú Vertex" + +msgid "Force Lambert over Burley" +msgstr "Fórsa Lambert thar Burley" + +msgid "Depth Prepass" +msgstr "Prepass Doimhneacht" + +msgid "Disable for Vendors" +msgstr "Díchumasaigh do Dhíoltóirí" + +msgid "Default Filters" +msgstr "Scagairí Réamhshocraithe" + +msgid "Use Nearest Mipmap Filter" +msgstr "Úsáid an scagaire Mipmap is gaire" + +msgid "Anisotropic Filtering Level" +msgstr "Leibhéal Scagtha Anisotropic" + +msgid "Depth of Field" +msgstr "Doimhneacht réimse" + +msgid "Depth of Field Bokeh Shape" +msgstr "Doimhneacht Cruth Bokeh Réimse" + +msgid "Depth of Field Bokeh Quality" +msgstr "Doimhneacht Réimse Bokeh Cáilíochta" + +msgid "Depth of Field Use Jitter" +msgstr "Doimhneacht Úsáid Réimse Jitter" + +msgid "Half Size" +msgstr "Leathmhéid" + +msgid "Adaptive Target" +msgstr "Sprioc Oiriúnaitheach" + +msgid "Blur Passes" +msgstr "Pasanna Doiléire" + +msgid "Fadeout From" +msgstr "Céimnigh amach ó" + +msgid "Fadeout To" +msgstr "Céimnigh go" + +msgid "Screen Space Roughness Limiter" +msgstr "Scáileán Spás Roughness Limiter" + +msgid "Decals" +msgstr "Decaileanna" + +msgid "Light Projectors" +msgstr "Teilgeoirí Solais" + +msgid "Occlusion Rays per Thread" +msgstr "Gathanna Occlusion in aghaidh an tSnáithe" + +msgid "Upscale Mode" +msgstr "Mód Upscale" + +msgid "Screen Space Reflection" +msgstr "Machnamh ar Spás Scáileáin" + +msgid "Roughness Quality" +msgstr "Cáilíocht Roughness" + +msgid "Subsurface Scattering Quality" +msgstr "Cáilíocht Scaipthe Fodhromchla" + +msgid "Subsurface Scattering Scale" +msgstr "Scála Scaipthe Fodhromchla" + +msgid "Subsurface Scattering Depth Scale" +msgstr "Scála Doimhneachta Scaipthe Fodhromchla" + +msgid "Global Shader Variables" +msgstr "Athróga Scáthaigh Dhomhanda" + +msgid "Buffer Size" +msgstr "Méid an Mhaoláin" + +msgid "Probe Capture" +msgstr "Gabháil tóireadóir" + +msgid "Update Speed" +msgstr "Nuashonraigh Luas" + +msgid "Primitive Meshes" +msgstr "Mogalraí Primitive" + +msgid "Texel Size" +msgstr "Méid Texel" + +msgid "Probe Ray Count" +msgstr "Líon Ray Probe" + +msgid "Frames to Converge" +msgstr "Frámaí le Cóineasú" + +msgid "Frames to Update Lights" +msgstr "Frámaí chun Soilse a Nuashonrú" + +msgid "Volume Size" +msgstr "Méid na nImleabhar" + +msgid "Volume Depth" +msgstr "Doimhneacht Imleabhar" + +msgid "Spatial Indexer" +msgstr "Innéacsóir Spásúil" + +msgid "Update Iterations per Frame" +msgstr "Nuashonraigh atriallta in aghaidh an fhráma" + +msgid "Threaded Cull Minimum Instances" +msgstr "Cásanna Íosta Cuileann Snáithithe" + +msgid "Cluster Builder" +msgstr "Tógálaí Braisle" + +msgid "Max Clustered Elements" +msgstr "Uaseilimintí Cnuasaithe" + +msgid "OpenGL" +msgstr "OpenGLName" + +msgid "Max Renderable Elements" +msgstr "Uaseilimintí Indreáilte" + +msgid "Max Renderable Lights" +msgstr "Max Soilse Indreáilte" + +msgid "Max Lights per Object" +msgstr "Soilse Max in aghaidh an Réada" + +msgid "Shaders" +msgstr "Scáthanna" + +msgid "Shader Language" +msgstr "Teanga Shader" + +msgid "Treat Warnings as Errors" +msgstr "Déileáil le rabhaidh mar earráidí" + +msgid "Has Tracking Data" +msgstr "An bhfuil Sonraí Rianaithe aige" + +msgid "Body Flags" +msgstr "Bratacha Coirp" + +msgid "Blend Shapes" +msgstr "Cruthanna Cumaisc" + +msgid "Hand Tracking Source" +msgstr "Foinse Rianaithe Láimhe" + +msgid "Is Primary" +msgstr "An bhfuil" + +msgid "Play Area Mode" +msgstr "Mód Limistéar Súgartha" + +msgid "AR" +msgstr "AR" + +msgid "Is Anchor Detection Enabled" +msgstr "An bhfuil Brath Ancaire Cumasaithe" + +msgid "Tracking Confidence" +msgstr "Muinín a Rianú" + +msgid "VRS Min Radius" +msgstr "VRS Min Ga" + +msgid "VRS Strength" +msgstr "Neart VRS" + +msgid "World Origin" +msgstr "Bunús an Domhain" + +msgid "Primary Interface" +msgstr "Comhéadan Bunscoile" diff --git a/editor/translations/properties/it.po b/editor/translations/properties/it.po index cc773b5535..fa66dfa3f1 100644 --- a/editor/translations/properties/it.po +++ b/editor/translations/properties/it.po @@ -91,7 +91,7 @@ msgstr "" "Project-Id-Version: Godot Engine properties\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2024-08-12 20:46+0000\n" +"PO-Revision-Date: 2024-08-13 23:09+0000\n" "Last-Translator: Micky <micheledevita2@gmail.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot-properties/it/>\n" @@ -121,7 +121,7 @@ msgid "Version" msgstr "Versione" msgid "Run" -msgstr "Esegui" +msgstr "Esecuzione" msgid "Main Scene" msgstr "Scena principale" @@ -373,7 +373,7 @@ msgid "Tooltip Delay (sec)" msgstr "Ritardo dei tooltip (sec)" msgid "Common" -msgstr "Comune" +msgstr "Comuni" msgid "Snap Controls to Pixels" msgstr "Scatta i nodi Control ai pixel" @@ -673,7 +673,7 @@ msgid "Offset" msgstr "Scostamento" msgid "Cell Size" -msgstr "Dimensione Cella" +msgstr "Dimensione cella" msgid "Cell Shape" msgstr "Forma Cella" @@ -763,7 +763,7 @@ msgid "Fake BiDi" msgstr "Usa BiDi falso" msgid "Expansion Ratio" -msgstr "Ratio di espansione" +msgstr "Rapporto di espansione" msgid "Prefix" msgstr "Prefisso" @@ -799,10 +799,10 @@ msgid "Stream" msgstr "Flusso" msgid "Start Offset" -msgstr "Scostamento Dall'Inizio" +msgstr "Scostamento dall'inizio" msgid "End Offset" -msgstr "Scostamento Dalla Fine" +msgstr "Scostamento dalla fine" msgid "Easing" msgstr "Allentamento" @@ -811,7 +811,7 @@ msgid "Debug Adapter" msgstr "Adattatore di debug" msgid "Remote Port" -msgstr "Porta Remota" +msgstr "Porta remota" msgid "Request Timeout" msgstr "Scadenza di richiesta (Timeout)" @@ -832,16 +832,16 @@ msgid "Password" msgstr "Password" msgid "Default Feature Profile" -msgstr "Profilo di Funzionalità Predefinito" +msgstr "Profilo di funzionalità predefinito" msgid "Text Editor" -msgstr "Editor di Testo" +msgstr "Editor di testo" msgid "Help" msgstr "Aiuto" msgid "Sort Functions Alphabetically" -msgstr "Ordina le Funzioni Alfabeticamente" +msgstr "Ordina le funzioni alfabeticamente" msgid "Label" msgstr "Etichetta" @@ -874,13 +874,13 @@ msgid "Theme" msgstr "Tema" msgid "Line Spacing" -msgstr "Spaziatura Linee" +msgstr "Spaziatura righe" msgid "Base Type" msgstr "Tipo di Base" msgid "Editable" -msgstr "Elemento Modificabile" +msgstr "Modificabile" msgid "Toggle Mode" msgstr "Modalità Interruttore" @@ -898,7 +898,7 @@ msgid "Dock Tab Style" msgstr "Stile scheda di pannello" msgid "UI Layout Direction" -msgstr "Direzione Layout UI" +msgstr "Direzione di layout dell'UI" msgid "Display Scale" msgstr "Scala di visualizzazione" @@ -916,7 +916,7 @@ msgid "Connection" msgstr "Connessione" msgid "Engine Version Update Mode" -msgstr "Modalità di Aggiornamento Versione del Motore" +msgstr "Modalità di aggiornamento versione del motore" msgid "Use Embedded Menu" msgstr "Usa menù integrato" @@ -1620,6 +1620,12 @@ msgstr "Auto-rinomina tracce di animazione" msgid "Confirm Insert Track" msgstr "Conferma l'inserimento d'una traccia" +msgid "Onion Layers Past Color" +msgstr "Colore strati di cipolla precedenti" + +msgid "Onion Layers Future Color" +msgstr "Colore strati di cipolla successivi" + msgid "Shader Editor" msgstr "Editor di Shader" @@ -1756,169 +1762,170 @@ msgid "Highlighting" msgstr "Evidenziazione" msgid "Symbol Color" -msgstr "Colore simbolo" +msgstr "Colore per i simboli" msgid "Keyword Color" -msgstr "Colore parola chiave" +msgstr "Colore per parola chiave" msgid "Control Flow Keyword Color" -msgstr "Colore parola chiave del controllo di flusso" +msgstr "Colore per parola chiave di controllo di flusso" msgid "Base Type Color" -msgstr "Colore tipo di base" +msgstr "Colore per tipo di base" msgid "Engine Type Color" -msgstr "Colore tipo definito dal motore" +msgstr "Colore per tipo definito dal motore" msgid "User Type Color" -msgstr "Colore tipo definito dall'utente" +msgstr "Colore per tipo definito dall'utente" msgid "Comment Color" -msgstr "Colore commenti" +msgstr "Colore per i commenti" msgid "Doc Comment Color" -msgstr "Colore commenti per documentazione" +msgstr "Colore per i commenti di documentazione" msgid "String Color" -msgstr "Colore stringhe" +msgstr "Colore per le stringhe" msgid "Background Color" -msgstr "Colore sfondo" +msgstr "Colore per lo sfondo" msgid "Completion Background Color" -msgstr "Colore sfondo di completamento" +msgstr "Colore per lo sfondo del completamento" msgid "Completion Selected Color" -msgstr "Colore selezione del completamento" +msgstr "Colore per la selezione del completamento" msgid "Completion Existing Color" -msgstr "Colore parte esistente del completamento" +msgstr "Colore per la parte esistente del completamento" msgid "Completion Scroll Color" -msgstr "Colore scorrimento del completamento" +msgstr "Colore per la barra di scorrimento del completamento" msgid "Completion Scroll Hovered Color" -msgstr "Colore scorrimento del completamento al passaggio del mouse" +msgstr "" +"Colore al passaggio del mouse per la barra di scorrimento del completamento" msgid "Completion Font Color" -msgstr "Colore carattere del completamento" +msgstr "Colore per il carattere del completamento" msgid "Text Color" -msgstr "Colore testo" +msgstr "Colore per il testo" msgid "Line Number Color" -msgstr "Colore numero di riga" +msgstr "Colore per numero di riga" msgid "Safe Line Number Color" -msgstr "Colore numero di riga sicura" +msgstr "Colore per numero di riga sicura" msgid "Caret Color" -msgstr "Colore cursore" +msgstr "Colore per il cursore" msgid "Caret Background Color" -msgstr "Colore sfondo del cursore" +msgstr "Colore per lo sfondo del cursore" msgid "Text Selected Color" -msgstr "Colore testo selezionato" +msgstr "Colore per il testo selezionato" msgid "Selection Color" -msgstr "Colore selezione" +msgstr "Colore per la selezione" msgid "Brace Mismatch Color" -msgstr "Colore mancata corrispondenza tra parentesi" +msgstr "Colore per mancata corrispondenza tra parentesi" msgid "Current Line Color" -msgstr "Colore riga attuale" +msgstr "Colore per la riga attuale" msgid "Line Length Guideline Color" -msgstr "Colore linea guida della lunghezza della riga" +msgstr "Colore per la linea guida della lunghezza della riga" msgid "Word Highlighted Color" -msgstr "Colore parola evidenziata" +msgstr "Colore per parola evidenziata" msgid "Number Color" -msgstr "Colore numero" +msgstr "Colore per numero" msgid "Function Color" -msgstr "Colore funzione" +msgstr "Colore per funzione" msgid "Member Variable Color" -msgstr "Colore variabile membro" +msgstr "Colore per variabile membro" msgid "Bookmark Color" -msgstr "Colore segnalibro" +msgstr "Colore per segnalibro" msgid "Breakpoint Color" -msgstr "Colore punti di interruzione" +msgstr "Colore per punto di interruzione" msgid "Executing Line Color" -msgstr "Colore linea in esecuzione" +msgstr "Colore per la riga in esecuzione" msgid "Code Folding Color" -msgstr "Colore compressione del codice" +msgstr "Colore per righe di codice compresse" msgid "Folded Code Region Color" -msgstr "Colore regione di codice chiusa" +msgstr "Colore per una regione di codice chiusa" msgid "Search Result Color" -msgstr "Colore risultati di ricerca" +msgstr "Colore per i risultati di ricerca" msgid "Search Result Border Color" -msgstr "Colore bordo dei risultati di ricerca" +msgstr "Colore per il bordo dei risultati di ricerca" msgid "Connection Colors" msgstr "Colori per connessioni" msgid "Scalar Color" -msgstr "Colore Scalare" +msgstr "Colore per tipo scalare" msgid "Vector2 Color" -msgstr "Colore Vector2" +msgstr "Colore per tipo Vector2" msgid "Vector 3 Color" -msgstr "Colore Vector 3" +msgstr "Colore per tipo Vector 3" msgid "Vector 4 Color" -msgstr "Colore Vector 4" +msgstr "Colore per tipo Vector 4" msgid "Boolean Color" -msgstr "Colore Booleano" +msgstr "Colore per tipo booleano" msgid "Transform Color" -msgstr "Colore Trasformazione" +msgstr "Colore per tipo trasformazione" msgid "Sampler Color" -msgstr "Colore Sampler" +msgstr "Colore per tipo campionatore" msgid "Category Colors" -msgstr "Colori Categorie" +msgstr "Colori per le categorie" msgid "Output Color" -msgstr "Colore Output" +msgstr "Colore di uscita" msgid "Color Color" -msgstr "Colore tipo Color" +msgstr "Colore per tipo Color" msgid "Conditional Color" -msgstr "Colore Condizionale" +msgstr "Colore per condizionale" msgid "Input Color" -msgstr "Colore Input" +msgstr "Colore di ingresso" msgid "Textures Color" -msgstr "Colore Texture" +msgstr "Colore per le texture" msgid "Utility Color" -msgstr "Colore Utilità" +msgstr "Colore per utilità" msgid "Vector Color" -msgstr "Colore Vector" +msgstr "Colore per tipo vettore" msgid "Special Color" -msgstr "Colore Speciale" +msgstr "Colore speciale" msgid "Particle Color" -msgstr "Colore Particella" +msgstr "Colore per particella" msgid "Custom Template" msgstr "Modello personalizzato" @@ -2212,7 +2219,7 @@ msgid "Max Precision Error" msgstr "Tolleranza di errore di precisione" msgid "Page Size" -msgstr "Dimensione Pagina" +msgstr "Dimensione pagina" msgid "Import Tracks" msgstr "Importa tracce" @@ -2337,6 +2344,9 @@ msgstr "Supporto per script" msgid "OpenType Features" msgstr "Funzionalità OpenType" +msgid "Fallbacks" +msgstr "Alternative" + msgid "Compress" msgstr "Comprimi" @@ -2866,6 +2876,9 @@ msgstr "Modo di fusione d'ambiente" msgid "Foveation Level" msgstr "Livello di foveazione" +msgid "Foveation Dynamic" +msgstr "Foveazione dinamica" + msgid "Submit Depth Buffer" msgstr "Riempi buffer di profondità" @@ -3148,6 +3161,9 @@ msgstr "Percorsi uniti" msgid "CSG" msgstr "CSG" +msgid "Importer" +msgstr "Importatore" + msgid "Allow Geometry Helper Nodes" msgstr "Consenti nodi ausiliari di geometria" @@ -3286,6 +3302,9 @@ msgstr "Orientazione d'inerzia" msgid "Inertia Tensor" msgstr "Tensore d'inerzia" +msgid "Is Trigger" +msgstr "È attivatore" + msgid "Mesh Index" msgstr "Indice di mesh" @@ -3431,7 +3450,7 @@ msgid "Perspective" msgstr "Prospettiva" msgid "FOV" -msgstr "Campo Visivo" +msgstr "Campo visivo" msgid "Depth Far" msgstr "Profondità lontana" @@ -3781,6 +3800,9 @@ msgstr "Frequenza di aggiornamento del display" msgid "Render Target Size Multiplier" msgstr "Moltiplicatore delle dimensioni finali di renderizzazione" +msgid "Sort Order" +msgstr "Tipo di ordinamento" + msgid "Alpha Blend" msgstr "Fusione dell'alfa" @@ -4588,6 +4610,9 @@ msgstr "Marchi registrati" msgid "Export D3D12" msgstr "Esporta D3D12" +msgid "D3D12 Agility SDK Multiarch" +msgstr "D3D12 Agility SDK Multiarch" + msgid "Sprite Frames" msgstr "Sprite Frames" @@ -4642,6 +4667,9 @@ msgstr "Maschera di area" msgid "Playback Type" msgstr "Tipo di riproduzione" +msgid "Copy Mode" +msgstr "Modo di copia" + msgid "Anchor Mode" msgstr "Modalità ancora" @@ -5589,7 +5617,7 @@ msgid "Keep Aspect" msgstr "Mantieni l'aspetto" msgid "Cull Mask" -msgstr "Maschera di cull" +msgstr "Maschera di culling" msgid "Attributes" msgstr "Attributi" @@ -6292,7 +6320,7 @@ msgid "Target" msgstr "Obiettivo" msgid "Override Tip Basis" -msgstr "Sovrascrivi la Basis d'estremità" +msgstr "Sovrascrivi la base d'estremità" msgid "Use Magnet" msgstr "Utilizza il magnetismo" @@ -7579,12 +7607,18 @@ msgstr "2D MSAA" msgid "MSAA 3D" msgstr "3D MSAA" +msgid "Viewport" +msgstr "Viewport" + msgid "Transparent Background" msgstr "Sfondo trasparente" msgid "HDR 2D" msgstr "Alta gamma dinamica 2D (HDR)" +msgid "Screen Space AA" +msgstr "Antialiasing nello spazio dello schermo" + msgid "Use TAA" msgstr "Usa TTA" @@ -7594,6 +7628,9 @@ msgstr "Usa il Debanding" msgid "Use Occlusion Culling" msgstr "Usa l'Occlusion Culling" +msgid "Mesh LOD" +msgstr "LOD di mesh" + msgid "LOD Change" msgstr "Cambio di LOD" @@ -7675,6 +7712,9 @@ msgstr "Sfondo trasparente" msgid "Handle Input Locally" msgstr "Gestisci gli input localmente" +msgid "Debug Draw" +msgstr "Disegno per debug" + msgid "Use HDR 2D" msgstr "Usa alta gamma dinamica 2D (HDR)" @@ -7720,6 +7760,9 @@ msgstr "Seleziona solamente il primo oggetto" msgid "Disable Input" msgstr "Disabilita input" +msgid "Positional Shadow Atlas" +msgstr "Atlante d'ombre posizionali" + msgid "16 Bits" msgstr "16 bit" @@ -7780,6 +7823,9 @@ msgstr "Finestra popup" msgid "Mouse Passthrough" msgstr "Oltrepassaggio del mouse" +msgid "Force Native" +msgstr "Forza nativa" + msgid "Min Size" msgstr "Dimensioni minime" @@ -7822,9 +7868,15 @@ msgstr "Segmenti" msgid "Parsed Geometry Type" msgstr "Tipo di geometria analizzata" +msgid "Parsed Collision Mask" +msgstr "Maschera di collisione analizzata" + msgid "Source Geometry Mode" msgstr "Modalità geometrie sorgenti" +msgid "Source Geometry Group Name" +msgstr "Nome del gruppo della geometria sorgente" + msgid "Cells" msgstr "Celle" @@ -7852,6 +7904,9 @@ msgstr "Modalità d'esecuzione" msgid "Target Nodepath" msgstr "NodePath di destinazione" +msgid "Tip Nodepath" +msgstr "Percorso di nodo della punta" + msgid "CCDIK Data Chain Length" msgstr "Lunghezza di catena di dati CCDIK" @@ -7969,6 +8024,15 @@ msgstr "Dimensioni tassello" msgid "UV Clipping" msgstr "Clipping UV" +msgid "Occlusion Layers" +msgstr "Livelli di occlusione" + +msgid "Physics Layers" +msgstr "Livelli di fisica" + +msgid "Terrain Sets" +msgstr "Insiemi di terreni" + msgid "Custom Data Layers" msgstr "Strati di dati personalizzati" @@ -7990,9 +8054,18 @@ msgstr "A senso unico" msgid "One Way Margin" msgstr "Margine a senso unico" +msgid "Terrains Peering Bit" +msgstr "Bit di adattamento di terreni" + msgid "Transpose" msgstr "Trasponi" +msgid "Texture Origin" +msgstr "Origine della texture" + +msgid "Terrain Set" +msgstr "Insieme di terreni" + msgid "Terrain" msgstr "Terreno" @@ -8011,6 +8084,9 @@ msgstr "Collisione con le facce posteriori" msgid "Density" msgstr "Densità" +msgid "Height Falloff" +msgstr "Attenuazione di altezza" + msgid "Edge Fade" msgstr "Bordo dissolvenza" @@ -8131,6 +8207,9 @@ msgstr "Rayleigh" msgid "Coefficient" msgstr "Coefficiente" +msgid "Mie" +msgstr "Mie" + msgid "Eccentricity" msgstr "Eccentricità" @@ -8314,6 +8393,9 @@ msgstr "Sfondo" msgid "Canvas Max Layer" msgstr "Strato massimo del canvas" +msgid "Custom FOV" +msgstr "Campo visivo personalizzato" + msgid "Ambient Light" msgstr "Luce Ambientale" @@ -8725,6 +8807,9 @@ msgstr "Dissolvenza in prossimità" msgid "MSDF" msgstr "MSDF" +msgid "Pixel Range" +msgstr "Raggio di pixel" + msgid "Convex Hull Downsampling" msgstr "Sottocampionamento hull convesso" @@ -8734,6 +8819,9 @@ msgstr "Approssimazione hull convesso" msgid "Lightmap Size Hint" msgstr "Guida delle dimensioni della lightmap" +msgid "Blend Shape Mode" +msgstr "Modalità forma di fusione" + msgid "Shadow Mesh" msgstr "Mesh per le ombre" @@ -9262,12 +9350,21 @@ msgstr "Segnalibro" msgid "Executing Line" msgstr "Linea in esecuzione" +msgid "Can Fold" +msgstr "Può comprimere" + msgid "Folded" msgstr "Piegato" +msgid "Can Fold Code Region" +msgstr "Può comprimere regione di codice" + msgid "Folded Code Region" msgstr "Regione di codice compressa" +msgid "Folded EOL Icon" +msgstr "Icona di fine riga compressa" + msgid "Completion Lines" msgstr "Righe di completamento" @@ -9655,6 +9752,9 @@ msgstr "Larghezza dell'etichetta" msgid "Center Slider Grabbers" msgstr "Centra i grabber della barra" +msgid "Folded Arrow" +msgstr "Freccia compressa" + msgid "Expanded Arrow" msgstr "Freccia estesa" @@ -9847,6 +9947,12 @@ msgstr "Modalità antialiasing del font predefinita" msgid "Default Font Hinting" msgstr "Suggerimento del font predefinito" +msgid "Default Font Subpixel Positioning" +msgstr "Posizionamento predefinito di sotto-pixel del font" + +msgid "Default Font Multichannel Signed Distance Field" +msgstr "Campo predefinito di distanza con segno multicanale del font" + msgid "Default Font Generate Mipmaps" msgstr "Generazione mipmap del font predefinito" @@ -10045,6 +10151,9 @@ msgstr "Altezza cella predefinita" msgid "Default Up" msgstr "Direzione in alto predefinita" +msgid "Merge Rasterizer Cell Scale" +msgstr "Scala cella per il rasterizzatore unione" + msgid "Avoidance Use Multiple Threads" msgstr "Usa più di un thread per l'evazione" @@ -10516,6 +10625,9 @@ msgstr "Raggi d'occlusione per thread" msgid "Upscale Mode" msgstr "Modalità upscale" +msgid "Screen Space Reflection" +msgstr "Riflessione nello spazio dello schermo" + msgid "Roughness Quality" msgstr "Qualità di rugosità" @@ -10600,6 +10712,9 @@ msgstr "Ha dati di tracciamento" msgid "Body Flags" msgstr "Flag di corpo" +msgid "Blend Shapes" +msgstr "Forme di fusione" + msgid "Hand Tracking Source" msgstr "Sorgente di tracciamento della mano" diff --git a/main/main.cpp b/main/main.cpp index 588b8da9bd..4e8adb519c 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -2053,7 +2053,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph BLOCK_DEVICE("Intel", "Intel HD Graphics P3000"); BLOCK_DEVICE("Intel", "Intel(R) HD Graphics P3000"); BLOCK_DEVICE("0x8086", "0x0112"); // HD Graphics P3000, Gen6, Sandy Bridge - BLOCK_DEVICE("0x8086", "0x0122"); // HD Graphics P3000, Gen6, Sandy Bridge + BLOCK_DEVICE("0x8086", "0x0122"); BLOCK_DEVICE("0x8086", "0x015A"); // HD Graphics, Gen7, Ivy Bridge BLOCK_DEVICE("Intel", "Intel HD Graphics 2500"); BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 2500"); @@ -2061,10 +2061,81 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph BLOCK_DEVICE("Intel", "Intel HD Graphics 4000"); BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 4000"); BLOCK_DEVICE("0x8086", "0x0162"); // HD Graphics 4000, Gen7, Ivy Bridge - BLOCK_DEVICE("0x8086", "0x0166"); // HD Graphics 4000, Gen7, Ivy Bridge + BLOCK_DEVICE("0x8086", "0x0166"); BLOCK_DEVICE("Intel", "Intel HD Graphics P4000"); BLOCK_DEVICE("Intel", "Intel(R) HD Graphics P4000"); BLOCK_DEVICE("0x8086", "0x016A"); // HD Graphics P4000, Gen7, Ivy Bridge + BLOCK_DEVICE("Intel", "Intel(R) Vallyview Graphics"); + BLOCK_DEVICE("0x8086", "0x0F30"); // Intel(R) Vallyview Graphics, Gen7, Vallyview + BLOCK_DEVICE("0x8086", "0x0F31"); + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 4200"); + BLOCK_DEVICE("0x8086", "0x0A1E"); // Intel(R) HD Graphics 4200, Gen7.5, Haswell + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 4400"); + BLOCK_DEVICE("0x8086", "0x0A16"); // Intel(R) HD Graphics 4400, Gen7.5, Haswell + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 4600"); + BLOCK_DEVICE("0x8086", "0x0412"); // Intel(R) HD Graphics 4600, Gen7.5, Haswell + BLOCK_DEVICE("0x8086", "0x0416"); + BLOCK_DEVICE("0x8086", "0x0426"); + BLOCK_DEVICE("0x8086", "0x0D12"); + BLOCK_DEVICE("0x8086", "0x0D16"); + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics P4600/P4700"); + BLOCK_DEVICE("0x8086", "0x041A"); // Intel(R) HD Graphics P4600/P4700, Gen7.5, Haswell + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 5000"); + BLOCK_DEVICE("0x8086", "0x0422"); // Intel(R) HD Graphics 5000, Gen7.5, Haswell + BLOCK_DEVICE("0x8086", "0x042A"); + BLOCK_DEVICE("0x8086", "0x0A26"); + BLOCK_DEVICE("Intel", "Intel(R) Iris(TM) Graphics 5100"); + BLOCK_DEVICE("0x8086", "0x0A22"); // Intel(R) Iris(TM) Graphics 5100, Gen7.5, Haswell + BLOCK_DEVICE("0x8086", "0x0A2A"); + BLOCK_DEVICE("0x8086", "0x0A2B"); + BLOCK_DEVICE("0x8086", "0x0A2E"); + BLOCK_DEVICE("Intel", "Intel(R) Iris(TM) Pro Graphics 5200"); + BLOCK_DEVICE("0x8086", "0x0D22"); // Intel(R) Iris(TM) Pro Graphics 5200, Gen7.5, Haswell + BLOCK_DEVICE("0x8086", "0x0D26"); + BLOCK_DEVICE("0x8086", "0x0D2A"); + BLOCK_DEVICE("0x8086", "0x0D2B"); + BLOCK_DEVICE("0x8086", "0x0D2E"); + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 400"); + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 405"); + BLOCK_DEVICE("0x8086", "0x22B0"); // Intel(R) HD Graphics, Gen8, Cherryview Braswell + BLOCK_DEVICE("0x8086", "0x22B1"); + BLOCK_DEVICE("0x8086", "0x22B2"); + BLOCK_DEVICE("0x8086", "0x22B3"); + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 5300"); + BLOCK_DEVICE("0x8086", "0x161E"); // Intel(R) HD Graphics 5300, Gen8, Broadwell + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 5500"); + BLOCK_DEVICE("0x8086", "0x1616"); // Intel(R) HD Graphics 5500, Gen8, Broadwell + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 5600"); + BLOCK_DEVICE("0x8086", "0x1612"); // Intel(R) HD Graphics 5600, Gen8, Broadwell + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 6000"); + BLOCK_DEVICE("0x8086", "0x1626"); // Intel(R) HD Graphics 6000, Gen8, Broadwell + BLOCK_DEVICE("Intel", "Intel(R) Iris(TM) Graphics 6100"); + BLOCK_DEVICE("0x8086", "0x162B"); // Intel(R) Iris(TM) Graphics 6100, Gen8, Broadwell + BLOCK_DEVICE("Intel", "Intel(R) Iris(TM) Pro Graphics 6200"); + BLOCK_DEVICE("0x8086", "0x1622"); // Intel(R) Iris(TM) Pro Graphics 6200, Gen8, Broadwell + BLOCK_DEVICE("Intel", "Intel(R) Iris(TM) Pro Graphics P6300"); + BLOCK_DEVICE("0x8086", "0x162A"); // Intel(R) Iris(TM) Pro Graphics P6300, Gen8, Broadwell + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 500"); + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 505"); + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 510"); + BLOCK_DEVICE("0x8086", "0x1902"); // Intel(R) HD Graphics 510, Gen9, Skylake + BLOCK_DEVICE("0x8086", "0x1906"); + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 520"); + BLOCK_DEVICE("0x8086", "0x1916"); // Intel(R) HD Graphics 520, Gen9, Skylake + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 530"); + BLOCK_DEVICE("0x8086", "0x1912"); // Intel(R) HD Graphics 530, Gen9, Skylake + BLOCK_DEVICE("0x8086", "0x191B"); + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics P530"); + BLOCK_DEVICE("0x8086", "0x191D"); // Intel(R) HD Graphics P530, Gen9, Skylake + BLOCK_DEVICE("Intel", "Intel(R) HD Graphics 515"); + BLOCK_DEVICE("0x8086", "0x191E"); // Intel(R) HD Graphics 515, Gen9, Skylake + BLOCK_DEVICE("Intel", "Intel(R) Iris Graphics 540"); + BLOCK_DEVICE("0x8086", "0x1926"); // Intel(R) Iris Graphics 540, Gen9, Skylake + BLOCK_DEVICE("0x8086", "0x1927"); + BLOCK_DEVICE("Intel", "Intel(R) Iris Pro Graphics 580"); + BLOCK_DEVICE("0x8086", "0x193B"); // Intel(R) Iris Pro Graphics 580, Gen9, Skylake + BLOCK_DEVICE("Intel", "Intel(R) Iris Pro Graphics P580"); + BLOCK_DEVICE("0x8086", "0x193D"); // Intel(R) Iris Pro Graphics P580, Gen9, Skylake #undef BLOCK_DEVICE @@ -2385,6 +2456,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph GLOBAL_DEF("debug/settings/stdout/print_fps", false); GLOBAL_DEF("debug/settings/stdout/print_gpu_profile", false); GLOBAL_DEF("debug/settings/stdout/verbose_stdout", false); + GLOBAL_DEF("debug/settings/physics_interpolation/enable_warnings", true); if (!OS::get_singleton()->_verbose_stdout) { // Not manually overridden. OS::get_singleton()->_verbose_stdout = GLOBAL_GET("debug/settings/stdout/verbose_stdout"); @@ -3089,6 +3161,14 @@ Error Main::setup2(bool p_show_boot_logo) { OS::get_singleton()->benchmark_end_measure("Scene", "Modules and Extensions"); } + PackedStringArray extensions; + extensions.push_back("gd"); + if (ClassDB::class_exists("CSharpScript")) { + extensions.push_back("cs"); + } + extensions.push_back("gdshader"); + GLOBAL_DEF_NOVAL(PropertyInfo(Variant::PACKED_STRING_ARRAY, "editor/script/search_in_file_extensions"), extensions); // Note: should be defined after Scene level modules init to see .NET. + OS::get_singleton()->benchmark_end_measure("Startup", "Scene"); #ifdef TOOLS_ENABLED @@ -4081,16 +4161,16 @@ bool Main::iteration() { uint64_t physics_begin = OS::get_singleton()->get_ticks_usec(); -#ifndef _3D_DISABLED - PhysicsServer3D::get_singleton()->sync(); - PhysicsServer3D::get_singleton()->flush_queries(); -#endif // _3D_DISABLED - // Prepare the fixed timestep interpolated nodes BEFORE they are updated // by the physics server, otherwise the current and previous transforms // may be the same, and no interpolation takes place. OS::get_singleton()->get_main_loop()->iteration_prepare(); +#ifndef _3D_DISABLED + PhysicsServer3D::get_singleton()->sync(); + PhysicsServer3D::get_singleton()->flush_queries(); +#endif // _3D_DISABLED + PhysicsServer2D::get_singleton()->sync(); PhysicsServer2D::get_singleton()->flush_queries(); @@ -4100,6 +4180,7 @@ bool Main::iteration() { #endif // _3D_DISABLED PhysicsServer2D::get_singleton()->end_sync(); + Engine::get_singleton()->_in_physics = false; exit = true; break; } @@ -4123,6 +4204,8 @@ bool Main::iteration() { message_queue->flush(); + OS::get_singleton()->get_main_loop()->iteration_end(); + physics_process_ticks = MAX(physics_process_ticks, OS::get_singleton()->get_ticks_usec() - physics_begin); // keep the largest one for reference physics_process_max = MAX(OS::get_singleton()->get_ticks_usec() - physics_begin, physics_process_max); diff --git a/main/main_timer_sync.cpp b/main/main_timer_sync.cpp index d358d9fa93..569930d427 100644 --- a/main/main_timer_sync.cpp +++ b/main/main_timer_sync.cpp @@ -299,17 +299,6 @@ int64_t MainTimerSync::DeltaSmoother::smooth_delta(int64_t p_delta) { // before advance_core considers changing the physics_steps return from // the typical values as defined by typical_physics_steps double MainTimerSync::get_physics_jitter_fix() { - // Turn off jitter fix when using fixed timestep interpolation. - // Note this shouldn't be on UNTIL 3d interpolation is implemented, - // otherwise we will get people making 3d games with the physics_interpolation - // set to on getting jitter fix disabled unexpectedly. -#if 0 - if (Engine::get_singleton()->is_physics_interpolation_enabled()) { - // Would be better to write a simple bypass for jitter fix but this will do to get started. - return 0.0; - } -#endif - return Engine::get_singleton()->get_physics_jitter_fix(); } diff --git a/misc/dist/macos_tools.app/Contents/Info.plist b/misc/dist/macos_tools.app/Contents/Info.plist index 90888719f8..c35a209844 100644 --- a/misc/dist/macos_tools.app/Contents/Info.plist +++ b/misc/dist/macos_tools.app/Contents/Info.plist @@ -17,11 +17,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>4.3</string> + <string>4.4</string> <key>CFBundleSignature</key> <string>godot</string> <key>CFBundleVersion</key> - <string>4.3</string> + <string>4.4</string> <key>NSMicrophoneUsageDescription</key> <string>Microphone access is required to capture audio.</string> <key>NSCameraUsageDescription</key> diff --git a/misc/dist/windows/godot.iss b/misc/dist/windows/godot.iss index 6ce51e4bab..35f318cc12 100644 --- a/misc/dist/windows/godot.iss +++ b/misc/dist/windows/godot.iss @@ -1,5 +1,5 @@ #define MyAppName "Godot Engine" -#define MyAppVersion "4.3" +#define MyAppVersion "4.4" #define MyAppPublisher "Godot Engine contributors" #define MyAppURL "https://godotengine.org/" #define MyAppExeName "godot.exe" diff --git a/misc/extension_api_validation/4.2-stable.expected b/misc/extension_api_validation/4.2-stable_4.3-stable.expected index ce8f24c7a9..ce8f24c7a9 100644 --- a/misc/extension_api_validation/4.2-stable.expected +++ b/misc/extension_api_validation/4.2-stable_4.3-stable.expected diff --git a/misc/extension_api_validation/4.3-stable.expected b/misc/extension_api_validation/4.3-stable.expected new file mode 100644 index 0000000000..24c7702090 --- /dev/null +++ b/misc/extension_api_validation/4.3-stable.expected @@ -0,0 +1,16 @@ +This file contains the expected output of --validate-extension-api when run against the extension_api.json of the +4.3-stable tag (the basename of this file). + +Only lines that start with "Validate extension JSON:" matter, everything else is considered a comment and ignored. They +should instead be used to justify these changes and describe how users should work around these changes. + +Add new entries at the end of the file. + +## Changes between 4.3-stable and 4.4-stable + +GH-95374 +-------- +Validate extension JSON: Error: Field 'classes/ShapeCast2D/properties/collision_result': getter changed value in new API, from "_get_collision_result" to &"get_collision_result". +Validate extension JSON: Error: Field 'classes/ShapeCast3D/properties/collision_result': getter changed value in new API, from "_get_collision_result" to &"get_collision_result". + +These getters have been renamed to expose them. GDExtension language bindings couldn't have exposed these properties before. diff --git a/modules/etcpak/image_compress_etcpak.cpp b/modules/etcpak/image_compress_etcpak.cpp index 95ed462070..14887ce469 100644 --- a/modules/etcpak/image_compress_etcpak.cpp +++ b/modules/etcpak/image_compress_etcpak.cpp @@ -50,6 +50,7 @@ EtcpakType _determine_etc_type(Image::UsedChannels p_channels) { return EtcpakType::ETCPAK_TYPE_ETC2; case Image::USED_CHANNELS_RGBA: return EtcpakType::ETCPAK_TYPE_ETC2_ALPHA; + default: return EtcpakType::ETCPAK_TYPE_ETC2_ALPHA; } @@ -69,6 +70,7 @@ EtcpakType _determine_dxt_type(Image::UsedChannels p_channels) { return EtcpakType::ETCPAK_TYPE_DXT1; case Image::USED_CHANNELS_RGBA: return EtcpakType::ETCPAK_TYPE_DXT5; + default: return EtcpakType::ETCPAK_TYPE_DXT5; } @@ -79,71 +81,86 @@ void _compress_etc1(Image *r_img) { } void _compress_etc2(Image *r_img, Image::UsedChannels p_channels) { - EtcpakType type = _determine_etc_type(p_channels); - _compress_etcpak(type, r_img); + _compress_etcpak(_determine_etc_type(p_channels), r_img); } void _compress_bc(Image *r_img, Image::UsedChannels p_channels) { - EtcpakType type = _determine_dxt_type(p_channels); - _compress_etcpak(type, r_img); + _compress_etcpak(_determine_dxt_type(p_channels), r_img); } -void _compress_etcpak(EtcpakType p_compresstype, Image *r_img) { +void _compress_etcpak(EtcpakType p_compress_type, Image *r_img) { uint64_t start_time = OS::get_singleton()->get_ticks_msec(); - Image::Format img_format = r_img->get_format(); - if (Image::is_format_compressed(img_format)) { - return; // Do not compress, already compressed. - } - if (img_format > Image::FORMAT_RGBA8) { - // TODO: we should be able to handle FORMAT_RGBA4444 and FORMAT_RGBA5551 eventually + // The image is already compressed, return. + if (r_img->is_compressed()) { return; } - // Use RGBA8 to convert. - if (img_format != Image::FORMAT_RGBA8) { - r_img->convert(Image::FORMAT_RGBA8); - } + // Convert to RGBA8 for compression. + r_img->convert(Image::FORMAT_RGBA8); // Determine output format based on Etcpak type. Image::Format target_format = Image::FORMAT_RGBA8; - if (p_compresstype == EtcpakType::ETCPAK_TYPE_ETC1) { - target_format = Image::FORMAT_ETC; - r_img->convert_rgba8_to_bgra8(); // It's badly documented but ETCPAK seems to be expected BGRA8 for ETC. - } else if (p_compresstype == EtcpakType::ETCPAK_TYPE_ETC2) { - target_format = Image::FORMAT_ETC2_RGB8; - r_img->convert_rgba8_to_bgra8(); // It's badly documented but ETCPAK seems to be expected BGRA8 for ETC. - } else if (p_compresstype == EtcpakType::ETCPAK_TYPE_ETC2_R) { - target_format = Image::FORMAT_ETC2_R11; - r_img->convert_rgba8_to_bgra8(); // It's badly documented but ETCPAK seems to be expected BGRA8 for ETC. - } else if (p_compresstype == EtcpakType::ETCPAK_TYPE_ETC2_RG) { - target_format = Image::FORMAT_ETC2_RG11; - r_img->convert_rgba8_to_bgra8(); // It's badly documented but ETCPAK seems to be expected BGRA8 for ETC. - } else if (p_compresstype == EtcpakType::ETCPAK_TYPE_ETC2_RA_AS_RG) { - target_format = Image::FORMAT_ETC2_RA_AS_RG; - r_img->convert_rg_to_ra_rgba8(); - r_img->convert_rgba8_to_bgra8(); // It's badly documented but ETCPAK seems to be expected BGRA8 for ETC. - } else if (p_compresstype == EtcpakType::ETCPAK_TYPE_ETC2_ALPHA) { - target_format = Image::FORMAT_ETC2_RGBA8; - r_img->convert_rgba8_to_bgra8(); // It's badly documented but ETCPAK seems to be expected BGRA8 for ETC. - } else if (p_compresstype == EtcpakType::ETCPAK_TYPE_DXT1) { - target_format = Image::FORMAT_DXT1; - } else if (p_compresstype == EtcpakType::ETCPAK_TYPE_DXT5_RA_AS_RG) { - target_format = Image::FORMAT_DXT5_RA_AS_RG; - r_img->convert_rg_to_ra_rgba8(); - } else if (p_compresstype == EtcpakType::ETCPAK_TYPE_DXT5) { - target_format = Image::FORMAT_DXT5; - } else if (p_compresstype == EtcpakType::ETCPAK_TYPE_RGTC_R) { - target_format = Image::FORMAT_RGTC_R; - } else if (p_compresstype == EtcpakType::ETCPAK_TYPE_RGTC_RG) { - target_format = Image::FORMAT_RGTC_RG; - } else { - ERR_FAIL_MSG("Invalid or unsupported etcpak compression format, not ETC or DXT."); + + switch (p_compress_type) { + case EtcpakType::ETCPAK_TYPE_ETC1: + target_format = Image::FORMAT_ETC; + break; + + case EtcpakType::ETCPAK_TYPE_ETC2: + target_format = Image::FORMAT_ETC2_RGB8; + break; + + case EtcpakType::ETCPAK_TYPE_ETC2_ALPHA: + target_format = Image::FORMAT_ETC2_RGBA8; + break; + + case EtcpakType::ETCPAK_TYPE_ETC2_R: + target_format = Image::FORMAT_ETC2_R11; + break; + + case EtcpakType::ETCPAK_TYPE_ETC2_RG: + target_format = Image::FORMAT_ETC2_RG11; + break; + + case EtcpakType::ETCPAK_TYPE_ETC2_RA_AS_RG: + target_format = Image::FORMAT_ETC2_RA_AS_RG; + r_img->convert_rg_to_ra_rgba8(); + break; + + case EtcpakType::ETCPAK_TYPE_DXT1: + target_format = Image::FORMAT_DXT1; + break; + + case EtcpakType::ETCPAK_TYPE_DXT5: + target_format = Image::FORMAT_DXT5; + break; + + case EtcpakType::ETCPAK_TYPE_RGTC_R: + target_format = Image::FORMAT_RGTC_R; + break; + + case EtcpakType::ETCPAK_TYPE_RGTC_RG: + target_format = Image::FORMAT_RGTC_RG; + break; + + case EtcpakType::ETCPAK_TYPE_DXT5_RA_AS_RG: + target_format = Image::FORMAT_DXT5_RA_AS_RG; + r_img->convert_rg_to_ra_rgba8(); + break; + + default: + ERR_FAIL_MSG("Invalid or unsupported etcpak compression format, not ETC or DXT."); + break; } - // Compress image data and (if required) mipmaps. + // It's badly documented but ETCPAK seems to expect BGRA8 for ETC formats. + if (p_compress_type < EtcpakType::ETCPAK_TYPE_DXT1) { + r_img->convert_rgba8_to_bgra8(); + } - const bool mipmaps = r_img->has_mipmaps(); + // Compress image data and (if required) mipmaps. + const bool has_mipmaps = r_img->has_mipmaps(); int width = r_img->get_width(); int height = r_img->get_height(); @@ -164,109 +181,115 @@ void _compress_etcpak(EtcpakType p_compresstype, Image *r_img) { are used for a 2x2 map, and texel 'a' is used for 1x1. Note that this is similar to, but distinct from, the surface pitch, which can encompass additional padding beyond the physical surface size. */ - int next_width = width <= 2 ? width : (width + 3) & ~3; - int next_height = height <= 2 ? height : (height + 3) & ~3; - if (next_width != width || next_height != height) { - r_img->resize(next_width, next_height, Image::INTERPOLATE_LANCZOS); - width = r_img->get_width(); - height = r_img->get_height(); + + if (width % 4 != 0 || height % 4 != 0) { + width = width <= 2 ? width : (width + 3) & ~3; + height = height <= 2 ? height : (height + 3) & ~3; } - // ERR_FAIL_COND(width % 4 != 0 || height % 4 != 0); // FIXME: No longer guaranteed. + // Multiple-of-4 should be guaranteed by above. // However, power-of-two 3d textures will create Nx2 and Nx1 mipmap levels, // which are individually compressed Image objects that violate the above rule. // Hence, we allow Nx1 and Nx2 images through without forcing to multiple-of-4. - const uint8_t *src_read = r_img->get_data().ptr(); - - print_verbose(vformat("etcpak: Encoding image size %dx%d to format %s%s.", width, height, Image::get_format_name(target_format), mipmaps ? ", with mipmaps" : "")); - - int64_t dest_size = Image::get_image_data_size(width, height, target_format, mipmaps); + // Create the buffer for compressed image data. Vector<uint8_t> dest_data; - dest_data.resize(dest_size); + dest_data.resize(Image::get_image_data_size(width, height, target_format, has_mipmaps)); uint8_t *dest_write = dest_data.ptrw(); - int mip_count = mipmaps ? Image::get_image_required_mipmaps(width, height, target_format) : 0; + const uint8_t *src_read = r_img->get_data().ptr(); + + const int mip_count = has_mipmaps ? Image::get_image_required_mipmaps(width, height, target_format) : 0; Vector<uint32_t> padded_src; for (int i = 0; i < mip_count + 1; i++) { // Get write mip metrics for target image. - int orig_mip_w, orig_mip_h; - int64_t mip_ofs = Image::get_image_mipmap_offset_and_dimensions(width, height, target_format, i, orig_mip_w, orig_mip_h); + int dest_mip_w, dest_mip_h; + int64_t dest_mip_ofs = Image::get_image_mipmap_offset_and_dimensions(width, height, target_format, i, dest_mip_w, dest_mip_h); + // Ensure that mip offset is a multiple of 8 (etcpak expects uint64_t pointer). - ERR_FAIL_COND(mip_ofs % 8 != 0); - uint64_t *dest_mip_write = (uint64_t *)&dest_write[mip_ofs]; + ERR_FAIL_COND(dest_mip_ofs % 8 != 0); + uint64_t *dest_mip_write = reinterpret_cast<uint64_t *>(dest_write + dest_mip_ofs); - // Block size. Align stride to multiple of 4 (RGBA8). - int mip_w = (orig_mip_w + 3) & ~3; - int mip_h = (orig_mip_h + 3) & ~3; - const uint32_t blocks = mip_w * mip_h / 16; + // Block size. + dest_mip_w = (dest_mip_w + 3) & ~3; + dest_mip_h = (dest_mip_h + 3) & ~3; + const uint32_t blocks = dest_mip_w * dest_mip_h / 16; // Get mip data from source image for reading. - int64_t src_mip_ofs = r_img->get_mipmap_offset(i); - const uint32_t *src_mip_read = (const uint32_t *)&src_read[src_mip_ofs]; + int64_t src_mip_ofs, src_mip_size; + int src_mip_w, src_mip_h; + + r_img->get_mipmap_offset_size_and_dimensions(i, src_mip_ofs, src_mip_size, src_mip_w, src_mip_h); + + const uint32_t *src_mip_read = reinterpret_cast<const uint32_t *>(src_read + src_mip_ofs); // Pad textures to nearest block by smearing. - if (mip_w != orig_mip_w || mip_h != orig_mip_h) { - padded_src.resize(mip_w * mip_h); + if (dest_mip_w != src_mip_w || dest_mip_h != src_mip_h) { + // Reserve the buffer for padded image data. + padded_src.resize(dest_mip_w * dest_mip_h); uint32_t *ptrw = padded_src.ptrw(); + int x = 0, y = 0; - for (y = 0; y < orig_mip_h; y++) { - for (x = 0; x < orig_mip_w; x++) { - ptrw[mip_w * y + x] = src_mip_read[orig_mip_w * y + x]; + for (y = 0; y < src_mip_h; y++) { + for (x = 0; x < src_mip_w; x++) { + ptrw[dest_mip_w * y + x] = src_mip_read[src_mip_w * y + x]; } + // First, smear in x. - for (; x < mip_w; x++) { - ptrw[mip_w * y + x] = ptrw[mip_w * y + x - 1]; + for (; x < dest_mip_w; x++) { + ptrw[dest_mip_w * y + x] = ptrw[dest_mip_w * y + x - 1]; } } + // Then, smear in y. - for (; y < mip_h; y++) { - for (x = 0; x < mip_w; x++) { - ptrw[mip_w * y + x] = ptrw[mip_w * y + x - mip_w]; + for (; y < dest_mip_h; y++) { + for (x = 0; x < dest_mip_w; x++) { + ptrw[dest_mip_w * y + x] = ptrw[dest_mip_w * y + x - dest_mip_w]; } } + // Override the src_mip_read pointer to our temporary Vector. src_mip_read = padded_src.ptr(); } - switch (p_compresstype) { + switch (p_compress_type) { case EtcpakType::ETCPAK_TYPE_ETC1: - CompressEtc1RgbDither(src_mip_read, dest_mip_write, blocks, mip_w); + CompressEtc1RgbDither(src_mip_read, dest_mip_write, blocks, dest_mip_w); break; case EtcpakType::ETCPAK_TYPE_ETC2: - CompressEtc2Rgb(src_mip_read, dest_mip_write, blocks, mip_w, true); + CompressEtc2Rgb(src_mip_read, dest_mip_write, blocks, dest_mip_w, true); break; case EtcpakType::ETCPAK_TYPE_ETC2_ALPHA: case EtcpakType::ETCPAK_TYPE_ETC2_RA_AS_RG: - CompressEtc2Rgba(src_mip_read, dest_mip_write, blocks, mip_w, true); + CompressEtc2Rgba(src_mip_read, dest_mip_write, blocks, dest_mip_w, true); break; case EtcpakType::ETCPAK_TYPE_ETC2_R: - CompressEacR(src_mip_read, dest_mip_write, blocks, mip_w); + CompressEacR(src_mip_read, dest_mip_write, blocks, dest_mip_w); break; case EtcpakType::ETCPAK_TYPE_ETC2_RG: - CompressEacRg(src_mip_read, dest_mip_write, blocks, mip_w); + CompressEacRg(src_mip_read, dest_mip_write, blocks, dest_mip_w); break; case EtcpakType::ETCPAK_TYPE_DXT1: - CompressDxt1Dither(src_mip_read, dest_mip_write, blocks, mip_w); + CompressDxt1Dither(src_mip_read, dest_mip_write, blocks, dest_mip_w); break; case EtcpakType::ETCPAK_TYPE_DXT5: case EtcpakType::ETCPAK_TYPE_DXT5_RA_AS_RG: - CompressDxt5(src_mip_read, dest_mip_write, blocks, mip_w); + CompressDxt5(src_mip_read, dest_mip_write, blocks, dest_mip_w); break; case EtcpakType::ETCPAK_TYPE_RGTC_R: - CompressBc4(src_mip_read, dest_mip_write, blocks, mip_w); + CompressBc4(src_mip_read, dest_mip_write, blocks, dest_mip_w); break; case EtcpakType::ETCPAK_TYPE_RGTC_RG: - CompressBc5(src_mip_read, dest_mip_write, blocks, mip_w); + CompressBc5(src_mip_read, dest_mip_write, blocks, dest_mip_w); break; default: @@ -276,7 +299,7 @@ void _compress_etcpak(EtcpakType p_compresstype, Image *r_img) { } // Replace original image with compressed one. - r_img->set_data(width, height, mipmaps, target_format, dest_data); + r_img->set_data(width, height, has_mipmaps, target_format, dest_data); print_verbose(vformat("etcpak: Encoding took %d ms.", OS::get_singleton()->get_ticks_msec() - start_time)); } diff --git a/modules/etcpak/image_compress_etcpak.h b/modules/etcpak/image_compress_etcpak.h index 9d5343740b..d50b322fe4 100644 --- a/modules/etcpak/image_compress_etcpak.h +++ b/modules/etcpak/image_compress_etcpak.h @@ -51,6 +51,6 @@ void _compress_etc1(Image *r_img); void _compress_etc2(Image *r_img, Image::UsedChannels p_channels); void _compress_bc(Image *r_img, Image::UsedChannels p_channels); -void _compress_etcpak(EtcpakType p_compresstype, Image *r_img); +void _compress_etcpak(EtcpakType p_compress_type, Image *r_img); #endif // IMAGE_COMPRESS_ETCPAK_H diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index eaf2565e69..7bf5e946fb 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -2857,8 +2857,11 @@ GDScriptLanguage::GDScriptLanguage() { _debug_parse_err_line = -1; _debug_parse_err_file = ""; +#ifdef DEBUG_ENABLED profiling = false; + profile_native_calls = false; script_frame_time = 0; +#endif int dmcs = GLOBAL_DEF(PropertyInfo(Variant::INT, "debug/settings/gdscript/max_call_stack", PROPERTY_HINT_RANGE, "512," + itos(GDScriptFunction::MAX_CALL_DEPTH - 1) + ",1"), 1024); diff --git a/modules/gdscript/gdscript.h b/modules/gdscript/gdscript.h index 4e78fbe302..6527a0ea4d 100644 --- a/modules/gdscript/gdscript.h +++ b/modules/gdscript/gdscript.h @@ -459,9 +459,11 @@ class GDScriptLanguage : public ScriptLanguage { friend class GDScriptFunction; SelfList<GDScriptFunction>::List function_list; +#ifdef DEBUG_ENABLED bool profiling; bool profile_native_calls; uint64_t script_frame_time; +#endif HashMap<String, ObjectID> orphan_subclasses; diff --git a/modules/gridmap/editor/grid_map_editor_plugin.cpp b/modules/gridmap/editor/grid_map_editor_plugin.cpp index f402e2a583..ea63e07104 100644 --- a/modules/gridmap/editor/grid_map_editor_plugin.cpp +++ b/modules/gridmap/editor/grid_map_editor_plugin.cpp @@ -643,6 +643,7 @@ EditorPlugin::AfterGUIInput GridMapEditor::forward_spatial_input_event(Camera3D _do_paste(); input_action = INPUT_NONE; _update_paste_indicator(); + return EditorPlugin::AFTER_GUI_INPUT_STOP; } else if (mb->is_shift_pressed() && can_edit) { input_action = INPUT_SELECT; last_selection = selection; diff --git a/modules/hdr/image_loader_hdr.cpp b/modules/hdr/image_loader_hdr.cpp index c49c62a08b..ba59bb25ee 100644 --- a/modules/hdr/image_loader_hdr.cpp +++ b/modules/hdr/image_loader_hdr.cpp @@ -68,9 +68,11 @@ Error ImageLoaderHDR::load_image(Ref<Image> p_image, Ref<FileAccess> f, BitField imgdata.resize(height * width * (int)sizeof(uint32_t)); { - uint8_t *w = imgdata.ptrw(); + uint8_t *ptr = imgdata.ptrw(); - uint8_t *ptr = (uint8_t *)w; + Vector<uint8_t> temp_read_data; + temp_read_data.resize(128); + uint8_t *temp_read_ptr = temp_read_data.ptrw(); if (width < 8 || width >= 32768) { // Read flat data @@ -113,8 +115,9 @@ Error ImageLoaderHDR::load_image(Ref<Image> p_image, Ref<FileAccess> f, BitField } } else { // Dump + f->get_buffer(temp_read_ptr, count); for (int z = 0; z < count; ++z) { - ptr[(j * width + i++) * 4 + k] = f->get_8(); + ptr[(j * width + i++) * 4 + k] = temp_read_ptr[z]; } } } @@ -122,20 +125,27 @@ Error ImageLoaderHDR::load_image(Ref<Image> p_image, Ref<FileAccess> f, BitField } } + const bool force_linear = p_flags & FLAG_FORCE_LINEAR; + //convert for (int i = 0; i < width * height; i++) { - float exp = pow(2.0f, ptr[3] - 128.0f); + int e = ptr[3] - 128; + + if (force_linear || (e < -15 || e > 15)) { + float exp = pow(2.0f, e); + Color c(ptr[0] * exp / 255.0, ptr[1] * exp / 255.0, ptr[2] * exp / 255.0); - Color c( - ptr[0] * exp / 255.0, - ptr[1] * exp / 255.0, - ptr[2] * exp / 255.0); + if (force_linear) { + c = c.srgb_to_linear(); + } - if (p_flags & FLAG_FORCE_LINEAR) { - c = c.srgb_to_linear(); + *(uint32_t *)ptr = c.to_rgbe9995(); + } else { + // https://github.com/george-steel/rgbe-rs/blob/e7cc33b7f42b4eb3272c166dac75385e48687c92/src/types.rs#L123-L129 + uint32_t e5 = (uint32_t)(e + 15); + *(uint32_t *)ptr = ((e5 << 27) | ((uint32_t)ptr[2] << 19) | ((uint32_t)ptr[1] << 10) | ((uint32_t)ptr[0] << 1)); } - *(uint32_t *)ptr = c.to_rgbe9995(); ptr += 4; } } diff --git a/modules/hdr/image_loader_hdr.h b/modules/hdr/image_loader_hdr.h index 9821db059e..0a8e91fb9e 100644 --- a/modules/hdr/image_loader_hdr.h +++ b/modules/hdr/image_loader_hdr.h @@ -37,6 +37,7 @@ class ImageLoaderHDR : public ImageFormatLoader { public: virtual Error load_image(Ref<Image> p_image, Ref<FileAccess> f, BitField<ImageFormatLoader::LoaderFlags> p_flags, float p_scale); virtual void get_recognized_extensions(List<String> *p_extensions) const; + ImageLoaderHDR(); }; diff --git a/modules/mono/editor/Godot.NET.Sdk/Godot.NET.Sdk/Godot.NET.Sdk.csproj b/modules/mono/editor/Godot.NET.Sdk/Godot.NET.Sdk/Godot.NET.Sdk.csproj index 74623a60ba..ee624a443d 100644 --- a/modules/mono/editor/Godot.NET.Sdk/Godot.NET.Sdk/Godot.NET.Sdk.csproj +++ b/modules/mono/editor/Godot.NET.Sdk/Godot.NET.Sdk/Godot.NET.Sdk.csproj @@ -7,7 +7,7 @@ <Authors>Godot Engine contributors</Authors> <PackageId>Godot.NET.Sdk</PackageId> - <Version>4.3.0</Version> + <Version>4.4.0</Version> <PackageVersion>$(PackageVersion_Godot_NET_Sdk)</PackageVersion> <RepositoryUrl>https://github.com/godotengine/godot/tree/master/modules/mono/editor/Godot.NET.Sdk</RepositoryUrl> <PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl> diff --git a/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/Godot.SourceGenerators.csproj b/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/Godot.SourceGenerators.csproj index 1aa2979e76..8e407da7a6 100644 --- a/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/Godot.SourceGenerators.csproj +++ b/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/Godot.SourceGenerators.csproj @@ -9,7 +9,7 @@ <Authors>Godot Engine contributors</Authors> <PackageId>Godot.SourceGenerators</PackageId> - <Version>4.3.0</Version> + <Version>4.4.0</Version> <PackageVersion>$(PackageVersion_Godot_SourceGenerators)</PackageVersion> <RepositoryUrl>https://github.com/godotengine/godot/tree/master/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators</RepositoryUrl> <PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl> diff --git a/modules/mono/editor/script_templates/VisualShaderNodeCustom/basic.cs b/modules/mono/editor/script_templates/VisualShaderNodeCustom/basic.cs index cd335934db..ece1ab44a2 100644 --- a/modules/mono/editor/script_templates/VisualShaderNodeCustom/basic.cs +++ b/modules/mono/editor/script_templates/VisualShaderNodeCustom/basic.cs @@ -3,6 +3,8 @@ using _BINDINGS_NAMESPACE_; using System; +[Tool] +[GlobalClass] public partial class VisualShaderNode_CLASS_ : _BASE_ { public override string _GetName() @@ -20,37 +22,37 @@ public partial class VisualShaderNode_CLASS_ : _BASE_ return ""; } - public override long _GetReturnIconType() + public override VisualShaderNode.PortType _GetReturnIconType() { return 0; } - public override long _GetInputPortCount() + public override int _GetInputPortCount() { return 0; } - public override string _GetInputPortName(long port) + public override string _GetInputPortName(int port) { return ""; } - public override long _GetInputPortType(long port) + public override VisualShaderNode.PortType _GetInputPortType(int port) { return 0; } - public override long _GetOutputPortCount() + public override int _GetOutputPortCount() { return 1; } - public override string _GetOutputPortName(long port) + public override string _GetOutputPortName(int port) { return "result"; } - public override long _GetOutputPortType(long port) + public override VisualShaderNode.PortType _GetOutputPortType(int port) { return 0; } diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/GodotObjectExtensions.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/GodotObjectExtensions.cs index 563a6abe9b..1fc6e54e09 100644 --- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/GodotObjectExtensions.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/GodotObjectExtensions.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics.CodeAnalysis; using Godot.NativeInterop; #nullable enable @@ -51,7 +52,7 @@ namespace Godot /// </summary> /// <param name="instance">The instance to check.</param> /// <returns>If the instance is a valid object.</returns> - public static bool IsInstanceValid(GodotObject? instance) + public static bool IsInstanceValid([NotNullWhen(true)] GodotObject? instance) { return instance != null && instance.NativeInstance != IntPtr.Zero; } diff --git a/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj b/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj index 6b25087c93..b838f8eac7 100644 --- a/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj +++ b/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj @@ -17,7 +17,7 @@ <Authors>Godot Engine contributors</Authors> <PackageId>GodotSharp</PackageId> - <Version>4.3.0</Version> + <Version>4.4.0</Version> <PackageVersion>$(PackageVersion_GodotSharp)</PackageVersion> <RepositoryUrl>https://github.com/godotengine/godot/tree/master/modules/mono/glue/GodotSharp/GodotSharp</RepositoryUrl> <PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl> diff --git a/modules/mono/glue/GodotSharp/GodotSharpEditor/GodotSharpEditor.csproj b/modules/mono/glue/GodotSharp/GodotSharpEditor/GodotSharpEditor.csproj index 4561fdaf2b..65b4824f94 100644 --- a/modules/mono/glue/GodotSharp/GodotSharpEditor/GodotSharpEditor.csproj +++ b/modules/mono/glue/GodotSharp/GodotSharpEditor/GodotSharpEditor.csproj @@ -15,7 +15,7 @@ <Authors>Godot Engine contributors</Authors> <PackageId>GodotSharpEditor</PackageId> - <Version>4.3.0</Version> + <Version>4.4.0</Version> <PackageVersion>$(PackageVersion_GodotSharp)</PackageVersion> <RepositoryUrl>https://github.com/godotengine/godot/tree/master/modules/mono/glue/GodotSharp/GodotSharpEditor</RepositoryUrl> <PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl> diff --git a/modules/multiplayer/doc_classes/MultiplayerSpawner.xml b/modules/multiplayer/doc_classes/MultiplayerSpawner.xml index 3da245f806..b620292519 100644 --- a/modules/multiplayer/doc_classes/MultiplayerSpawner.xml +++ b/modules/multiplayer/doc_classes/MultiplayerSpawner.xml @@ -48,11 +48,11 @@ </methods> <members> <member name="spawn_function" type="Callable" setter="set_spawn_function" getter="get_spawn_function"> - Method called on all peers when for every custom [method spawn] requested by the authority. Will receive the [code]data[/code] parameter, and should return a [Node] that is not in the scene tree. + Method called on all peers when a custom [method spawn] is requested by the authority. Will receive the [code]data[/code] parameter, and should return a [Node] that is not in the scene tree. [b]Note:[/b] The returned node should [b]not[/b] be added to the scene with [method Node.add_child]. This is done automatically. </member> <member name="spawn_limit" type="int" setter="set_spawn_limit" getter="get_spawn_limit" default="0"> - Maximum nodes that is allowed to be spawned by this spawner. Includes both spawnable scenes and custom spawns. + Maximum number of nodes allowed to be spawned by this spawner. Includes both spawnable scenes and custom spawns. When set to [code]0[/code] (the default), there is no limit. </member> <member name="spawn_path" type="NodePath" setter="set_spawn_path" getter="get_spawn_path" default="NodePath("")"> diff --git a/modules/openxr/extensions/platform/openxr_opengl_extension.cpp b/modules/openxr/extensions/platform/openxr_opengl_extension.cpp index d92084a220..de4a9e4b8e 100644 --- a/modules/openxr/extensions/platform/openxr_opengl_extension.cpp +++ b/modules/openxr/extensions/platform/openxr_opengl_extension.cpp @@ -56,11 +56,6 @@ // feature off. // See: https://registry.khronos.org/OpenGL/extensions/EXT/EXT_sRGB_write_control.txt -// On OpenGLES this is not defined in our standard headers.. -#ifndef GL_FRAMEBUFFER_SRGB -#define GL_FRAMEBUFFER_SRGB 0x8DB9 -#endif - HashMap<String, bool *> OpenXROpenGLExtension::get_requested_extensions() { HashMap<String, bool *> request_extensions; @@ -196,23 +191,6 @@ void OpenXROpenGLExtension::get_usable_depth_formats(Vector<int64_t> &p_usable_d p_usable_depth_formats.push_back(GL_DEPTH_COMPONENT24); } -void OpenXROpenGLExtension::on_pre_draw_viewport(RID p_render_target) { - if (srgb_ext_is_available) { - hw_linear_to_srgb_is_enabled = glIsEnabled(GL_FRAMEBUFFER_SRGB); - if (hw_linear_to_srgb_is_enabled) { - // Disable this. - glDisable(GL_FRAMEBUFFER_SRGB); - } - } -} - -void OpenXROpenGLExtension::on_post_draw_viewport(RID p_render_target) { - if (srgb_ext_is_available && hw_linear_to_srgb_is_enabled) { - // Re-enable this. - glEnable(GL_FRAMEBUFFER_SRGB); - } -} - bool OpenXROpenGLExtension::get_swapchain_image_data(XrSwapchain p_swapchain, int64_t p_swapchain_format, uint32_t p_width, uint32_t p_height, uint32_t p_sample_count, uint32_t p_array_size, void **r_swapchain_graphics_data) { GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton(); ERR_FAIL_NULL_V(texture_storage, false); diff --git a/modules/openxr/extensions/platform/openxr_opengl_extension.h b/modules/openxr/extensions/platform/openxr_opengl_extension.h index a3052d3f53..8da3ca48f4 100644 --- a/modules/openxr/extensions/platform/openxr_opengl_extension.h +++ b/modules/openxr/extensions/platform/openxr_opengl_extension.h @@ -49,9 +49,6 @@ public: virtual void on_instance_created(const XrInstance p_instance) override; virtual void *set_session_create_and_get_next_pointer(void *p_next_pointer) override; - virtual void on_pre_draw_viewport(RID p_render_target) override; - virtual void on_post_draw_viewport(RID p_render_target) override; - virtual void get_usable_swapchain_formats(Vector<int64_t> &p_usable_swap_chains) override; virtual void get_usable_depth_formats(Vector<int64_t> &p_usable_swap_chains) override; virtual String get_swapchain_format_name(int64_t p_swapchain_format) const override; @@ -76,9 +73,6 @@ private: Vector<RID> texture_rids; }; - bool srgb_ext_is_available = true; - bool hw_linear_to_srgb_is_enabled = false; - bool check_graphics_api_support(XrVersion p_desired_version); #ifdef ANDROID_ENABLED diff --git a/modules/text_server_adv/SCsub b/modules/text_server_adv/SCsub index 68a5d499d4..4112b81622 100644 --- a/modules/text_server_adv/SCsub +++ b/modules/text_server_adv/SCsub @@ -142,7 +142,14 @@ if env["builtin_harfbuzz"]: env_harfbuzz.Append(CCFLAGS=["-DHAVE_ICU"]) if env["builtin_icu4c"]: env_harfbuzz.Prepend(CPPPATH=["#thirdparty/icu4c/common/", "#thirdparty/icu4c/i18n/"]) - env_harfbuzz.Append(CCFLAGS=["-DU_HAVE_LIB_SUFFIX=1", "-DU_LIB_SUFFIX_C_NAME=_godot", "-DHAVE_ICU_BUILTIN"]) + env_harfbuzz.Append( + CCFLAGS=[ + "-DU_STATIC_IMPLEMENTATION", + "-DU_HAVE_LIB_SUFFIX=1", + "-DU_LIB_SUFFIX_C_NAME=_godot", + "-DHAVE_ICU_BUILTIN", + ] + ) if freetype_enabled: env_harfbuzz.Append( @@ -499,6 +506,7 @@ if env["builtin_icu4c"]: ) env_text_server_adv.Append( CXXFLAGS=[ + "-DU_STATIC_IMPLEMENTATION", "-DU_HAVE_LIB_SUFFIX=1", "-DU_LIB_SUFFIX_C_NAME=_godot", "-DICU_DATA_NAME=" + icu_data_name, diff --git a/modules/text_server_adv/gdextension_build/SConstruct b/modules/text_server_adv/gdextension_build/SConstruct index d0d13fec3f..effed1e772 100644 --- a/modules/text_server_adv/gdextension_build/SConstruct +++ b/modules/text_server_adv/gdextension_build/SConstruct @@ -415,6 +415,7 @@ if env["platform"] == "android" or env["platform"] == "linuxbsd": env_harfbuzz.Append( CCFLAGS=[ + "-DU_STATIC_IMPLEMENTATION", "-DU_HAVE_LIB_SUFFIX=1", "-DU_LIB_SUFFIX_C_NAME=_godot", "-DHAVE_ICU_BUILTIN", @@ -746,6 +747,7 @@ env_icu.Append( ) env.Append( CXXFLAGS=[ + "-DU_STATIC_IMPLEMENTATION", "-DU_HAVE_LIB_SUFFIX=1", "-DU_LIB_SUFFIX_C_NAME=_godot", "-DICU_DATA_NAME=" + icu_data_name, diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp index 499ddb703b..54a7c9ef8d 100644 --- a/modules/text_server_adv/text_server_adv.cpp +++ b/modules/text_server_adv/text_server_adv.cpp @@ -3528,6 +3528,37 @@ String TextServerAdvanced::_font_get_supported_chars(const RID &p_font_rid) cons return chars; } +PackedInt32Array TextServerAdvanced::_font_get_supported_glyphs(const RID &p_font_rid) const { + FontAdvanced *fd = _get_font_data(p_font_rid); + ERR_FAIL_NULL_V(fd, PackedInt32Array()); + + MutexLock lock(fd->mutex); + if (fd->cache.is_empty()) { + ERR_FAIL_COND_V(!_ensure_cache_for_size(fd, fd->msdf ? Vector2i(fd->msdf_source_size, 0) : Vector2i(16, 0)), PackedInt32Array()); + } + FontForSizeAdvanced *at_size = fd->cache.begin()->value; + + PackedInt32Array glyphs; +#ifdef MODULE_FREETYPE_ENABLED + if (at_size && at_size->face) { + FT_UInt gindex; + FT_ULong charcode = FT_Get_First_Char(at_size->face, &gindex); + while (gindex != 0) { + glyphs.push_back(gindex); + charcode = FT_Get_Next_Char(at_size->face, charcode, &gindex); + } + return glyphs; + } +#endif + if (at_size) { + const HashMap<int32_t, FontGlyph> &gl = at_size->glyph_map; + for (const KeyValue<int32_t, FontGlyph> &E : gl) { + glyphs.push_back(E.key); + } + } + return glyphs; +} + void TextServerAdvanced::_font_render_range(const RID &p_font_rid, const Vector2i &p_size, int64_t p_start, int64_t p_end) { FontAdvanced *fd = _get_font_data(p_font_rid); ERR_FAIL_NULL(fd); diff --git a/modules/text_server_adv/text_server_adv.h b/modules/text_server_adv/text_server_adv.h index 92bdb93bcf..fdebb8e4cd 100644 --- a/modules/text_server_adv/text_server_adv.h +++ b/modules/text_server_adv/text_server_adv.h @@ -871,6 +871,7 @@ public: MODBIND2RC(bool, font_has_char, const RID &, int64_t); MODBIND1RC(String, font_get_supported_chars, const RID &); + MODBIND1RC(PackedInt32Array, font_get_supported_glyphs, const RID &); MODBIND4(font_render_range, const RID &, const Vector2i &, int64_t, int64_t); MODBIND3(font_render_glyph, const RID &, const Vector2i &, int64_t); diff --git a/modules/text_server_fb/text_server_fb.cpp b/modules/text_server_fb/text_server_fb.cpp index b45c004011..baffd02d47 100644 --- a/modules/text_server_fb/text_server_fb.cpp +++ b/modules/text_server_fb/text_server_fb.cpp @@ -2477,6 +2477,37 @@ String TextServerFallback::_font_get_supported_chars(const RID &p_font_rid) cons return chars; } +PackedInt32Array TextServerFallback::_font_get_supported_glyphs(const RID &p_font_rid) const { + FontFallback *fd = _get_font_data(p_font_rid); + ERR_FAIL_NULL_V(fd, PackedInt32Array()); + + MutexLock lock(fd->mutex); + if (fd->cache.is_empty()) { + ERR_FAIL_COND_V(!_ensure_cache_for_size(fd, fd->msdf ? Vector2i(fd->msdf_source_size, 0) : Vector2i(16, 0)), PackedInt32Array()); + } + FontForSizeFallback *at_size = fd->cache.begin()->value; + + PackedInt32Array glyphs; +#ifdef MODULE_FREETYPE_ENABLED + if (at_size && at_size->face) { + FT_UInt gindex; + FT_ULong charcode = FT_Get_First_Char(at_size->face, &gindex); + while (gindex != 0) { + glyphs.push_back(gindex); + charcode = FT_Get_Next_Char(at_size->face, charcode, &gindex); + } + return glyphs; + } +#endif + if (at_size) { + const HashMap<int32_t, FontGlyph> &gl = at_size->glyph_map; + for (const KeyValue<int32_t, FontGlyph> &E : gl) { + glyphs.push_back(E.key); + } + } + return glyphs; +} + void TextServerFallback::_font_render_range(const RID &p_font_rid, const Vector2i &p_size, int64_t p_start, int64_t p_end) { FontFallback *fd = _get_font_data(p_font_rid); ERR_FAIL_NULL(fd); diff --git a/modules/text_server_fb/text_server_fb.h b/modules/text_server_fb/text_server_fb.h index 2235247b31..1b76c6fa0f 100644 --- a/modules/text_server_fb/text_server_fb.h +++ b/modules/text_server_fb/text_server_fb.h @@ -739,6 +739,7 @@ public: MODBIND2RC(bool, font_has_char, const RID &, int64_t); MODBIND1RC(String, font_get_supported_chars, const RID &); + MODBIND1RC(PackedInt32Array, font_get_supported_glyphs, const RID &); MODBIND4(font_render_range, const RID &, const Vector2i &, int64_t, int64_t); MODBIND3(font_render_glyph, const RID &, const Vector2i &, int64_t); diff --git a/platform/android/export/export_plugin.cpp b/platform/android/export/export_plugin.cpp index 5169b9417f..689360aef6 100644 --- a/platform/android/export/export_plugin.cpp +++ b/platform/android/export/export_plugin.cpp @@ -3270,18 +3270,17 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP } List<String> copy_args; - String copy_command; - if (export_format == EXPORT_FORMAT_AAB) { - copy_command = vformat("copyAndRename%sAab", build_type); - } else if (export_format == EXPORT_FORMAT_APK) { - copy_command = vformat("copyAndRename%sApk", build_type); - } - + String copy_command = "copyAndRenameBinary"; copy_args.push_back(copy_command); copy_args.push_back("-p"); // argument to specify the start directory. copy_args.push_back(build_path); // start directory. + copy_args.push_back("-Pexport_build_type=" + build_type.to_lower()); + + String export_format_arg = export_format == EXPORT_FORMAT_AAB ? "aab" : "apk"; + copy_args.push_back("-Pexport_format=" + export_format_arg); + String export_filename = p_path.get_file(); String export_path = p_path.get_base_dir(); if (export_path.is_relative_path()) { diff --git a/platform/android/java/app/build.gradle b/platform/android/java/app/build.gradle index 01d5d9ef92..05b4f379b3 100644 --- a/platform/android/java/app/build.gradle +++ b/platform/android/java/app/build.gradle @@ -211,70 +211,24 @@ android { } } -task copyAndRenameDebugApk(type: Copy) { +task copyAndRenameBinary(type: Copy) { // The 'doNotTrackState' is added to disable gradle's up-to-date checks for output files // and directories. Otherwise this check may cause permissions access failures on Windows // machines. doNotTrackState("No need for up-to-date checks for the copy-and-rename operation") - from "$buildDir/outputs/apk/debug/android_debug.apk" - into getExportPath() - rename "android_debug.apk", getExportFilename() -} + String exportPath = getExportPath() + String exportFilename = getExportFilename() + String exportBuildType = getExportBuildType() + String exportFormat = getExportFormat() -task copyAndRenameDevApk(type: Copy) { - // The 'doNotTrackState' is added to disable gradle's up-to-date checks for output files - // and directories. Otherwise this check may cause permissions access failures on Windows - // machines. - doNotTrackState("No need for up-to-date checks for the copy-and-rename operation") - - from "$buildDir/outputs/apk/dev/android_dev.apk" - into getExportPath() - rename "android_dev.apk", getExportFilename() -} - -task copyAndRenameReleaseApk(type: Copy) { - // The 'doNotTrackState' is added to disable gradle's up-to-date checks for output files - // and directories. Otherwise this check may cause permissions access failures on Windows - // machines. - doNotTrackState("No need for up-to-date checks for the copy-and-rename operation") - - from "$buildDir/outputs/apk/release/android_release.apk" - into getExportPath() - rename "android_release.apk", getExportFilename() -} - -task copyAndRenameDebugAab(type: Copy) { - // The 'doNotTrackState' is added to disable gradle's up-to-date checks for output files - // and directories. Otherwise this check may cause permissions access failures on Windows - // machines. - doNotTrackState("No need for up-to-date checks for the copy-and-rename operation") - - from "$buildDir/outputs/bundle/debug/build-debug.aab" - into getExportPath() - rename "build-debug.aab", getExportFilename() -} - -task copyAndRenameDevAab(type: Copy) { - // The 'doNotTrackState' is added to disable gradle's up-to-date checks for output files - // and directories. Otherwise this check may cause permissions access failures on Windows - // machines. - doNotTrackState("No need for up-to-date checks for the copy-and-rename operation") - - from "$buildDir/outputs/bundle/dev/build-dev.aab" - into getExportPath() - rename "build-dev.aab", getExportFilename() -} - -task copyAndRenameReleaseAab(type: Copy) { - // The 'doNotTrackState' is added to disable gradle's up-to-date checks for output files - // and directories. Otherwise this check may cause permissions access failures on Windows - // machines. - doNotTrackState("No need for up-to-date checks for the copy-and-rename operation") + boolean isAab = exportFormat == "aab" + String sourceFilepath = isAab ? "$buildDir/outputs/bundle/$exportBuildType/build-${exportBuildType}.aab" : "$buildDir/outputs/apk/$exportBuildType/android_${exportBuildType}.apk" + String sourceFilename = isAab ? "build-${exportBuildType}.aab" : "android_${exportBuildType}.apk" - from "$buildDir/outputs/bundle/release/build-release.aab" - into getExportPath() - rename "build-release.aab", getExportFilename() + from sourceFilepath + into exportPath + rename sourceFilename, exportFilename } /** diff --git a/platform/android/java/app/config.gradle b/platform/android/java/app/config.gradle index eb9ad9de05..611a9c4a40 100644 --- a/platform/android/java/app/config.gradle +++ b/platform/android/java/app/config.gradle @@ -224,6 +224,22 @@ ext.getExportFilename = { return exportFilename } +ext.getExportBuildType = { + String exportBuildType = project.hasProperty("export_build_type") ? project.property("export_build_type") : "" + if (exportBuildType == null || exportBuildType.isEmpty()) { + exportBuildType = "debug" + } + return exportBuildType +} + +ext.getExportFormat = { + String exportFormat = project.hasProperty("export_format") ? project.property("export_format") : "" + if (exportFormat == null || exportFormat.isEmpty()) { + exportFormat = "apk" + } + return exportFormat +} + /** * Parse the project properties for the 'plugins_maven_repos' property and return the list * of maven repos. diff --git a/platform/android/java/build.gradle b/platform/android/java/build.gradle index f5555289fd..771bda6948 100644 --- a/platform/android/java/build.gradle +++ b/platform/android/java/build.gradle @@ -35,116 +35,17 @@ ext { // `./gradlew generateGodotTemplates` build command instead after running the `scons` command(s). // The {selectedAbis} values must be from the {supportedAbis} values. selectedAbis = ["arm64"] -} -def rootDir = "../../.." -def binDir = "$rootDir/bin/" -def androidEditorBuildsDir = "$binDir/android_editor_builds/" + rootDir = "../../.." + binDir = "$rootDir/bin/" + androidEditorBuildsDir = "$binDir/android_editor_builds/" +} def getSconsTaskName(String flavor, String buildType, String abi) { return "compileGodotNativeLibs" + flavor.capitalize() + buildType.capitalize() + abi.capitalize() } /** - * Copy the generated 'android_debug.apk' binary template into the Godot bin directory. - * Depends on the app build task to ensure the binary is generated prior to copying. - */ -task copyDebugBinaryToBin(type: Copy) { - dependsOn ':app:assembleDebug' - from('app/build/outputs/apk/debug') - into(binDir) - include('android_debug.apk') -} - -/** - * Copy the generated 'android_dev.apk' binary template into the Godot bin directory. - * Depends on the app build task to ensure the binary is generated prior to copying. - */ -task copyDevBinaryToBin(type: Copy) { - dependsOn ':app:assembleDev' - from('app/build/outputs/apk/dev') - into(binDir) - include('android_dev.apk') -} - -/** - * Copy the generated 'android_release.apk' binary template into the Godot bin directory. - * Depends on the app build task to ensure the binary is generated prior to copying. - */ -task copyReleaseBinaryToBin(type: Copy) { - dependsOn ':app:assembleRelease' - from('app/build/outputs/apk/release') - into(binDir) - include('android_release.apk') -} - -/** - * Copy the Godot android library archive debug file into the app module debug libs directory. - * Depends on the library build task to ensure the AAR file is generated prior to copying. - */ -task copyDebugAARToAppModule(type: Copy) { - dependsOn ':lib:assembleTemplateDebug' - from('lib/build/outputs/aar') - into('app/libs/debug') - include('godot-lib.template_debug.aar') -} - -/** - * Copy the Godot android library archive debug file into the root bin directory. - * Depends on the library build task to ensure the AAR file is generated prior to copying. - */ -task copyDebugAARToBin(type: Copy) { - dependsOn ':lib:assembleTemplateDebug' - from('lib/build/outputs/aar') - into(binDir) - include('godot-lib.template_debug.aar') -} - -/** - * Copy the Godot android library archive dev file into the app module dev libs directory. - * Depends on the library build task to ensure the AAR file is generated prior to copying. - */ -task copyDevAARToAppModule(type: Copy) { - dependsOn ':lib:assembleTemplateDev' - from('lib/build/outputs/aar') - into('app/libs/dev') - include('godot-lib.template_debug.dev.aar') -} - -/** - * Copy the Godot android library archive dev file into the root bin directory. - * Depends on the library build task to ensure the AAR file is generated prior to copying. - */ -task copyDevAARToBin(type: Copy) { - dependsOn ':lib:assembleTemplateDev' - from('lib/build/outputs/aar') - into(binDir) - include('godot-lib.template_debug.dev.aar') -} - -/** - * Copy the Godot android library archive release file into the app module release libs directory. - * Depends on the library build task to ensure the AAR file is generated prior to copying. - */ -task copyReleaseAARToAppModule(type: Copy) { - dependsOn ':lib:assembleTemplateRelease' - from('lib/build/outputs/aar') - into('app/libs/release') - include('godot-lib.template_release.aar') -} - -/** - * Copy the Godot android library archive release file into the root bin directory. - * Depends on the library build task to ensure the AAR file is generated prior to copying. - */ -task copyReleaseAARToBin(type: Copy) { - dependsOn ':lib:assembleTemplateRelease' - from('lib/build/outputs/aar') - into(binDir) - include('godot-lib.template_release.aar') -} - -/** * Generate Godot gradle build template by zipping the source files from the app directory, as well * as the AAR files generated by 'copyDebugAAR', 'copyDevAAR' and 'copyReleaseAAR'. * The zip file also includes some gradle tools to enable gradle builds from the Godot Editor. @@ -197,7 +98,7 @@ def generateBuildTasks(String flavor = "template") { throw new GradleException("Invalid build flavor: $flavor") } - def tasks = [] + def buildTasks = [] // Only build the apks and aar files for which we have native shared libraries unless we intend // to run the scons build tasks. @@ -206,72 +107,93 @@ def generateBuildTasks(String flavor = "template") { String libsDir = isTemplate ? "lib/libs/" : "lib/libs/tools/" for (String target : supportedFlavorsBuildTypes[flavor]) { File targetLibs = new File(libsDir + target) + + String targetSuffix = target + if (target == "dev") { + targetSuffix = "debug.dev" + } + if (!excludeSconsBuildTasks || (targetLibs != null && targetLibs.isDirectory() && targetLibs.listFiles() != null && targetLibs.listFiles().length > 0)) { + String capitalizedTarget = target.capitalize() if (isTemplate) { - // Copy the generated aar library files to the build directory. - tasks += "copy${capitalizedTarget}AARToAppModule" - // Copy the generated aar library files to the bin directory. - tasks += "copy${capitalizedTarget}AARToBin" - // Copy the prebuilt binary templates to the bin directory. - tasks += "copy${capitalizedTarget}BinaryToBin" + // Copy the Godot android library archive file into the app module libs directory. + // Depends on the library build task to ensure the AAR file is generated prior to copying. + String copyAARTaskName = "copy${capitalizedTarget}AARToAppModule" + if (tasks.findByName(copyAARTaskName) != null) { + buildTasks += tasks.getByName(copyAARTaskName) + } else { + buildTasks += tasks.create(name: copyAARTaskName, type: Copy) { + dependsOn ":lib:assembleTemplate${capitalizedTarget}" + from('lib/build/outputs/aar') + include("godot-lib.template_${targetSuffix}.aar") + into("app/libs/${target}") + } + } + + // Copy the Godot android library archive file into the root bin directory. + // Depends on the library build task to ensure the AAR file is generated prior to copying. + String copyAARToBinTaskName = "copy${capitalizedTarget}AARToBin" + if (tasks.findByName(copyAARToBinTaskName) != null) { + buildTasks += tasks.getByName(copyAARToBinTaskName) + } else { + buildTasks += tasks.create(name: copyAARToBinTaskName, type: Copy) { + dependsOn ":lib:assembleTemplate${capitalizedTarget}" + from('lib/build/outputs/aar') + include("godot-lib.template_${targetSuffix}.aar") + into(binDir) + } + } + + // Copy the generated binary template into the Godot bin directory. + // Depends on the app build task to ensure the binary is generated prior to copying. + String copyBinaryTaskName = "copy${capitalizedTarget}BinaryToBin" + if (tasks.findByName(copyBinaryTaskName) != null) { + buildTasks += tasks.getByName(copyBinaryTaskName) + } else { + buildTasks += tasks.create(name: copyBinaryTaskName, type: Copy) { + dependsOn ":app:assemble${capitalizedTarget}" + from("app/build/outputs/apk/${target}") + into(binDir) + include("android_${target}.apk") + } + } } else { // Copy the generated editor apk to the bin directory. - tasks += "copyEditor${capitalizedTarget}ApkToBin" + String copyEditorApkTaskName = "copyEditor${capitalizedTarget}ApkToBin" + if (tasks.findByName(copyEditorApkTaskName) != null) { + buildTasks += tasks.getByName(copyEditorApkTaskName) + } else { + buildTasks += tasks.create(name: copyEditorApkTaskName, type: Copy) { + dependsOn ":editor:assemble${capitalizedTarget}" + from("editor/build/outputs/apk/${target}") + into(androidEditorBuildsDir) + include("android_editor-${target}*.apk") + } + } + // Copy the generated editor aab to the bin directory. - tasks += "copyEditor${capitalizedTarget}AabToBin" + String copyEditorAabTaskName = "copyEditor${capitalizedTarget}AabToBin" + if (tasks.findByName(copyEditorAabTaskName) != null) { + buildTasks += tasks.getByName(copyEditorAabTaskName) + } else { + buildTasks += tasks.create(name: copyEditorAabTaskName, type: Copy) { + dependsOn ":editor:bundle${capitalizedTarget}" + from("editor/build/outputs/bundle/${target}") + into(androidEditorBuildsDir) + include("android_editor-${target}*.aab") + } + } } } else { logger.lifecycle("No native shared libs for target $target. Skipping build.") } } - return tasks -} - -task copyEditorReleaseApkToBin(type: Copy) { - dependsOn ':editor:assembleRelease' - from('editor/build/outputs/apk/release') - into(androidEditorBuildsDir) - include('android_editor-release*.apk') -} - -task copyEditorReleaseAabToBin(type: Copy) { - dependsOn ':editor:bundleRelease' - from('editor/build/outputs/bundle/release') - into(androidEditorBuildsDir) - include('android_editor-release*.aab') -} - -task copyEditorDebugApkToBin(type: Copy) { - dependsOn ':editor:assembleDebug' - from('editor/build/outputs/apk/debug') - into(androidEditorBuildsDir) - include('android_editor-debug.apk') -} - -task copyEditorDebugAabToBin(type: Copy) { - dependsOn ':editor:bundleDebug' - from('editor/build/outputs/bundle/debug') - into(androidEditorBuildsDir) - include('android_editor-debug.aab') -} - -task copyEditorDevApkToBin(type: Copy) { - dependsOn ':editor:assembleDev' - from('editor/build/outputs/apk/dev') - into(androidEditorBuildsDir) - include('android_editor-dev.apk') -} - -task copyEditorDevAabToBin(type: Copy) { - dependsOn ':editor:bundleDev' - from('editor/build/outputs/bundle/dev') - into(androidEditorBuildsDir) - include('android_editor-dev.aab') + return buildTasks } /** diff --git a/platform/android/java/lib/src/org/godotengine/godot/io/file/FileData.kt b/platform/android/java/lib/src/org/godotengine/godot/io/file/FileData.kt index f2c0577c21..d0b8a8dffa 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/io/file/FileData.kt +++ b/platform/android/java/lib/src/org/godotengine/godot/io/file/FileData.kt @@ -53,7 +53,7 @@ internal class FileData(filePath: String, accessFlag: FileAccessFlags) : DataAcc fun fileLastModified(filepath: String): Long { return try { - File(filepath).lastModified() + File(filepath).lastModified() / 1000L } catch (e: SecurityException) { 0L } diff --git a/platform/android/java/lib/src/org/godotengine/godot/io/file/MediaStoreData.kt b/platform/android/java/lib/src/org/godotengine/godot/io/file/MediaStoreData.kt index 5410eed727..146fc04da4 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/io/file/MediaStoreData.kt +++ b/platform/android/java/lib/src/org/godotengine/godot/io/file/MediaStoreData.kt @@ -203,7 +203,7 @@ internal class MediaStoreData(context: Context, filePath: String, accessFlag: Fi } val dataItem = result[0] - return dataItem.dateModified.toLong() + return dataItem.dateModified.toLong() / 1000L } fun rename(context: Context, from: String, to: String): Boolean { diff --git a/platform/macos/export/export_plugin.cpp b/platform/macos/export/export_plugin.cpp index 2ff02d2e74..057fb4ec16 100644 --- a/platform/macos/export/export_plugin.cpp +++ b/platform/macos/export/export_plugin.cpp @@ -1092,7 +1092,7 @@ void EditorExportPlatformMacOS::_code_sign(const Ref<EditorExportPreset> &p_pres List<String> args; args.push_back("sign"); - if (p_path.get_extension() != "dmg") { + if (!p_ent_path.is_empty()) { args.push_back("--entitlements-xml-path"); args.push_back(p_ent_path); } @@ -1153,7 +1153,7 @@ void EditorExportPlatformMacOS::_code_sign(const Ref<EditorExportPreset> &p_pres args.push_back("runtime"); } - if (p_path.get_extension() != "dmg") { + if (!p_ent_path.is_empty()) { args.push_back("--entitlements"); args.push_back(p_ent_path); } @@ -1237,7 +1237,7 @@ void EditorExportPlatformMacOS::_code_sign_directory(const Ref<EditorExportPrese } if (extensions_to_sign.has(current_file.get_extension())) { - String ent_path = p_ent_path; + String ent_path; bool set_bundle_id = false; if (sandbox && FileAccess::exists(current_file_path)) { int ftype = MachO::get_filetype(current_file_path); @@ -1357,7 +1357,7 @@ Error EditorExportPlatformMacOS::_copy_and_sign_files(Ref<DirAccess> &dir_access _code_sign_directory(p_preset, p_in_app_path, p_ent_path, p_helper_ent_path, p_should_error_on_non_code_sign); } else { if (extensions_to_sign.has(p_in_app_path.get_extension())) { - String ent_path = p_ent_path; + String ent_path; bool set_bundle_id = false; if (p_sandbox && FileAccess::exists(p_in_app_path)) { int ftype = MachO::get_filetype(p_in_app_path); diff --git a/platform/web/audio_driver_web.cpp b/platform/web/audio_driver_web.cpp index 22487d2756..5e046d7050 100644 --- a/platform/web/audio_driver_web.cpp +++ b/platform/web/audio_driver_web.cpp @@ -312,6 +312,11 @@ bool AudioDriverWeb::is_sample_playback_active(const Ref<AudioSamplePlayback> &p return godot_audio_sample_is_active(itos(p_playback->get_instance_id()).utf8().get_data()) != 0; } +double AudioDriverWeb::get_sample_playback_position(const Ref<AudioSamplePlayback> &p_playback) { + ERR_FAIL_COND_V_MSG(p_playback.is_null(), false, "Parameter p_playback is null."); + return godot_audio_get_sample_playback_position(itos(p_playback->get_instance_id()).utf8().get_data()); +} + void AudioDriverWeb::update_sample_playback_pitch_scale(const Ref<AudioSamplePlayback> &p_playback, float p_pitch_scale) { ERR_FAIL_COND_MSG(p_playback.is_null(), "Parameter p_playback is null."); godot_audio_sample_update_pitch_scale( diff --git a/platform/web/audio_driver_web.h b/platform/web/audio_driver_web.h index 46c5ce4de1..d352fa4692 100644 --- a/platform/web/audio_driver_web.h +++ b/platform/web/audio_driver_web.h @@ -96,6 +96,7 @@ public: virtual void stop_sample_playback(const Ref<AudioSamplePlayback> &p_playback) override; virtual void set_sample_playback_pause(const Ref<AudioSamplePlayback> &p_playback, bool p_paused) override; virtual bool is_sample_playback_active(const Ref<AudioSamplePlayback> &p_playback) override; + virtual double get_sample_playback_position(const Ref<AudioSamplePlayback> &p_playback) override; virtual void update_sample_playback_pitch_scale(const Ref<AudioSamplePlayback> &p_playback, float p_pitch_scale = 0.0f) override; virtual void set_sample_playback_bus_volumes_linear(const Ref<AudioSamplePlayback> &p_playback, const HashMap<StringName, Vector<AudioFrame>> &p_bus_volumes) override; diff --git a/platform/web/display_server_web.cpp b/platform/web/display_server_web.cpp index 40de4e523b..4e55cc137a 100644 --- a/platform/web/display_server_web.cpp +++ b/platform/web/display_server_web.cpp @@ -902,8 +902,10 @@ void DisplayServerWeb::process_joypads() { for (int b = 0; b < s_btns_num; b++) { // Buttons 6 and 7 in the standard mapping need to be // axis to be handled as JoyAxis::TRIGGER by Godot. - if (s_standard && (b == 6 || b == 7)) { - input->joy_axis(idx, (JoyAxis)b, s_btns[b]); + if (s_standard && (b == 6)) { + input->joy_axis(idx, JoyAxis::TRIGGER_LEFT, s_btns[b]); + } else if (s_standard && (b == 7)) { + input->joy_axis(idx, JoyAxis::TRIGGER_RIGHT, s_btns[b]); } else { input->joy_button(idx, (JoyButton)b, s_btns[b]); } diff --git a/platform/web/emscripten_helpers.py b/platform/web/emscripten_helpers.py index 2cee3e8110..8fcabb21c7 100644 --- a/platform/web/emscripten_helpers.py +++ b/platform/web/emscripten_helpers.py @@ -51,11 +51,13 @@ def create_template_zip(env, js, wasm, worker, side): js, wasm, "#platform/web/js/libs/audio.worklet.js", + "#platform/web/js/libs/audio.position.worklet.js", ] out_files = [ zip_dir.File(binary_name + ".js"), zip_dir.File(binary_name + ".wasm"), zip_dir.File(binary_name + ".audio.worklet.js"), + zip_dir.File(binary_name + ".audio.position.worklet.js"), ] if env["threads"]: in_files.append(worker) @@ -74,6 +76,7 @@ def create_template_zip(env, js, wasm, worker, side): "offline.html", "godot.editor.js", "godot.editor.audio.worklet.js", + "godot.editor.audio.position.worklet.js", "logo.svg", "favicon.png", ] diff --git a/platform/web/export/export_plugin.cpp b/platform/web/export/export_plugin.cpp index d83e465e8e..d8c1b6033d 100644 --- a/platform/web/export/export_plugin.cpp +++ b/platform/web/export/export_plugin.cpp @@ -242,6 +242,7 @@ Error EditorExportPlatformWeb::_build_pwa(const Ref<EditorExportPreset> &p_prese } cache_files.push_back(name + ".worker.js"); cache_files.push_back(name + ".audio.worklet.js"); + cache_files.push_back(name + ".audio.position.worklet.js"); replaces["___GODOT_CACHE___"] = Variant(cache_files).to_json_string(); // Heavy files that are cached on demand. @@ -835,6 +836,7 @@ Error EditorExportPlatformWeb::_export_project(const Ref<EditorExportPreset> &p_ DirAccess::remove_file_or_error(basepath + ".js"); DirAccess::remove_file_or_error(basepath + ".worker.js"); DirAccess::remove_file_or_error(basepath + ".audio.worklet.js"); + DirAccess::remove_file_or_error(basepath + ".audio.position.worklet.js"); DirAccess::remove_file_or_error(basepath + ".service.worker.js"); DirAccess::remove_file_or_error(basepath + ".pck"); DirAccess::remove_file_or_error(basepath + ".png"); diff --git a/platform/web/godot_audio.h b/platform/web/godot_audio.h index dd5bec00cf..4961ebd2bb 100644 --- a/platform/web/godot_audio.h +++ b/platform/web/godot_audio.h @@ -55,6 +55,7 @@ extern void godot_audio_sample_start(const char *p_playback_object_id, const cha extern void godot_audio_sample_stop(const char *p_playback_object_id); extern void godot_audio_sample_set_pause(const char *p_playback_object_id, bool p_pause); extern int godot_audio_sample_is_active(const char *p_playback_object_id); +extern double godot_audio_get_sample_playback_position(const char *p_playback_object_id); extern void godot_audio_sample_update_pitch_scale(const char *p_playback_object_id, float p_pitch_scale); extern void godot_audio_sample_set_volumes_linear(const char *p_playback_object_id, int *p_buses_buf, int p_buses_size, float *p_volumes_buf, int p_volumes_size); extern void godot_audio_sample_set_finished_callback(void (*p_callback)(const char *)); diff --git a/platform/web/js/engine/config.js b/platform/web/js/engine/config.js index 8c4e1b1b24..61b488cf81 100644 --- a/platform/web/js/engine/config.js +++ b/platform/web/js/engine/config.js @@ -299,6 +299,8 @@ const InternalConfig = function (initConfig) { // eslint-disable-line no-unused- return `${loadPath}.worker.js`; } else if (path.endsWith('.audio.worklet.js')) { return `${loadPath}.audio.worklet.js`; + } else if (path.endsWith('.audio.position.worklet.js')) { + return `${loadPath}.audio.position.worklet.js`; } else if (path.endsWith('.js')) { return `${loadPath}.js`; } else if (path in gdext) { diff --git a/platform/web/js/libs/audio.position.worklet.js b/platform/web/js/libs/audio.position.worklet.js new file mode 100644 index 0000000000..bf3ac4ae2d --- /dev/null +++ b/platform/web/js/libs/audio.position.worklet.js @@ -0,0 +1,50 @@ +/**************************************************************************/ +/* godot.audio.position.worklet.js */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* 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: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* 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. */ +/**************************************************************************/ + +class GodotPositionReportingProcessor extends AudioWorkletProcessor { + constructor() { + super(); + this.position = 0; + } + + process(inputs, _outputs, _parameters) { + if (inputs.length > 0) { + const input = inputs[0]; + if (input.length > 0) { + this.position += input[0].length; + this.port.postMessage({ 'type': 'position', 'data': this.position }); + return true; + } + } + return true; + } +} + +registerProcessor('godot-position-reporting-processor', GodotPositionReportingProcessor); diff --git a/platform/web/js/libs/library_godot_audio.js b/platform/web/js/libs/library_godot_audio.js index 8b7c572196..0ba6eed464 100644 --- a/platform/web/js/libs/library_godot_audio.js +++ b/platform/web/js/libs/library_godot_audio.js @@ -330,6 +330,7 @@ class SampleNodeBus { * startTime?: number * loopMode?: LoopMode * volume?: Float32Array + * start?: boolean * }} SampleNodeOptions */ @@ -421,9 +422,15 @@ class SampleNode { /** @type {number} */ this.offset = options.offset ?? 0; /** @type {number} */ + this._playbackPosition = options.offset; + /** @type {number} */ this.startTime = options.startTime ?? 0; /** @type {boolean} */ this.isPaused = false; + /** @type {boolean} */ + this.isStarted = false; + /** @type {boolean} */ + this.isCanceled = false; /** @type {number} */ this.pauseTime = 0; /** @type {number} */ @@ -440,6 +447,8 @@ class SampleNode { this._source = GodotAudio.ctx.createBufferSource(); this._onended = null; + /** @type {AudioWorkletNode | null} */ + this._positionWorklet = null; this.setPlaybackRate(options.playbackRate ?? 44100); this._source.buffer = this.getSample().getAudioBuffer(); @@ -449,6 +458,8 @@ class SampleNode { const bus = GodotAudio.Bus.getBus(params.busIndex); const sampleNodeBus = this.getSampleNodeBus(bus); sampleNodeBus.setVolume(options.volume); + + this.connectPositionWorklet(options.start); } /** @@ -460,6 +471,14 @@ class SampleNode { } /** + * Gets the playback position. + * @returns {number} + */ + getPlaybackPosition() { + return this._playbackPosition; + } + + /** * Sets the playback rate. * @param {number} val Value to set. * @returns {void} @@ -508,8 +527,12 @@ class SampleNode { * @returns {void} */ start() { + if (this.isStarted) { + return; + } this._resetSourceStartTime(); this._source.start(this.startTime, this.offset); + this.isStarted = true; } /** @@ -585,17 +608,73 @@ class SampleNode { } /** + * Sets up and connects the source to the GodotPositionReportingProcessor + * If the worklet module is not loaded in, it will be added + */ + connectPositionWorklet(start) { + try { + this._positionWorklet = this.createPositionWorklet(); + this._source.connect(this._positionWorklet); + if (start) { + this.start(); + } + } catch (error) { + if (error?.name !== 'InvalidStateError') { + throw error; + } + const path = GodotConfig.locate_file('godot.audio.position.worklet.js'); + GodotAudio.ctx.audioWorklet + .addModule(path) + .then(() => { + if (!this.isCanceled) { + this._positionWorklet = this.createPositionWorklet(); + this._source.connect(this._positionWorklet); + if (start) { + this.start(); + } + } + }).catch((addModuleError) => { + GodotRuntime.error('Failed to create PositionWorklet.', addModuleError); + }); + } + } + + /** + * Creates the AudioWorkletProcessor used to track playback position. + * @returns {AudioWorkletNode} + */ + createPositionWorklet() { + const worklet = new AudioWorkletNode( + GodotAudio.ctx, + 'godot-position-reporting-processor' + ); + worklet.port.onmessage = (event) => { + switch (event.data['type']) { + case 'position': + this._playbackPosition = (parseInt(event.data.data, 10) / this.getSample().sampleRate) + this.offset; + break; + default: + // Do nothing. + } + }; + return worklet; + } + + /** * Clears the `SampleNode`. * @returns {void} */ clear() { + this.isCanceled = true; this.isPaused = false; this.pauseTime = 0; if (this._source != null) { this._source.removeEventListener('ended', this._onended); this._onended = null; - this._source.stop(); + if (this.isStarted) { + this._source.stop(); + } this._source.disconnect(); this._source = null; } @@ -605,6 +684,12 @@ class SampleNode { } this._sampleNodeBuses.clear(); + if (this._positionWorklet) { + this._positionWorklet.disconnect(); + this._positionWorklet.port.onmessage = null; + this._positionWorklet = null; + } + GodotAudio.SampleNode.delete(this.id); } @@ -645,7 +730,9 @@ class SampleNode { const pauseTime = this.isPaused ? this.pauseTime : 0; + this.connectPositionWorklet(); this._source.start(this.startTime, this.offset + pauseTime); + this.isStarted = true; } /** @@ -1262,7 +1349,7 @@ const _GodotAudio = { startOptions ) { GodotAudio.SampleNode.stopSampleNode(playbackObjectId); - const sampleNode = GodotAudio.SampleNode.create( + GodotAudio.SampleNode.create( { busIndex, id: playbackObjectId, @@ -1270,7 +1357,6 @@ const _GodotAudio = { }, startOptions ); - sampleNode.start(); }, /** @@ -1590,6 +1676,7 @@ const _GodotAudio = { offset, volume, playbackRate: 1, + start: true, }; GodotAudio.start_sample( playbackObjectId, @@ -1635,6 +1722,22 @@ const _GodotAudio = { return Number(GodotAudio.sampleNodes.has(playbackObjectId)); }, + godot_audio_get_sample_playback_position__proxy: 'sync', + godot_audio_get_sample_playback_position__sig: 'di', + /** + * Returns the position of the playback position. + * @param {number} playbackObjectIdStrPtr Playback object id pointer + * @returns {number} + */ + godot_audio_get_sample_playback_position: function (playbackObjectIdStrPtr) { + const playbackObjectId = GodotRuntime.parseString(playbackObjectIdStrPtr); + const sampleNode = GodotAudio.SampleNode.getSampleNodeOrNull(playbackObjectId); + if (sampleNode == null) { + return 0; + } + return sampleNode.getPlaybackPosition(); + }, + godot_audio_sample_update_pitch_scale__proxy: 'sync', godot_audio_sample_update_pitch_scale__sig: 'vii', /** diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp index 7e368b4c1e..f0fe56a9c8 100644 --- a/platform/windows/display_server_windows.cpp +++ b/platform/windows/display_server_windows.cpp @@ -5391,13 +5391,15 @@ DisplayServer::WindowID DisplayServerWindows::_create_window(WindowMode p_mode, { WindowData *wd_transient_parent = nullptr; HWND owner_hwnd = nullptr; - if (p_transient_parent != INVALID_WINDOW_ID && !windows.has(p_transient_parent)) { - ERR_PRINT("Condition \"!windows.has(p_transient_parent)\" is true."); - p_transient_parent = INVALID_WINDOW_ID; - } else { - wd_transient_parent = &windows[p_transient_parent]; - if (p_exclusive) { - owner_hwnd = wd_transient_parent->hWnd; + if (p_transient_parent != INVALID_WINDOW_ID) { + if (!windows.has(p_transient_parent)) { + ERR_PRINT("Condition \"!windows.has(p_transient_parent)\" is true."); + p_transient_parent = INVALID_WINDOW_ID; + } else { + wd_transient_parent = &windows[p_transient_parent]; + if (p_exclusive) { + owner_hwnd = wd_transient_parent->hWnd; + } } } @@ -5610,6 +5612,8 @@ DisplayServer::WindowID DisplayServerWindows::_create_window(WindowMode p_mode, return id; } +BitField<DisplayServerWindows::DriverID> DisplayServerWindows::tested_drivers = 0; + // WinTab API. bool DisplayServerWindows::wintab_available = false; WTOpenPtr DisplayServerWindows::wintab_WTOpen = nullptr; @@ -5772,6 +5776,8 @@ void DisplayServerWindows::tablet_set_current_driver(const String &p_driver) { DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, int p_screen, Context p_context, Error &r_error) { KeyMappingWindows::initialize(); + tested_drivers.clear(); + drop_events = false; key_event_pos = 0; @@ -5940,7 +5946,6 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win wc.lpszClassName = L"Engine"; if (!RegisterClassExW(&wc)) { - MessageBoxW(nullptr, L"Failed To Register The Window Class.", L"ERROR", MB_OK | MB_ICONEXCLAMATION); r_error = ERR_UNAVAILABLE; return; } @@ -5951,11 +5956,13 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win #if defined(VULKAN_ENABLED) if (rendering_driver == "vulkan") { rendering_context = memnew(RenderingContextDriverVulkanWindows); + tested_drivers.set_flag(DRIVER_ID_RD_VULKAN); } #endif #if defined(D3D12_ENABLED) if (rendering_driver == "d3d12") { rendering_context = memnew(RenderingContextDriverD3D12); + tested_drivers.set_flag(DRIVER_ID_RD_D3D12); } #endif @@ -5967,6 +5974,7 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win if (failed && fallback_to_vulkan && rendering_driver != "vulkan") { memdelete(rendering_context); rendering_context = memnew(RenderingContextDriverVulkanWindows); + tested_drivers.set_flag(DRIVER_ID_RD_VULKAN); if (rendering_context->initialize() == OK) { WARN_PRINT("Your video card drivers seem not to support Direct3D 12, switching to Vulkan."); rendering_driver = "vulkan"; @@ -5979,6 +5987,7 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win if (failed && fallback_to_d3d12 && rendering_driver != "d3d12") { memdelete(rendering_context); rendering_context = memnew(RenderingContextDriverD3D12); + tested_drivers.set_flag(DRIVER_ID_RD_D3D12); if (rendering_context->initialize() == OK) { WARN_PRINT("Your video card drivers seem not to support Vulkan, switching to Direct3D 12."); rendering_driver = "d3d12"; @@ -6049,6 +6058,7 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win } if (force_angle || (gl_info["version"].operator int() < 30003)) { + tested_drivers.set_flag(DRIVER_ID_COMPAT_OPENGL3); if (show_warning) { WARN_PRINT("Your video card drivers seem not to support the required OpenGL 3.3 version, switching to ANGLE."); } @@ -6058,6 +6068,7 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win if (rendering_driver == "opengl3") { gl_manager_native = memnew(GLManagerNative_Windows); + tested_drivers.set_flag(DRIVER_ID_COMPAT_OPENGL3); if (gl_manager_native->initialize() != OK) { memdelete(gl_manager_native); @@ -6070,6 +6081,7 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win } if (rendering_driver == "opengl3_angle") { gl_manager_angle = memnew(GLManagerANGLE_Windows); + tested_drivers.set_flag(DRIVER_ID_COMPAT_ANGLE_D3D11); if (gl_manager_angle->initialize() != OK) { memdelete(gl_manager_angle); @@ -6203,32 +6215,41 @@ Vector<String> DisplayServerWindows::get_rendering_drivers_func() { DisplayServer *DisplayServerWindows::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i *p_position, const Vector2i &p_resolution, int p_screen, Context p_context, Error &r_error) { DisplayServer *ds = memnew(DisplayServerWindows(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_position, p_resolution, p_screen, p_context, r_error)); if (r_error != OK) { - if (p_rendering_driver == "vulkan") { - String executable_name = OS::get_singleton()->get_executable_path().get_file(); - OS::get_singleton()->alert( - vformat("Your video card drivers seem not to support the required Vulkan version.\n\n" - "If possible, consider updating your video card drivers or using the OpenGL 3 driver.\n\n" - "You can enable the OpenGL 3 driver by starting the engine from the\n" - "command line with the command:\n\n \"%s\" --rendering-driver opengl3\n\n" - "If you have recently updated your video card drivers, try rebooting.", - executable_name), - "Unable to initialize Vulkan video driver"); - } else if (p_rendering_driver == "d3d12") { + if (tested_drivers == 0) { + OS::get_singleton()->alert("Failed to register the window class.", "Unable to initialize DisplayServer"); + } else if (tested_drivers.has_flag(DRIVER_ID_RD_VULKAN) || tested_drivers.has_flag(DRIVER_ID_RD_D3D12)) { + Vector<String> drivers; + if (tested_drivers.has_flag(DRIVER_ID_RD_VULKAN)) { + drivers.push_back("Vulkan"); + } + if (tested_drivers.has_flag(DRIVER_ID_RD_D3D12)) { + drivers.push_back("Direct3D 12"); + } String executable_name = OS::get_singleton()->get_executable_path().get_file(); OS::get_singleton()->alert( - vformat("Your video card drivers seem not to support the required DirectX 12 version.\n\n" + vformat("Your video card drivers seem not to support the required %s version.\n\n" "If possible, consider updating your video card drivers or using the OpenGL 3 driver.\n\n" "You can enable the OpenGL 3 driver by starting the engine from the\n" "command line with the command:\n\n \"%s\" --rendering-driver opengl3\n\n" "If you have recently updated your video card drivers, try rebooting.", + String(" or ").join(drivers), executable_name), - "Unable to initialize DirectX 12 video driver"); + "Unable to initialize video driver"); } else { + Vector<String> drivers; + if (tested_drivers.has_flag(DRIVER_ID_COMPAT_OPENGL3)) { + drivers.push_back("OpenGL 3.3"); + } + if (tested_drivers.has_flag(DRIVER_ID_COMPAT_ANGLE_D3D11)) { + drivers.push_back("Direct3D 11"); + } OS::get_singleton()->alert( - "Your video card drivers seem not to support the required OpenGL 3.3 version.\n\n" - "If possible, consider updating your video card drivers.\n\n" - "If you have recently updated your video card drivers, try rebooting.", - "Unable to initialize OpenGL video driver"); + vformat( + "Your video card drivers seem not to support the required %s version.\n\n" + "If possible, consider updating your video card drivers.\n\n" + "If you have recently updated your video card drivers, try rebooting.", + String(" or ").join(drivers)), + "Unable to initialize video driver"); } } return ds; diff --git a/platform/windows/display_server_windows.h b/platform/windows/display_server_windows.h index de5b813953..26328ba876 100644 --- a/platform/windows/display_server_windows.h +++ b/platform/windows/display_server_windows.h @@ -388,6 +388,14 @@ class DisplayServerWindows : public DisplayServer { String tablet_driver; Vector<String> tablet_drivers; + enum DriverID { + DRIVER_ID_COMPAT_OPENGL3 = 1 << 0, + DRIVER_ID_COMPAT_ANGLE_D3D11 = 1 << 1, + DRIVER_ID_RD_VULKAN = 1 << 2, + DRIVER_ID_RD_D3D12 = 1 << 3, + }; + static BitField<DriverID> tested_drivers; + enum TimerID { TIMER_ID_MOVE_REDRAW = 1, TIMER_ID_WINDOW_ACTIVATION = 2, diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 9025f53f42..40b265785f 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -379,6 +379,8 @@ Error OS_Windows::open_dynamic_library(const String &p_path, void *&p_library_ha //this code exists so gdextension can load .dll files from within the executable path path = get_executable_path().get_base_dir().path_join(p_path.get_file()); } + // Path to load from may be different from original if we make copies. + String load_path = path; ERR_FAIL_COND_V(!FileAccess::exists(path), ERR_FILE_NOT_FOUND); @@ -387,25 +389,22 @@ Error OS_Windows::open_dynamic_library(const String &p_path, void *&p_library_ha if (p_data != nullptr && p_data->generate_temp_files) { // Copy the file to the same directory as the original with a prefix in the name. // This is so relative path to dependencies are satisfied. - String copy_path = path.get_base_dir().path_join("~" + path.get_file()); + load_path = path.get_base_dir().path_join("~" + path.get_file()); // If there's a left-over copy (possibly from a crash) then delete it first. - if (FileAccess::exists(copy_path)) { - DirAccess::remove_absolute(copy_path); + if (FileAccess::exists(load_path)) { + DirAccess::remove_absolute(load_path); } - Error copy_err = DirAccess::copy_absolute(path, copy_path); + Error copy_err = DirAccess::copy_absolute(path, load_path); if (copy_err) { ERR_PRINT("Error copying library: " + path); return ERR_CANT_CREATE; } - FileAccess::set_hidden_attribute(copy_path, true); + FileAccess::set_hidden_attribute(load_path, true); - // Save the copied path so it can be deleted later. - path = copy_path; - - Error pdb_err = WindowsUtils::copy_and_rename_pdb(path); + Error pdb_err = WindowsUtils::copy_and_rename_pdb(load_path); if (pdb_err != OK && pdb_err != ERR_SKIP) { WARN_PRINT(vformat("Failed to rename the PDB file. The original PDB file for '%s' will be loaded.", path)); } @@ -421,21 +420,21 @@ Error OS_Windows::open_dynamic_library(const String &p_path, void *&p_library_ha DLL_DIRECTORY_COOKIE cookie = nullptr; if (p_data != nullptr && p_data->also_set_library_path && has_dll_directory_api) { - cookie = add_dll_directory((LPCWSTR)(path.get_base_dir().utf16().get_data())); + cookie = add_dll_directory((LPCWSTR)(load_path.get_base_dir().utf16().get_data())); } - p_library_handle = (void *)LoadLibraryExW((LPCWSTR)(path.utf16().get_data()), nullptr, (p_data != nullptr && p_data->also_set_library_path && has_dll_directory_api) ? LOAD_LIBRARY_SEARCH_DEFAULT_DIRS : 0); + p_library_handle = (void *)LoadLibraryExW((LPCWSTR)(load_path.utf16().get_data()), nullptr, (p_data != nullptr && p_data->also_set_library_path && has_dll_directory_api) ? LOAD_LIBRARY_SEARCH_DEFAULT_DIRS : 0); if (!p_library_handle) { if (p_data != nullptr && p_data->generate_temp_files) { - DirAccess::remove_absolute(path); + DirAccess::remove_absolute(load_path); } #ifdef DEBUG_ENABLED DWORD err_code = GetLastError(); - HashSet<String> checekd_libs; + HashSet<String> checked_libs; HashSet<String> missing_libs; - debug_dynamic_library_check_dependencies(path, path, checekd_libs, missing_libs); + debug_dynamic_library_check_dependencies(load_path, load_path, checked_libs, missing_libs); if (!missing_libs.is_empty()) { String missing; for (const String &E : missing_libs) { @@ -464,7 +463,8 @@ Error OS_Windows::open_dynamic_library(const String &p_path, void *&p_library_ha } if (p_data != nullptr && p_data->generate_temp_files) { - temp_libraries[p_library_handle] = path; + // Save the copied path so it can be deleted later. + temp_libraries[p_library_handle] = load_path; } return OK; diff --git a/scene/2d/audio_stream_player_2d.cpp b/scene/2d/audio_stream_player_2d.cpp index 8e91dce425..89a0479de3 100644 --- a/scene/2d/audio_stream_player_2d.cpp +++ b/scene/2d/audio_stream_player_2d.cpp @@ -242,7 +242,7 @@ void AudioStreamPlayer2D::seek(float p_seconds) { void AudioStreamPlayer2D::stop() { setplay.set(-1); - internal->stop(); + internal->stop_basic(); } bool AudioStreamPlayer2D::is_playing() const { @@ -430,7 +430,7 @@ void AudioStreamPlayer2D::_bind_methods() { } AudioStreamPlayer2D::AudioStreamPlayer2D() { - internal = memnew(AudioStreamPlayerInternal(this, callable_mp(this, &AudioStreamPlayer2D::play), true)); + internal = memnew(AudioStreamPlayerInternal(this, callable_mp(this, &AudioStreamPlayer2D::play), callable_mp(this, &AudioStreamPlayer2D::stop), true)); cached_global_panning_strength = GLOBAL_GET("audio/general/2d_panning_strength"); set_hide_clip_children(true); } diff --git a/scene/2d/gpu_particles_2d.cpp b/scene/2d/gpu_particles_2d.cpp index 1d3f1ceada..bfbdb49f22 100644 --- a/scene/2d/gpu_particles_2d.cpp +++ b/scene/2d/gpu_particles_2d.cpp @@ -688,6 +688,7 @@ void GPUParticles2D::_notification(int p_what) { RS::get_singleton()->particles_set_speed_scale(particles, 0); } set_process_internal(true); + set_physics_process_internal(true); previous_position = get_global_position(); } break; @@ -711,15 +712,6 @@ void GPUParticles2D::_notification(int p_what) { } break; case NOTIFICATION_INTERNAL_PROCESS: { - const Vector3 velocity = Vector3((get_global_position() - previous_position).x, (get_global_position() - previous_position).y, 0.0) / - get_process_delta_time(); - - if (velocity != previous_velocity) { - RS::get_singleton()->particles_set_emitter_velocity(particles, velocity); - previous_velocity = velocity; - } - previous_position = get_global_position(); - if (one_shot) { time += get_process_delta_time(); if (time > emission_time) { @@ -739,6 +731,19 @@ void GPUParticles2D::_notification(int p_what) { } } } break; + + case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: { + // Update velocity in physics process, so that velocity calculations remain correct + // if the physics tick rate is lower than the rendered framerate (especially without physics interpolation). + const Vector3 velocity = Vector3((get_global_position() - previous_position).x, (get_global_position() - previous_position).y, 0.0) / + get_physics_process_delta_time(); + + if (velocity != previous_velocity) { + RS::get_singleton()->particles_set_emitter_velocity(particles, velocity); + previous_velocity = velocity; + } + previous_position = get_global_position(); + } break; } } diff --git a/scene/2d/navigation_link_2d.cpp b/scene/2d/navigation_link_2d.cpp index 04ba550888..111f5a7b78 100644 --- a/scene/2d/navigation_link_2d.cpp +++ b/scene/2d/navigation_link_2d.cpp @@ -41,6 +41,9 @@ void NavigationLink2D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_enabled", "enabled"), &NavigationLink2D::set_enabled); ClassDB::bind_method(D_METHOD("is_enabled"), &NavigationLink2D::is_enabled); + ClassDB::bind_method(D_METHOD("set_navigation_map", "navigation_map"), &NavigationLink2D::set_navigation_map); + ClassDB::bind_method(D_METHOD("get_navigation_map"), &NavigationLink2D::get_navigation_map); + ClassDB::bind_method(D_METHOD("set_bidirectional", "bidirectional"), &NavigationLink2D::set_bidirectional); ClassDB::bind_method(D_METHOD("is_bidirectional"), &NavigationLink2D::is_bidirectional); @@ -106,12 +109,7 @@ bool NavigationLink2D::_get(const StringName &p_name, Variant &r_ret) const { void NavigationLink2D::_notification(int p_what) { switch (p_what) { case NOTIFICATION_ENTER_TREE: { - if (enabled) { - NavigationServer2D::get_singleton()->link_set_map(link, get_world_2d()->get_navigation_map()); - } - current_global_transform = get_global_transform(); - NavigationServer2D::get_singleton()->link_set_start_position(link, current_global_transform.xform(start_position)); - NavigationServer2D::get_singleton()->link_set_end_position(link, current_global_transform.xform(end_position)); + _link_enter_navigation_map(); } break; case NOTIFICATION_TRANSFORM_CHANGED: { @@ -120,36 +118,15 @@ void NavigationLink2D::_notification(int p_what) { case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: { set_physics_process_internal(false); - if (is_inside_tree()) { - Transform2D new_global_transform = get_global_transform(); - if (current_global_transform != new_global_transform) { - current_global_transform = new_global_transform; - NavigationServer2D::get_singleton()->link_set_start_position(link, current_global_transform.xform(start_position)); - NavigationServer2D::get_singleton()->link_set_end_position(link, current_global_transform.xform(end_position)); - queue_redraw(); - } - } + _link_update_transform(); } break; case NOTIFICATION_EXIT_TREE: { - NavigationServer2D::get_singleton()->link_set_map(link, RID()); + _link_exit_navigation_map(); } break; case NOTIFICATION_DRAW: { #ifdef DEBUG_ENABLED - if (is_inside_tree() && (Engine::get_singleton()->is_editor_hint() || NavigationServer2D::get_singleton()->get_debug_enabled())) { - Color color; - if (enabled) { - color = NavigationServer2D::get_singleton()->get_debug_navigation_link_connection_color(); - } else { - color = NavigationServer2D::get_singleton()->get_debug_navigation_link_connection_disabled_color(); - } - - real_t radius = NavigationServer2D::get_singleton()->map_get_link_connection_radius(get_world_2d()->get_navigation_map()); - - draw_line(get_start_position(), get_end_position(), color); - draw_arc(get_start_position(), radius, 0, Math_TAU, 10, color); - draw_arc(get_end_position(), radius, 0, Math_TAU, 10, color); - } + _update_debug_mesh(); #endif // DEBUG_ENABLED } break; } @@ -188,15 +165,32 @@ void NavigationLink2D::set_enabled(bool p_enabled) { enabled = p_enabled; - NavigationServer3D::get_singleton()->link_set_enabled(link, enabled); + NavigationServer2D::get_singleton()->link_set_enabled(link, enabled); #ifdef DEBUG_ENABLED - if (Engine::get_singleton()->is_editor_hint() || NavigationServer2D::get_singleton()->get_debug_enabled()) { - queue_redraw(); - } + queue_redraw(); #endif // DEBUG_ENABLED } +void NavigationLink2D::set_navigation_map(RID p_navigation_map) { + if (map_override == p_navigation_map) { + return; + } + + map_override = p_navigation_map; + + NavigationServer2D::get_singleton()->link_set_map(link, map_override); +} + +RID NavigationLink2D::get_navigation_map() const { + if (map_override.is_valid()) { + return map_override; + } else if (is_inside_tree()) { + return get_world_2d()->get_navigation_map(); + } + return RID(); +} + void NavigationLink2D::set_bidirectional(bool p_bidirectional) { if (bidirectional == p_bidirectional) { return; @@ -255,9 +249,7 @@ void NavigationLink2D::set_start_position(Vector2 p_position) { update_configuration_warnings(); #ifdef DEBUG_ENABLED - if (Engine::get_singleton()->is_editor_hint() || NavigationServer2D::get_singleton()->get_debug_enabled()) { - queue_redraw(); - } + queue_redraw(); #endif // DEBUG_ENABLED } @@ -277,9 +269,7 @@ void NavigationLink2D::set_end_position(Vector2 p_position) { update_configuration_warnings(); #ifdef DEBUG_ENABLED - if (Engine::get_singleton()->is_editor_hint() || NavigationServer2D::get_singleton()->get_debug_enabled()) { - queue_redraw(); - } + queue_redraw(); #endif // DEBUG_ENABLED } @@ -347,6 +337,69 @@ PackedStringArray NavigationLink2D::get_configuration_warnings() const { return warnings; } +void NavigationLink2D::_link_enter_navigation_map() { + if (!is_inside_tree()) { + return; + } + + if (map_override.is_valid()) { + NavigationServer2D::get_singleton()->link_set_map(link, map_override); + } else { + NavigationServer2D::get_singleton()->link_set_map(link, get_world_2d()->get_navigation_map()); + } + + current_global_transform = get_global_transform(); + + NavigationServer2D::get_singleton()->link_set_start_position(link, current_global_transform.xform(start_position)); + NavigationServer2D::get_singleton()->link_set_end_position(link, current_global_transform.xform(end_position)); + NavigationServer2D::get_singleton()->link_set_enabled(link, enabled); + + queue_redraw(); +} + +void NavigationLink2D::_link_exit_navigation_map() { + NavigationServer2D::get_singleton()->link_set_map(link, RID()); +} + +void NavigationLink2D::_link_update_transform() { + if (!is_inside_tree()) { + return; + } + + Transform2D new_global_transform = get_global_transform(); + if (current_global_transform != new_global_transform) { + current_global_transform = new_global_transform; + NavigationServer2D::get_singleton()->link_set_start_position(link, current_global_transform.xform(start_position)); + NavigationServer2D::get_singleton()->link_set_end_position(link, current_global_transform.xform(end_position)); + queue_redraw(); + } +} + +#ifdef DEBUG_ENABLED +void NavigationLink2D::_update_debug_mesh() { + if (!is_inside_tree()) { + return; + } + + if (!Engine::get_singleton()->is_editor_hint() && !NavigationServer2D::get_singleton()->get_debug_enabled()) { + return; + } + + Color color; + if (enabled) { + color = NavigationServer2D::get_singleton()->get_debug_navigation_link_connection_color(); + } else { + color = NavigationServer2D::get_singleton()->get_debug_navigation_link_connection_disabled_color(); + } + + real_t radius = NavigationServer2D::get_singleton()->map_get_link_connection_radius(get_world_2d()->get_navigation_map()); + + draw_line(get_start_position(), get_end_position(), color); + draw_arc(get_start_position(), radius, 0, Math_TAU, 10, color); + draw_arc(get_end_position(), radius, 0, Math_TAU, 10, color); +} +#endif // DEBUG_ENABLED + NavigationLink2D::NavigationLink2D() { link = NavigationServer2D::get_singleton()->link_create(); diff --git a/scene/2d/navigation_link_2d.h b/scene/2d/navigation_link_2d.h index 2929691c04..c724096607 100644 --- a/scene/2d/navigation_link_2d.h +++ b/scene/2d/navigation_link_2d.h @@ -38,6 +38,7 @@ class NavigationLink2D : public Node2D { bool enabled = true; RID link; + RID map_override; bool bidirectional = true; uint32_t navigation_layers = 1; Vector2 end_position; @@ -47,6 +48,10 @@ class NavigationLink2D : public Node2D { Transform2D current_global_transform; +#ifdef DEBUG_ENABLED + void _update_debug_mesh(); +#endif // DEBUG_ENABLED + protected: static void _bind_methods(); void _notification(int p_what); @@ -66,6 +71,9 @@ public: void set_enabled(bool p_enabled); bool is_enabled() const { return enabled; } + void set_navigation_map(RID p_navigation_map); + RID get_navigation_map() const; + void set_bidirectional(bool p_bidirectional); bool is_bidirectional() const { return bidirectional; } @@ -97,6 +105,11 @@ public: NavigationLink2D(); ~NavigationLink2D(); + +private: + void _link_enter_navigation_map(); + void _link_exit_navigation_map(); + void _link_update_transform(); }; #endif // NAVIGATION_LINK_2D_H diff --git a/scene/2d/physics/shape_cast_2d.cpp b/scene/2d/physics/shape_cast_2d.cpp index 00be84b622..b92978bcad 100644 --- a/scene/2d/physics/shape_cast_2d.cpp +++ b/scene/2d/physics/shape_cast_2d.cpp @@ -382,7 +382,7 @@ bool ShapeCast2D::is_collide_with_bodies_enabled() const { return collide_with_bodies; } -Array ShapeCast2D::_get_collision_result() const { +Array ShapeCast2D::get_collision_result() const { Array ret; for (int i = 0; i < result.size(); ++i) { @@ -464,7 +464,7 @@ void ShapeCast2D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_collide_with_bodies", "enable"), &ShapeCast2D::set_collide_with_bodies); ClassDB::bind_method(D_METHOD("is_collide_with_bodies_enabled"), &ShapeCast2D::is_collide_with_bodies_enabled); - ClassDB::bind_method(D_METHOD("_get_collision_result"), &ShapeCast2D::_get_collision_result); + ClassDB::bind_method(D_METHOD("get_collision_result"), &ShapeCast2D::get_collision_result); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "enabled"), "set_enabled", "is_enabled"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shape", PROPERTY_HINT_RESOURCE_TYPE, "Shape2D"), "set_shape", "get_shape"); @@ -473,7 +473,7 @@ void ShapeCast2D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "margin", PROPERTY_HINT_RANGE, "0,100,0.01,suffix:px"), "set_margin", "get_margin"); ADD_PROPERTY(PropertyInfo(Variant::INT, "max_results"), "set_max_results", "get_max_results"); ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_collision_mask", "get_collision_mask"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "collision_result", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "", "_get_collision_result"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "collision_result", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "", "get_collision_result"); ADD_GROUP("Collide With", "collide_with"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "collide_with_areas", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collide_with_areas", "is_collide_with_areas_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "collide_with_bodies", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collide_with_bodies", "is_collide_with_bodies_enabled"); diff --git a/scene/2d/physics/shape_cast_2d.h b/scene/2d/physics/shape_cast_2d.h index 6b8fd5b798..d866dd4edb 100644 --- a/scene/2d/physics/shape_cast_2d.h +++ b/scene/2d/physics/shape_cast_2d.h @@ -60,7 +60,6 @@ class ShapeCast2D : public Node2D { real_t collision_safe_fraction = 1.0; real_t collision_unsafe_fraction = 1.0; - Array _get_collision_result() const; void _shape_changed(); protected: @@ -102,6 +101,7 @@ public: void force_shapecast_update(); bool is_colliding() const; + Array get_collision_result() const; int get_collision_count() const; Object *get_collider(int p_idx) const; RID get_collider_rid(int p_idx) const; diff --git a/scene/2d/polygon_2d.cpp b/scene/2d/polygon_2d.cpp index 4266060466..42f7a75c0a 100644 --- a/scene/2d/polygon_2d.cpp +++ b/scene/2d/polygon_2d.cpp @@ -682,7 +682,7 @@ void Polygon2D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR2_ARRAY, "uv"), "set_uv", "get_uv"); ADD_PROPERTY(PropertyInfo(Variant::PACKED_COLOR_ARRAY, "vertex_colors"), "set_vertex_colors", "get_vertex_colors"); ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "polygons"), "set_polygons", "get_polygons"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "bones", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "_set_bones", "_get_bones"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "bones", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL), "_set_bones", "_get_bones"); ADD_PROPERTY(PropertyInfo(Variant::INT, "internal_vertex_count", PROPERTY_HINT_RANGE, "0,1000"), "set_internal_vertex_count", "get_internal_vertex_count"); } diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp index c12b95314e..b10f2097da 100644 --- a/scene/2d/tile_map.cpp +++ b/scene/2d/tile_map.cpp @@ -532,6 +532,18 @@ TileData *TileMap::get_cell_tile_data(int p_layer, const Vector2i &p_coords, boo } } +bool TileMap::is_cell_flipped_h(int p_layer, const Vector2i &p_coords, bool p_use_proxies) const { + return get_cell_alternative_tile(p_layer, p_coords, p_use_proxies) & TileSetAtlasSource::TRANSFORM_FLIP_H; +} + +bool TileMap::is_cell_flipped_v(int p_layer, const Vector2i &p_coords, bool p_use_proxies) const { + return get_cell_alternative_tile(p_layer, p_coords, p_use_proxies) & TileSetAtlasSource::TRANSFORM_FLIP_V; +} + +bool TileMap::is_cell_transposed(int p_layer, const Vector2i &p_coords, bool p_use_proxies) const { + return get_cell_alternative_tile(p_layer, p_coords, p_use_proxies) & TileSetAtlasSource::TRANSFORM_TRANSPOSE; +} + Ref<TileMapPattern> TileMap::get_pattern(int p_layer, TypedArray<Vector2i> p_coords_array) { TILEMAP_CALL_FOR_LAYER_V(p_layer, Ref<TileMapPattern>(), get_pattern, p_coords_array); } @@ -926,6 +938,10 @@ void TileMap::_bind_methods() { ClassDB::bind_method(D_METHOD("get_cell_alternative_tile", "layer", "coords", "use_proxies"), &TileMap::get_cell_alternative_tile, DEFVAL(false)); ClassDB::bind_method(D_METHOD("get_cell_tile_data", "layer", "coords", "use_proxies"), &TileMap::get_cell_tile_data, DEFVAL(false)); + ClassDB::bind_method(D_METHOD("is_cell_flipped_h", "layer", "coords", "use_proxies"), &TileMap::is_cell_flipped_h, DEFVAL(false)); + ClassDB::bind_method(D_METHOD("is_cell_flipped_v", "layer", "coords", "use_proxies"), &TileMap::is_cell_flipped_v, DEFVAL(false)); + ClassDB::bind_method(D_METHOD("is_cell_transposed", "layer", "coords", "use_proxies"), &TileMap::is_cell_transposed, DEFVAL(false)); + ClassDB::bind_method(D_METHOD("get_coords_for_body_rid", "body"), &TileMap::get_coords_for_body_rid); ClassDB::bind_method(D_METHOD("get_layer_for_body_rid", "body"), &TileMap::get_layer_for_body_rid); diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h index 690102f730..142dc1193f 100644 --- a/scene/2d/tile_map.h +++ b/scene/2d/tile_map.h @@ -167,6 +167,10 @@ public: // Helper method to make accessing the data easier. TileData *get_cell_tile_data(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const; + bool is_cell_flipped_h(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const; + bool is_cell_flipped_v(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const; + bool is_cell_transposed(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const; + // Patterns. Ref<TileMapPattern> get_pattern(int p_layer, TypedArray<Vector2i> p_coords_array); Vector2i map_pattern(const Vector2i &p_position_in_tilemap, const Vector2i &p_coords_in_pattern, Ref<TileMapPattern> p_pattern); diff --git a/scene/2d/tile_map_layer.cpp b/scene/2d/tile_map_layer.cpp index 437790bb99..7b125a6895 100644 --- a/scene/2d/tile_map_layer.cpp +++ b/scene/2d/tile_map_layer.cpp @@ -1773,6 +1773,10 @@ void TileMapLayer::_bind_methods() { ClassDB::bind_method(D_METHOD("get_cell_alternative_tile", "coords"), &TileMapLayer::get_cell_alternative_tile); ClassDB::bind_method(D_METHOD("get_cell_tile_data", "coords"), &TileMapLayer::get_cell_tile_data); + ClassDB::bind_method(D_METHOD("is_cell_flipped_h", "coords"), &TileMapLayer::is_cell_flipped_h); + ClassDB::bind_method(D_METHOD("is_cell_flipped_v", "coords"), &TileMapLayer::is_cell_flipped_v); + ClassDB::bind_method(D_METHOD("is_cell_transposed", "coords"), &TileMapLayer::is_cell_transposed); + ClassDB::bind_method(D_METHOD("get_used_cells"), &TileMapLayer::get_used_cells); ClassDB::bind_method(D_METHOD("get_used_cells_by_id", "source_id", "atlas_coords", "alternative_tile"), &TileMapLayer::get_used_cells_by_id, DEFVAL(TileSet::INVALID_SOURCE), DEFVAL(TileSetSource::INVALID_ATLAS_COORDS), DEFVAL(TileSetSource::INVALID_TILE_ALTERNATIVE)); ClassDB::bind_method(D_METHOD("get_used_rect"), &TileMapLayer::get_used_rect); @@ -2490,6 +2494,18 @@ Rect2i TileMapLayer::get_used_rect() const { return used_rect_cache; } +bool TileMapLayer::is_cell_flipped_h(const Vector2i &p_coords) const { + return get_cell_alternative_tile(p_coords) & TileSetAtlasSource::TRANSFORM_FLIP_H; +} + +bool TileMapLayer::is_cell_flipped_v(const Vector2i &p_coords) const { + return get_cell_alternative_tile(p_coords) & TileSetAtlasSource::TRANSFORM_FLIP_V; +} + +bool TileMapLayer::is_cell_transposed(const Vector2i &p_coords) const { + return get_cell_alternative_tile(p_coords) & TileSetAtlasSource::TRANSFORM_TRANSPOSE; +} + Ref<TileMapPattern> TileMapLayer::get_pattern(TypedArray<Vector2i> p_coords_array) { ERR_FAIL_COND_V(tile_set.is_null(), nullptr); diff --git a/scene/2d/tile_map_layer.h b/scene/2d/tile_map_layer.h index c71f13d7be..1a6d182094 100644 --- a/scene/2d/tile_map_layer.h +++ b/scene/2d/tile_map_layer.h @@ -438,6 +438,10 @@ public: TypedArray<Vector2i> get_used_cells_by_id(int p_source_id = TileSet::INVALID_SOURCE, const Vector2i &p_atlas_coords = TileSetSource::INVALID_ATLAS_COORDS, int p_alternative_tile = TileSetSource::INVALID_TILE_ALTERNATIVE) const; Rect2i get_used_rect() const; + bool is_cell_flipped_h(const Vector2i &p_coords) const; + bool is_cell_flipped_v(const Vector2i &p_coords) const; + bool is_cell_transposed(const Vector2i &p_coords) const; + // Patterns. Ref<TileMapPattern> get_pattern(TypedArray<Vector2i> p_coords_array); void set_pattern(const Vector2i &p_position, const Ref<TileMapPattern> p_pattern); diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp index 6888462876..4d3f494ccf 100644 --- a/scene/3d/audio_stream_player_3d.cpp +++ b/scene/3d/audio_stream_player_3d.cpp @@ -562,7 +562,7 @@ void AudioStreamPlayer3D::seek(float p_seconds) { void AudioStreamPlayer3D::stop() { setplay.set(-1); - internal->stop(); + internal->stop_basic(); } bool AudioStreamPlayer3D::is_playing() const { @@ -862,7 +862,7 @@ void AudioStreamPlayer3D::_bind_methods() { } AudioStreamPlayer3D::AudioStreamPlayer3D() { - internal = memnew(AudioStreamPlayerInternal(this, callable_mp(this, &AudioStreamPlayer3D::play), true)); + internal = memnew(AudioStreamPlayerInternal(this, callable_mp(this, &AudioStreamPlayer3D::play), callable_mp(this, &AudioStreamPlayer3D::stop), true)); velocity_tracker.instantiate(); set_disable_scale(true); cached_global_panning_strength = GLOBAL_GET("audio/general/3d_panning_strength"); diff --git a/scene/3d/camera_3d.cpp b/scene/3d/camera_3d.cpp index 8515aacba7..c70fa3ca2e 100644 --- a/scene/3d/camera_3d.cpp +++ b/scene/3d/camera_3d.cpp @@ -31,7 +31,9 @@ #include "camera_3d.h" #include "core/math/projection.h" +#include "core/math/transform_interpolator.h" #include "scene/main/viewport.h" +#include "servers/rendering/rendering_server_constants.h" void Camera3D::_update_audio_listener_state() { } @@ -88,7 +90,16 @@ void Camera3D::_update_camera() { return; } - RenderingServer::get_singleton()->camera_set_transform(camera, get_camera_transform()); + if (!is_physics_interpolated_and_enabled()) { + RenderingServer::get_singleton()->camera_set_transform(camera, get_camera_transform()); + } else { + // Ideally we shouldn't be moving a physics interpolated camera within a frame, + // because it will break smooth interpolation, but it may occur on e.g. level load. + if (!Engine::get_singleton()->is_in_physics_frame() && camera.is_valid()) { + _physics_interpolation_ensure_transform_calculated(true); + RenderingServer::get_singleton()->camera_set_transform(camera, _interpolation_data.camera_xform_interpolated); + } + } if (is_part_of_edited_scene() || !is_current()) { return; @@ -97,6 +108,64 @@ void Camera3D::_update_camera() { get_viewport()->_camera_3d_transform_changed_notify(); } +void Camera3D::_physics_interpolated_changed() { + _update_process_mode(); +} + +void Camera3D::_physics_interpolation_ensure_data_flipped() { + // The curr -> previous update can either occur + // on the INTERNAL_PHYSICS_PROCESS OR + // on NOTIFICATION_TRANSFORM_CHANGED, + // if NOTIFICATION_TRANSFORM_CHANGED takes place + // earlier than INTERNAL_PHYSICS_PROCESS on a tick. + // This is to ensure that the data keeps flowing, but the new data + // doesn't overwrite before prev has been set. + + // Keep the data flowing. + uint64_t tick = Engine::get_singleton()->get_physics_frames(); + if (_interpolation_data.last_update_physics_tick != tick) { + _interpolation_data.xform_prev = _interpolation_data.xform_curr; + _interpolation_data.last_update_physics_tick = tick; + physics_interpolation_flip_data(); + } +} + +void Camera3D::_physics_interpolation_ensure_transform_calculated(bool p_force) const { + DEV_CHECK_ONCE(!Engine::get_singleton()->is_in_physics_frame()); + + InterpolationData &id = _interpolation_data; + uint64_t frame = Engine::get_singleton()->get_frames_drawn(); + + if (id.last_update_frame != frame || p_force) { + id.last_update_frame = frame; + + TransformInterpolator::interpolate_transform_3d(id.xform_prev, id.xform_curr, id.xform_interpolated, Engine::get_singleton()->get_physics_interpolation_fraction()); + + Transform3D &tr = id.camera_xform_interpolated; + tr = _get_adjusted_camera_transform(id.xform_interpolated); + } +} + +void Camera3D::set_desired_process_modes(bool p_process_internal, bool p_physics_process_internal) { + _desired_process_internal = p_process_internal; + _desired_physics_process_internal = p_physics_process_internal; + _update_process_mode(); +} + +void Camera3D::_update_process_mode() { + bool process = _desired_process_internal; + bool physics_process = _desired_physics_process_internal; + + if (is_physics_interpolated_and_enabled()) { + if (is_current()) { + process = true; + physics_process = true; + } + } + set_process_internal(process); + set_physics_process_internal(physics_process); +} + void Camera3D::_notification(int p_what) { switch (p_what) { case NOTIFICATION_ENTER_WORLD: { @@ -118,11 +187,58 @@ void Camera3D::_notification(int p_what) { #endif } break; + case NOTIFICATION_INTERNAL_PROCESS: { + if (is_physics_interpolated_and_enabled() && camera.is_valid()) { + _physics_interpolation_ensure_transform_calculated(); + +#ifdef RENDERING_SERVER_DEBUG_PHYSICS_INTERPOLATION + print_line("\t\tinterpolated Camera3D: " + rtos(_interpolation_data.xform_interpolated.origin.x) + "\t( prev " + rtos(_interpolation_data.xform_prev.origin.x) + ", curr " + rtos(_interpolation_data.xform_curr.origin.x) + " ) on tick " + itos(Engine::get_singleton()->get_physics_frames())); +#endif + + RenderingServer::get_singleton()->camera_set_transform(camera, _interpolation_data.camera_xform_interpolated); + } + } break; + + case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: { + if (is_physics_interpolated_and_enabled()) { + _physics_interpolation_ensure_data_flipped(); + _interpolation_data.xform_curr = get_global_transform(); + } + } break; + case NOTIFICATION_TRANSFORM_CHANGED: { + if (is_physics_interpolated_and_enabled()) { + _physics_interpolation_ensure_data_flipped(); + _interpolation_data.xform_curr = get_global_transform(); +#if defined(DEBUG_ENABLED) && defined(TOOLS_ENABLED) + if (!Engine::get_singleton()->is_in_physics_frame()) { + PHYSICS_INTERPOLATION_NODE_WARNING(get_instance_id(), "Interpolated Camera3D triggered from outside physics process"); + } +#endif + } _request_camera_update(); if (doppler_tracking != DOPPLER_TRACKING_DISABLED) { velocity_tracker->update_position(get_global_transform().origin); } + // Allow auto-reset when first adding to the tree, as a convenience. + if (_is_physics_interpolation_reset_requested() && is_inside_tree()) { + _notification(NOTIFICATION_RESET_PHYSICS_INTERPOLATION); + _set_physics_interpolation_reset_requested(false); + } + } break; + + case NOTIFICATION_RESET_PHYSICS_INTERPOLATION: { + if (is_inside_tree()) { + _interpolation_data.xform_curr = get_global_transform(); + _interpolation_data.xform_prev = _interpolation_data.xform_curr; + } + } break; + + case NOTIFICATION_PAUSED: { + if (is_physics_interpolated_and_enabled() && is_inside_tree() && is_visible_in_tree()) { + _physics_interpolation_ensure_transform_calculated(true); + RenderingServer::get_singleton()->camera_set_transform(camera, _interpolation_data.camera_xform_interpolated); + } } break; case NOTIFICATION_EXIT_WORLD: { @@ -151,23 +267,34 @@ void Camera3D::_notification(int p_what) { if (viewport) { viewport->find_world_3d()->_register_camera(this); } + _update_process_mode(); } break; case NOTIFICATION_LOST_CURRENT: { if (viewport) { viewport->find_world_3d()->_remove_camera(this); } + _update_process_mode(); } break; } } -Transform3D Camera3D::get_camera_transform() const { - Transform3D tr = get_global_transform().orthonormalized(); +Transform3D Camera3D::_get_adjusted_camera_transform(const Transform3D &p_xform) const { + Transform3D tr = p_xform.orthonormalized(); tr.origin += tr.basis.get_column(1) * v_offset; tr.origin += tr.basis.get_column(0) * h_offset; return tr; } +Transform3D Camera3D::get_camera_transform() const { + if (is_physics_interpolated_and_enabled() && !Engine::get_singleton()->is_in_physics_frame()) { + _physics_interpolation_ensure_transform_calculated(); + return _interpolation_data.camera_xform_interpolated; + } + + return _get_adjusted_camera_transform(get_global_transform()); +} + Projection Camera3D::_get_camera_projection(real_t p_near) const { Size2 viewport_size = get_viewport()->get_visible_rect().size; Projection cm; @@ -379,6 +506,11 @@ Point2 Camera3D::unproject_position(const Vector3 &p_pos) const { Plane p(get_camera_transform().xform_inv(p_pos), 1.0); p = cm.xform4(p); + + // Prevent divide by zero. + // TODO: Investigate, this was causing NaNs. + ERR_FAIL_COND_V(p.d == 0, Point2()); + p.normal /= p.d; Point2 res; diff --git a/scene/3d/camera_3d.h b/scene/3d/camera_3d.h index dbf2ffc1dd..3e9f940ad6 100644 --- a/scene/3d/camera_3d.h +++ b/scene/3d/camera_3d.h @@ -98,7 +98,39 @@ private: RID pyramid_shape; Vector<Vector3> pyramid_shape_points; + /////////////////////////////////////////////////////// + // INTERPOLATION FUNCTIONS + void _physics_interpolation_ensure_transform_calculated(bool p_force = false) const; + void _physics_interpolation_ensure_data_flipped(); + + // These can be set by derived Camera3Ds, if they wish to do processing + // (while still allowing physics interpolation to function). + bool _desired_process_internal = false; + bool _desired_physics_process_internal = false; + + mutable struct InterpolationData { + Transform3D xform_curr; + Transform3D xform_prev; + Transform3D xform_interpolated; + Transform3D camera_xform_interpolated; // After modification according to camera type. + uint32_t last_update_physics_tick = 0; + uint32_t last_update_frame = UINT32_MAX; + } _interpolation_data; + + void _update_process_mode(); + protected: + // Use from derived classes to set process modes instead of setting directly. + // This is because physics interpolation may need to request process modes additionally. + void set_desired_process_modes(bool p_process_internal, bool p_physics_process_internal); + + // Opportunity for derived classes to interpolate extra attributes. + virtual void physics_interpolation_flip_data() {} + + virtual void _physics_interpolated_changed() override; + virtual Transform3D _get_adjusted_camera_transform(const Transform3D &p_xform) const; + /////////////////////////////////////////////////////// + void _update_camera(); virtual void _request_camera_update(); void _update_camera_mode(); diff --git a/scene/3d/gpu_particles_3d.cpp b/scene/3d/gpu_particles_3d.cpp index 3771b385e5..2cef607d29 100644 --- a/scene/3d/gpu_particles_3d.cpp +++ b/scene/3d/gpu_particles_3d.cpp @@ -459,14 +459,6 @@ void GPUParticles3D::_notification(int p_what) { // Use internal process when emitting and one_shot is on so that when // the shot ends the editor can properly update. case NOTIFICATION_INTERNAL_PROCESS: { - const Vector3 velocity = (get_global_position() - previous_position) / get_process_delta_time(); - - if (velocity != previous_velocity) { - RS::get_singleton()->particles_set_emitter_velocity(particles, velocity); - previous_velocity = velocity; - } - previous_position = get_global_position(); - if (one_shot) { time += get_process_delta_time(); if (time > emission_time) { @@ -487,8 +479,21 @@ void GPUParticles3D::_notification(int p_what) { } } break; + case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: { + // Update velocity in physics process, so that velocity calculations remain correct + // if the physics tick rate is lower than the rendered framerate (especially without physics interpolation). + const Vector3 velocity = (get_global_position() - previous_position) / get_physics_process_delta_time(); + + if (velocity != previous_velocity) { + RS::get_singleton()->particles_set_emitter_velocity(particles, velocity); + previous_velocity = velocity; + } + previous_position = get_global_position(); + } break; + case NOTIFICATION_ENTER_TREE: { set_process_internal(false); + set_physics_process_internal(false); if (sub_emitter != NodePath()) { _attach_sub_emitter(); } @@ -499,6 +504,7 @@ void GPUParticles3D::_notification(int p_what) { } previous_position = get_global_transform().origin; set_process_internal(true); + set_physics_process_internal(true); } break; case NOTIFICATION_EXIT_TREE: { diff --git a/scene/3d/lightmap_gi.cpp b/scene/3d/lightmap_gi.cpp index 038a78609f..3f8b0dfb8e 100644 --- a/scene/3d/lightmap_gi.cpp +++ b/scene/3d/lightmap_gi.cpp @@ -709,7 +709,7 @@ void LightmapGI::_gen_new_positions_from_octree(const GenProbesOctree *p_cell, f const Vector3 *pp = probe_positions.ptr(); bool exists = false; for (int j = 0; j < ppcount; j++) { - if (pp[j].is_equal_approx(real_pos)) { + if (pp[j].distance_to(real_pos) < (p_cell_size * 0.5f)) { exists = true; break; } @@ -1072,6 +1072,7 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa if (env.is_valid()) { environment_image = RS::get_singleton()->environment_bake_panorama(env->get_rid(), true, Size2i(128, 64)); + environment_transform = Basis::from_euler(env->get_sky_rotation()).inverse(); } } } break; diff --git a/scene/3d/navigation_link_3d.cpp b/scene/3d/navigation_link_3d.cpp index dc776ebea2..bebba9a6c0 100644 --- a/scene/3d/navigation_link_3d.cpp +++ b/scene/3d/navigation_link_3d.cpp @@ -152,6 +152,9 @@ void NavigationLink3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_enabled", "enabled"), &NavigationLink3D::set_enabled); ClassDB::bind_method(D_METHOD("is_enabled"), &NavigationLink3D::is_enabled); + ClassDB::bind_method(D_METHOD("set_navigation_map", "navigation_map"), &NavigationLink3D::set_navigation_map); + ClassDB::bind_method(D_METHOD("get_navigation_map"), &NavigationLink3D::get_navigation_map); + ClassDB::bind_method(D_METHOD("set_bidirectional", "bidirectional"), &NavigationLink3D::set_bidirectional); ClassDB::bind_method(D_METHOD("is_bidirectional"), &NavigationLink3D::is_bidirectional); @@ -217,16 +220,7 @@ bool NavigationLink3D::_get(const StringName &p_name, Variant &r_ret) const { void NavigationLink3D::_notification(int p_what) { switch (p_what) { case NOTIFICATION_ENTER_TREE: { - if (enabled) { - NavigationServer3D::get_singleton()->link_set_map(link, get_world_3d()->get_navigation_map()); - } - current_global_transform = get_global_transform(); - NavigationServer3D::get_singleton()->link_set_start_position(link, current_global_transform.xform(start_position)); - NavigationServer3D::get_singleton()->link_set_end_position(link, current_global_transform.xform(end_position)); - -#ifdef DEBUG_ENABLED - _update_debug_mesh(); -#endif // DEBUG_ENABLED + _link_enter_navigation_map(); } break; case NOTIFICATION_TRANSFORM_CHANGED: { @@ -235,30 +229,11 @@ void NavigationLink3D::_notification(int p_what) { case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: { set_physics_process_internal(false); - if (is_inside_tree()) { - Transform3D new_global_transform = get_global_transform(); - if (current_global_transform != new_global_transform) { - current_global_transform = new_global_transform; - NavigationServer3D::get_singleton()->link_set_start_position(link, current_global_transform.xform(start_position)); - NavigationServer3D::get_singleton()->link_set_end_position(link, current_global_transform.xform(end_position)); -#ifdef DEBUG_ENABLED - if (debug_instance.is_valid()) { - RS::get_singleton()->instance_set_transform(debug_instance, current_global_transform); - } -#endif // DEBUG_ENABLED - } - } + _link_update_transform(); } break; case NOTIFICATION_EXIT_TREE: { - NavigationServer3D::get_singleton()->link_set_map(link, RID()); - -#ifdef DEBUG_ENABLED - if (debug_instance.is_valid()) { - RS::get_singleton()->instance_set_scenario(debug_instance, RID()); - RS::get_singleton()->instance_set_visible(debug_instance, false); - } -#endif // DEBUG_ENABLED + _link_exit_navigation_map(); } break; } } @@ -320,6 +295,25 @@ void NavigationLink3D::set_enabled(bool p_enabled) { update_gizmos(); } +void NavigationLink3D::set_navigation_map(RID p_navigation_map) { + if (map_override == p_navigation_map) { + return; + } + + map_override = p_navigation_map; + + NavigationServer3D::get_singleton()->link_set_map(link, map_override); +} + +RID NavigationLink3D::get_navigation_map() const { + if (map_override.is_valid()) { + return map_override; + } else if (is_inside_tree()) { + return get_world_3d()->get_navigation_map(); + } + return RID(); +} + void NavigationLink3D::set_bidirectional(bool p_bidirectional) { if (bidirectional == p_bidirectional) { return; @@ -467,3 +461,53 @@ PackedStringArray NavigationLink3D::get_configuration_warnings() const { return warnings; } + +void NavigationLink3D::_link_enter_navigation_map() { + if (!is_inside_tree()) { + return; + } + + if (map_override.is_valid()) { + NavigationServer3D::get_singleton()->link_set_map(link, map_override); + } else { + NavigationServer3D::get_singleton()->link_set_map(link, get_world_3d()->get_navigation_map()); + } + + current_global_transform = get_global_transform(); + NavigationServer3D::get_singleton()->link_set_start_position(link, current_global_transform.xform(start_position)); + NavigationServer3D::get_singleton()->link_set_end_position(link, current_global_transform.xform(end_position)); + NavigationServer3D::get_singleton()->link_set_enabled(link, enabled); + +#ifdef DEBUG_ENABLED + if (NavigationServer3D::get_singleton()->get_debug_navigation_enabled()) { + _update_debug_mesh(); + } +#endif // DEBUG_ENABLED +} + +void NavigationLink3D::_link_exit_navigation_map() { + NavigationServer3D::get_singleton()->link_set_map(link, RID()); +#ifdef DEBUG_ENABLED + if (debug_instance.is_valid()) { + RS::get_singleton()->instance_set_visible(debug_instance, false); + } +#endif // DEBUG_ENABLED +} + +void NavigationLink3D::_link_update_transform() { + if (!is_inside_tree()) { + return; + } + + Transform3D new_global_transform = get_global_transform(); + if (current_global_transform != new_global_transform) { + current_global_transform = new_global_transform; + NavigationServer3D::get_singleton()->link_set_start_position(link, current_global_transform.xform(start_position)); + NavigationServer3D::get_singleton()->link_set_end_position(link, current_global_transform.xform(end_position)); +#ifdef DEBUG_ENABLED + if (NavigationServer3D::get_singleton()->get_debug_navigation_enabled()) { + _update_debug_mesh(); + } +#endif // DEBUG_ENABLED + } +} diff --git a/scene/3d/navigation_link_3d.h b/scene/3d/navigation_link_3d.h index 1867082811..e894761f40 100644 --- a/scene/3d/navigation_link_3d.h +++ b/scene/3d/navigation_link_3d.h @@ -38,6 +38,7 @@ class NavigationLink3D : public Node3D { bool enabled = true; RID link; + RID map_override; bool bidirectional = true; uint32_t navigation_layers = 1; Vector3 end_position; @@ -72,6 +73,9 @@ public: void set_enabled(bool p_enabled); bool is_enabled() const { return enabled; } + void set_navigation_map(RID p_navigation_map); + RID get_navigation_map() const; + void set_bidirectional(bool p_bidirectional); bool is_bidirectional() const { return bidirectional; } @@ -100,6 +104,11 @@ public: real_t get_travel_cost() const { return travel_cost; } PackedStringArray get_configuration_warnings() const override; + +private: + void _link_enter_navigation_map(); + void _link_exit_navigation_map(); + void _link_update_transform(); }; #endif // NAVIGATION_LINK_3D_H diff --git a/scene/3d/node_3d.cpp b/scene/3d/node_3d.cpp index 2e08afb30d..86ce8a881a 100644 --- a/scene/3d/node_3d.cpp +++ b/scene/3d/node_3d.cpp @@ -30,6 +30,7 @@ #include "node_3d.h" +#include "core/math/transform_interpolator.h" #include "scene/3d/visual_instance_3d.h" #include "scene/main/viewport.h" #include "scene/property_utils.h" @@ -176,6 +177,7 @@ void Node3D::_notification(int p_what) { data.parent = nullptr; data.C = nullptr; _update_visibility_parent(true); + _disable_client_physics_interpolation(); } break; case NOTIFICATION_ENTER_WORLD: { @@ -226,6 +228,12 @@ void Node3D::_notification(int p_what) { } #endif } break; + + case NOTIFICATION_RESET_PHYSICS_INTERPOLATION: { + if (data.client_physics_interpolation_data) { + data.client_physics_interpolation_data->global_xform_prev = data.client_physics_interpolation_data->global_xform_curr; + } + } break; } } @@ -341,6 +349,119 @@ Transform3D Node3D::get_transform() const { return data.local_transform; } +// Return false to timeout and remove from the client interpolation list. +bool Node3D::update_client_physics_interpolation_data() { + if (!is_inside_tree() || !_is_physics_interpolated_client_side()) { + return false; + } + + ERR_FAIL_NULL_V(data.client_physics_interpolation_data, false); + ClientPhysicsInterpolationData &pid = *data.client_physics_interpolation_data; + + uint64_t tick = Engine::get_singleton()->get_physics_frames(); + + // Has this update been done already this tick? + // (For instance, get_global_transform_interpolated() could be called multiple times.) + if (pid.current_physics_tick != tick) { + // Timeout? + if (tick >= pid.timeout_physics_tick) { + return false; + } + + if (pid.current_physics_tick == (tick - 1)) { + // Normal interpolation situation, there is a continuous flow of data + // from one tick to the next... + pid.global_xform_prev = pid.global_xform_curr; + } else { + // There has been a gap, we cannot sensibly offer interpolation over + // a multitick gap, so we will teleport. + pid.global_xform_prev = get_global_transform(); + } + pid.current_physics_tick = tick; + } + + pid.global_xform_curr = get_global_transform(); + return true; +} + +void Node3D::_disable_client_physics_interpolation() { + // Disable any current client side interpolation. + // (This can always restart as normal if you later re-attach the node to the SceneTree.) + if (data.client_physics_interpolation_data) { + memdelete(data.client_physics_interpolation_data); + data.client_physics_interpolation_data = nullptr; + + SceneTree *tree = get_tree(); + if (tree && _client_physics_interpolation_node_3d_list.in_list()) { + tree->client_physics_interpolation_remove_node_3d(&_client_physics_interpolation_node_3d_list); + } + } + _set_physics_interpolated_client_side(false); +} + +Transform3D Node3D::_get_global_transform_interpolated(real_t p_interpolation_fraction) { + ERR_FAIL_COND_V(!is_inside_tree(), Transform3D()); + + // Set in motion the mechanisms for client side interpolation if not already active. + if (!_is_physics_interpolated_client_side()) { + _set_physics_interpolated_client_side(true); + + ERR_FAIL_COND_V(data.client_physics_interpolation_data != nullptr, Transform3D()); + data.client_physics_interpolation_data = memnew(ClientPhysicsInterpolationData); + data.client_physics_interpolation_data->global_xform_curr = get_global_transform(); + data.client_physics_interpolation_data->global_xform_prev = data.client_physics_interpolation_data->global_xform_curr; + data.client_physics_interpolation_data->current_physics_tick = Engine::get_singleton()->get_physics_frames(); + } + + // Storing the last tick we requested client interpolation allows us to timeout + // and remove client interpolated nodes from the list to save processing. + // We use some arbitrary timeout here, but this could potentially be user defined. + + // Note: This timeout has to be larger than the number of ticks in a frame, otherwise the interpolated + // data will stop flowing before the next frame is drawn. This should only be relevant at high tick rates. + // We could alternatively do this by frames rather than ticks and avoid this problem, but then the behavior + // would be machine dependent. + data.client_physics_interpolation_data->timeout_physics_tick = Engine::get_singleton()->get_physics_frames() + 256; + + // Make sure data is up to date. + update_client_physics_interpolation_data(); + + // Interpolate the current data. + const Transform3D &xform_curr = data.client_physics_interpolation_data->global_xform_curr; + const Transform3D &xform_prev = data.client_physics_interpolation_data->global_xform_prev; + + Transform3D res; + TransformInterpolator::interpolate_transform_3d(xform_prev, xform_curr, res, p_interpolation_fraction); + + SceneTree *tree = get_tree(); + + // This should not happen, as is_inside_tree() is checked earlier. + ERR_FAIL_NULL_V(tree, res); + if (!_client_physics_interpolation_node_3d_list.in_list()) { + tree->client_physics_interpolation_add_node_3d(&_client_physics_interpolation_node_3d_list); + } + + return res; +} + +Transform3D Node3D::get_global_transform_interpolated() { + // Pass through if physics interpolation is switched off. + // This is a convenience, as it allows you to easy turn off interpolation + // without changing any code. + if (!is_physics_interpolated_and_enabled()) { + return get_global_transform(); + } + + // If we are in the physics frame, the interpolated global transform is meaningless. + // However, there is an exception, we may want to use this as a means of starting off the client + // interpolation pump if not already started (when _is_physics_interpolated_client_side() is false). + if (Engine::get_singleton()->is_in_physics_frame() && _is_physics_interpolated_client_side()) { + return get_global_transform(); + } + + return _get_global_transform_interpolated(Engine::get_singleton()->get_physics_interpolation_fraction()); +} + Transform3D Node3D::get_global_transform() const { ERR_FAIL_COND_V(!is_inside_tree(), Transform3D()); @@ -1140,6 +1261,7 @@ void Node3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_global_transform", "global"), &Node3D::set_global_transform); ClassDB::bind_method(D_METHOD("get_global_transform"), &Node3D::get_global_transform); + ClassDB::bind_method(D_METHOD("get_global_transform_interpolated"), &Node3D::get_global_transform_interpolated); ClassDB::bind_method(D_METHOD("set_global_position", "position"), &Node3D::set_global_position); ClassDB::bind_method(D_METHOD("get_global_position"), &Node3D::get_global_position); ClassDB::bind_method(D_METHOD("set_global_basis", "basis"), &Node3D::set_global_basis); @@ -1236,4 +1358,27 @@ void Node3D::_bind_methods() { } Node3D::Node3D() : - xform_change(this) {} + xform_change(this), _client_physics_interpolation_node_3d_list(this) { + // Default member initializer for bitfield is a C++20 extension, so: + + data.top_level = false; + data.inside_world = false; + + data.ignore_notification = false; + data.notify_local_transform = false; + data.notify_transform = false; + + data.visible = true; + data.disable_scale = false; + data.vi_visible = true; + +#ifdef TOOLS_ENABLED + data.gizmos_disabled = false; + data.gizmos_dirty = false; + data.transform_gizmo_visible = true; +#endif +} + +Node3D::~Node3D() { + _disable_client_physics_interpolation(); +} diff --git a/scene/3d/node_3d.h b/scene/3d/node_3d.h index c1667221df..217ee28cf1 100644 --- a/scene/3d/node_3d.h +++ b/scene/3d/node_3d.h @@ -85,7 +85,15 @@ private: DIRTY_GLOBAL_TRANSFORM = 4 }; + struct ClientPhysicsInterpolationData { + Transform3D global_xform_curr; + Transform3D global_xform_prev; + uint64_t current_physics_tick = 0; + uint64_t timeout_physics_tick = 0; + }; + mutable SelfList<Node> xform_change; + SelfList<Node3D> _client_physics_interpolation_node_3d_list; // This Data struct is to avoid namespace pollution in derived classes. @@ -101,8 +109,19 @@ private: Viewport *viewport = nullptr; - bool top_level = false; - bool inside_world = false; + bool top_level : 1; + bool inside_world : 1; + + // This is cached, and only currently kept up to date in visual instances. + // This is set if a visual instance is (a) in the tree AND (b) visible via is_visible_in_tree() call. + bool vi_visible : 1; + + bool ignore_notification : 1; + bool notify_local_transform : 1; + bool notify_transform : 1; + + bool visible : 1; + bool disable_scale : 1; RID visibility_parent; @@ -110,18 +129,13 @@ private: List<Node3D *> children; List<Node3D *>::Element *C = nullptr; - bool ignore_notification = false; - bool notify_local_transform = false; - bool notify_transform = false; - - bool visible = true; - bool disable_scale = false; + ClientPhysicsInterpolationData *client_physics_interpolation_data = nullptr; #ifdef TOOLS_ENABLED Vector<Ref<Node3DGizmo>> gizmos; - bool gizmos_disabled = false; - bool gizmos_dirty = false; - bool transform_gizmo_visible = true; + bool gizmos_disabled : 1; + bool gizmos_dirty : 1; + bool transform_gizmo_visible : 1; #endif } data; @@ -150,6 +164,11 @@ protected: _FORCE_INLINE_ void _update_local_transform() const; _FORCE_INLINE_ void _update_rotation_and_scale() const; + void _set_vi_visible(bool p_visible) { data.vi_visible = p_visible; } + bool _is_vi_visible() const { return data.vi_visible; } + Transform3D _get_global_transform_interpolated(real_t p_interpolation_fraction); + void _disable_client_physics_interpolation(); + void _notification(int p_what); static void _bind_methods(); @@ -208,6 +227,9 @@ public: Quaternion get_quaternion() const; Transform3D get_global_transform() const; + Transform3D get_global_transform_interpolated(); + bool update_client_physics_interpolation_data(); + #ifdef TOOLS_ENABLED virtual Transform3D get_global_gizmo_transform() const; virtual Transform3D get_local_gizmo_transform() const; @@ -279,6 +301,7 @@ public: NodePath get_visibility_parent() const; Node3D(); + ~Node3D(); }; VARIANT_ENUM_CAST(Node3D::RotationEditMode) diff --git a/scene/3d/physics/shape_cast_3d.cpp b/scene/3d/physics/shape_cast_3d.cpp index ada238c7f2..8ad651fdf5 100644 --- a/scene/3d/physics/shape_cast_3d.cpp +++ b/scene/3d/physics/shape_cast_3d.cpp @@ -157,7 +157,7 @@ void ShapeCast3D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_collide_with_bodies", "enable"), &ShapeCast3D::set_collide_with_bodies); ClassDB::bind_method(D_METHOD("is_collide_with_bodies_enabled"), &ShapeCast3D::is_collide_with_bodies_enabled); - ClassDB::bind_method(D_METHOD("_get_collision_result"), &ShapeCast3D::_get_collision_result); + ClassDB::bind_method(D_METHOD("get_collision_result"), &ShapeCast3D::get_collision_result); ClassDB::bind_method(D_METHOD("set_debug_shape_custom_color", "debug_shape_custom_color"), &ShapeCast3D::set_debug_shape_custom_color); ClassDB::bind_method(D_METHOD("get_debug_shape_custom_color"), &ShapeCast3D::get_debug_shape_custom_color); @@ -169,7 +169,7 @@ void ShapeCast3D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "margin", PROPERTY_HINT_RANGE, "0,100,0.01,suffix:m"), "set_margin", "get_margin"); ADD_PROPERTY(PropertyInfo(Variant::INT, "max_results"), "set_max_results", "get_max_results"); ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_mask", "get_collision_mask"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "collision_result", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "", "_get_collision_result"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "collision_result", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "", "get_collision_result"); ADD_GROUP("Collide With", "collide_with"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "collide_with_areas", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collide_with_areas", "is_collide_with_areas_enabled"); @@ -475,7 +475,7 @@ bool ShapeCast3D::is_collide_with_bodies_enabled() const { return collide_with_bodies; } -Array ShapeCast3D::_get_collision_result() const { +Array ShapeCast3D::get_collision_result() const { Array ret; for (int i = 0; i < result.size(); ++i) { diff --git a/scene/3d/physics/shape_cast_3d.h b/scene/3d/physics/shape_cast_3d.h index 19b73e3f72..9fc5e71670 100644 --- a/scene/3d/physics/shape_cast_3d.h +++ b/scene/3d/physics/shape_cast_3d.h @@ -73,8 +73,6 @@ class ShapeCast3D : public Node3D { real_t collision_safe_fraction = 1.0; real_t collision_unsafe_fraction = 1.0; - Array _get_collision_result() const; - RID debug_instance; Ref<ArrayMesh> debug_mesh; @@ -123,6 +121,7 @@ public: Ref<StandardMaterial3D> get_debug_material(); + Array get_collision_result() const; int get_collision_count() const; Object *get_collider(int p_idx) const; RID get_collider_rid(int p_idx) const; diff --git a/scene/3d/skeleton_ik_3d.cpp b/scene/3d/skeleton_ik_3d.cpp index 0d6316ee35..2476e7d5cd 100644 --- a/scene/3d/skeleton_ik_3d.cpp +++ b/scene/3d/skeleton_ik_3d.cpp @@ -503,7 +503,11 @@ Transform3D SkeletonIK3D::_get_target_transform() { Node3D *target_node_override = cast_to<Node3D>(target_node_override_ref.get_validated_object()); if (target_node_override && target_node_override->is_inside_tree()) { - return target_node_override->get_global_transform(); + // Make sure to use the interpolated transform as target. + // When physics interpolation is off this will pass through to get_global_transform(). + // When using interpolation, ensure that the target matches the interpolated visual position + // of the target when updating the IK each frame. + return target_node_override->get_global_transform_interpolated(); } else { return target; } diff --git a/scene/3d/skeleton_modifier_3d.cpp b/scene/3d/skeleton_modifier_3d.cpp index 9851214194..d5c603112e 100644 --- a/scene/3d/skeleton_modifier_3d.cpp +++ b/scene/3d/skeleton_modifier_3d.cpp @@ -37,7 +37,7 @@ void SkeletonModifier3D::_validate_property(PropertyInfo &p_property) const { PackedStringArray SkeletonModifier3D::get_configuration_warnings() const { PackedStringArray warnings = Node3D::get_configuration_warnings(); if (skeleton_id.is_null()) { - warnings.push_back(RTR("Skeleton3D node not set! SkeletonModifier3D must be child of Skeleton3D or set a path to an external skeleton.")); + warnings.push_back(RTR("Skeleton3D node not set! SkeletonModifier3D must be child of Skeleton3D.")); } return warnings; } diff --git a/scene/3d/soft_body_3d.cpp b/scene/3d/soft_body_3d.cpp index f02cd9b700..4fe5dd2385 100644 --- a/scene/3d/soft_body_3d.cpp +++ b/scene/3d/soft_body_3d.cpp @@ -218,7 +218,13 @@ bool SoftBody3D::_set_property_pinned_points_attachment(int p_item, const String if ("spatial_attachment_path" == p_what) { PinnedPoint *w = pinned_points.ptrw(); - callable_mp(this, &SoftBody3D::_pin_point_deferred).call_deferred(Variant(w[p_item].point_index), true, p_value); + + if (is_inside_tree()) { + callable_mp(this, &SoftBody3D::_pin_point_deferred).call_deferred(Variant(w[p_item].point_index), true, p_value); + } else { + pin_point(w[p_item].point_index, true, p_value); + _make_cache_dirty(); + } } else if ("offset" == p_what) { PinnedPoint *w = pinned_points.ptrw(); w[p_item].offset = p_value; diff --git a/scene/3d/visual_instance_3d.cpp b/scene/3d/visual_instance_3d.cpp index f14ae3a285..79a01450dd 100644 --- a/scene/3d/visual_instance_3d.cpp +++ b/scene/3d/visual_instance_3d.cpp @@ -30,6 +30,8 @@ #include "visual_instance_3d.h" +#include "core/config/project_settings.h" + AABB VisualInstance3D::get_aabb() const { AABB ret; GDVIRTUAL_CALL(_get_aabb, ret); @@ -41,7 +43,38 @@ void VisualInstance3D::_update_visibility() { return; } - RS::get_singleton()->instance_set_visible(get_instance(), is_visible_in_tree()); + bool already_visible = _is_vi_visible(); + bool visible = is_visible_in_tree(); + _set_vi_visible(visible); + + // If making visible, make sure the rendering server is up to date with the transform. + if (visible && !already_visible) { + if (!_is_using_identity_transform()) { + Transform3D gt = get_global_transform(); + RS::get_singleton()->instance_set_transform(instance, gt); + } + } + + RS::get_singleton()->instance_set_visible(instance, visible); +} + +void VisualInstance3D::_physics_interpolated_changed() { + RenderingServer::get_singleton()->instance_set_interpolated(instance, is_physics_interpolated()); +} + +void VisualInstance3D::set_instance_use_identity_transform(bool p_enable) { + // Prevent sending instance transforms when using global coordinates. + _set_use_identity_transform(p_enable); + + if (is_inside_tree()) { + if (p_enable) { + // Want to make sure instance is using identity transform. + RS::get_singleton()->instance_set_transform(instance, Transform3D()); + } else { + // Want to make sure instance is up to date. + RS::get_singleton()->instance_set_transform(instance, get_global_transform()); + } + } } void VisualInstance3D::_notification(int p_what) { @@ -53,13 +86,52 @@ void VisualInstance3D::_notification(int p_what) { } break; case NOTIFICATION_TRANSFORM_CHANGED: { - Transform3D gt = get_global_transform(); - RenderingServer::get_singleton()->instance_set_transform(instance, gt); + if (_is_vi_visible() || is_physics_interpolated_and_enabled()) { + if (!_is_using_identity_transform()) { + RenderingServer::get_singleton()->instance_set_transform(instance, get_global_transform()); + + // For instance when first adding to the tree, when the previous transform is + // unset, to prevent streaking from the origin. + if (_is_physics_interpolation_reset_requested() && is_physics_interpolated_and_enabled() && is_inside_tree()) { + if (_is_vi_visible()) { + _notification(NOTIFICATION_RESET_PHYSICS_INTERPOLATION); + } + _set_physics_interpolation_reset_requested(false); + } + } + } + } break; + + case NOTIFICATION_RESET_PHYSICS_INTERPOLATION: { + if (_is_vi_visible() && is_physics_interpolated() && is_inside_tree()) { + // We must ensure the RenderingServer transform is up to date before resetting. + // This is because NOTIFICATION_TRANSFORM_CHANGED is deferred, + // and cannot be relied to be called in order before NOTIFICATION_RESET_PHYSICS_INTERPOLATION. + if (!_is_using_identity_transform()) { + RenderingServer::get_singleton()->instance_set_transform(instance, get_global_transform()); + } + + RenderingServer::get_singleton()->instance_reset_physics_interpolation(instance); + } +#if defined(DEBUG_ENABLED) && defined(TOOLS_ENABLED) + else if (GLOBAL_GET("debug/settings/physics_interpolation/enable_warnings")) { + + String node_name = is_inside_tree() ? String(get_path()) : String(get_name()); + if (!_is_vi_visible()) { + WARN_PRINT("[Physics interpolation] NOTIFICATION_RESET_PHYSICS_INTERPOLATION only works with unhidden nodes: \"" + node_name + "\"."); + } + if (!is_physics_interpolated()) { + WARN_PRINT("[Physics interpolation] NOTIFICATION_RESET_PHYSICS_INTERPOLATION only works with interpolated nodes: \"" + node_name + "\"."); + } + } +#endif + } break; case NOTIFICATION_EXIT_WORLD: { RenderingServer::get_singleton()->instance_set_scenario(instance, RID()); RenderingServer::get_singleton()->instance_attach_skeleton(instance, RID()); + _set_vi_visible(false); } break; case NOTIFICATION_VISIBILITY_CHANGED: { diff --git a/scene/3d/visual_instance_3d.h b/scene/3d/visual_instance_3d.h index 59ede26ac1..9b02c928b7 100644 --- a/scene/3d/visual_instance_3d.h +++ b/scene/3d/visual_instance_3d.h @@ -45,6 +45,9 @@ class VisualInstance3D : public Node3D { protected: void _update_visibility(); + virtual void _physics_interpolated_changed() override; + void set_instance_use_identity_transform(bool p_enable); + void _notification(int p_what); static void _bind_methods(); void _validate_property(PropertyInfo &p_property) const; diff --git a/scene/audio/audio_stream_player.cpp b/scene/audio/audio_stream_player.cpp index e90c1aa245..183c4af950 100644 --- a/scene/audio/audio_stream_player.cpp +++ b/scene/audio/audio_stream_player.cpp @@ -112,7 +112,7 @@ void AudioStreamPlayer::seek(float p_seconds) { } void AudioStreamPlayer::stop() { - internal->stop(); + internal->stop_basic(); } bool AudioStreamPlayer::is_playing() const { @@ -283,7 +283,7 @@ void AudioStreamPlayer::_bind_methods() { } AudioStreamPlayer::AudioStreamPlayer() { - internal = memnew(AudioStreamPlayerInternal(this, callable_mp(this, &AudioStreamPlayer::play), false)); + internal = memnew(AudioStreamPlayerInternal(this, callable_mp(this, &AudioStreamPlayer::play), callable_mp(this, &AudioStreamPlayer::stop), false)); } AudioStreamPlayer::~AudioStreamPlayer() { diff --git a/scene/audio/audio_stream_player_internal.cpp b/scene/audio/audio_stream_player_internal.cpp index 36c14e03d5..206408e3a7 100644 --- a/scene/audio/audio_stream_player_internal.cpp +++ b/scene/audio/audio_stream_player_internal.cpp @@ -132,7 +132,7 @@ Ref<AudioStreamPlayback> AudioStreamPlayerInternal::play_basic() { } ERR_FAIL_COND_V_MSG(!node->is_inside_tree(), stream_playback, "Playback can only happen when a node is inside the scene tree"); if (stream->is_monophonic() && is_playing()) { - stop(); + stop_callable.call(); } stream_playback = stream->instantiate_playback(); ERR_FAIL_COND_V_MSG(stream_playback.is_null(), stream_playback, "Failed to instantiate playback."); @@ -242,7 +242,7 @@ void AudioStreamPlayerInternal::set_stream(Ref<AudioStream> p_stream) { if (stream.is_valid()) { stream->disconnect(SNAME("parameter_list_changed"), callable_mp(this, &AudioStreamPlayerInternal::_update_stream_parameters)); } - stop(); + stop_callable.call(); stream = p_stream; _update_stream_parameters(); if (stream.is_valid()) { @@ -253,12 +253,12 @@ void AudioStreamPlayerInternal::set_stream(Ref<AudioStream> p_stream) { void AudioStreamPlayerInternal::seek(float p_seconds) { if (is_playing()) { - stop(); + stop_callable.call(); play_callable.call(p_seconds); } } -void AudioStreamPlayerInternal::stop() { +void AudioStreamPlayerInternal::stop_basic() { for (Ref<AudioStreamPlayback> &playback : stream_playbacks) { AudioServer::get_singleton()->stop_playback_stream(playback); } @@ -289,7 +289,7 @@ void AudioStreamPlayerInternal::set_playing(bool p_enable) { if (p_enable) { play_callable.call(0.0); } else { - stop(); + stop_callable.call(); } } @@ -339,9 +339,10 @@ StringName AudioStreamPlayerInternal::get_bus() const { return SceneStringName(Master); } -AudioStreamPlayerInternal::AudioStreamPlayerInternal(Node *p_node, const Callable &p_play_callable, bool p_physical) { +AudioStreamPlayerInternal::AudioStreamPlayerInternal(Node *p_node, const Callable &p_play_callable, const Callable &p_stop_callable, bool p_physical) { node = p_node; play_callable = p_play_callable; + stop_callable = p_stop_callable; physical = p_physical; bus = SceneStringName(Master); diff --git a/scene/audio/audio_stream_player_internal.h b/scene/audio/audio_stream_player_internal.h index ec4489067e..7d8faeba06 100644 --- a/scene/audio/audio_stream_player_internal.h +++ b/scene/audio/audio_stream_player_internal.h @@ -53,6 +53,7 @@ private: Node *node = nullptr; Callable play_callable; + Callable stop_callable; bool physical = false; AudioServer::PlaybackType playback_type = AudioServer::PlaybackType::PLAYBACK_TYPE_DEFAULT; @@ -94,7 +95,7 @@ public: Ref<AudioStreamPlayback> play_basic(); void seek(float p_seconds); - void stop(); + void stop_basic(); bool is_playing() const; float get_playback_position(); @@ -110,7 +111,7 @@ public: void set_playback_type(AudioServer::PlaybackType p_playback_type); AudioServer::PlaybackType get_playback_type() const; - AudioStreamPlayerInternal(Node *p_node, const Callable &p_play_callable, bool p_physical); + AudioStreamPlayerInternal(Node *p_node, const Callable &p_play_callable, const Callable &p_stop_callable, bool p_physical); }; #endif // AUDIO_STREAM_PLAYER_INTERNAL_H diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 1da3668ebe..e9fe78e162 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -1448,6 +1448,7 @@ float RichTextLabel::_find_click_in_line(ItemFrame *p_frame, int p_line, const V bool line_clicked = false; float text_rect_begin = 0.0; int char_pos = -1; + bool char_clicked = false; Line &l = p_frame->lines[p_line]; MutexLock lock(l.text_buf->get_mutex()); @@ -1578,6 +1579,9 @@ float RichTextLabel::_find_click_in_line(ItemFrame *p_frame, int p_line, const V } if (p_click.y >= rect.position.y && p_click.y <= rect.position.y + rect.size.y) { + if (!p_meta) { + char_pos = rtl ? TS->shaped_text_get_range(rid).y : TS->shaped_text_get_range(rid).x; + } if ((!rtl && p_click.x >= rect.position.x) || (rtl && p_click.x <= rect.position.x + rect.size.x)) { if (p_meta) { int64_t glyph_idx = TS->shaped_text_hit_test_grapheme(rid, p_click.x - rect.position.x); @@ -1592,6 +1596,7 @@ float RichTextLabel::_find_click_in_line(ItemFrame *p_frame, int p_line, const V obj_rect.position.y += baseline_y; if (p_click.y >= obj_rect.position.y && p_click.y <= obj_rect.position.y + obj_rect.size.y) { char_pos = glyphs[glyph_idx].start; + char_clicked = true; } break; } @@ -1602,18 +1607,21 @@ float RichTextLabel::_find_click_in_line(ItemFrame *p_frame, int p_line, const V float fd = TS->font_get_descent(glyphs[glyph_idx].font_rid, glyphs[glyph_idx].font_size); if (p_click.y >= baseline_y - fa && p_click.y <= baseline_y + fd) { char_pos = glyphs[glyph_idx].start; + char_clicked = true; } } else if (!(glyphs[glyph_idx].flags & TextServer::GRAPHEME_IS_VIRTUAL)) { // Hex code box. Vector2 gl_size = TS->get_hex_code_box_size(glyphs[glyph_idx].font_size, glyphs[glyph_idx].index); if (p_click.y >= baseline_y - gl_size.y * 0.9 && p_click.y <= baseline_y + gl_size.y * 0.2) { char_pos = glyphs[glyph_idx].start; + char_clicked = true; } } } } else { char_pos = TS->shaped_text_hit_test_position(rid, p_click.x - rect.position.x); char_pos = TS->shaped_text_closest_character_pos(rid, char_pos); + char_clicked = true; } } line_clicked = true; @@ -1621,7 +1629,7 @@ float RichTextLabel::_find_click_in_line(ItemFrame *p_frame, int p_line, const V } // If table hit was detected, and line hit is in the table bounds use table hit. - if (table_hit && (((char_pos + p_frame->lines[p_line].char_offset) >= table_range.x && (char_pos + p_frame->lines[p_line].char_offset) <= table_range.y) || char_pos == -1)) { + if (table_hit && (((char_pos + p_frame->lines[p_line].char_offset) >= table_range.x && (char_pos + p_frame->lines[p_line].char_offset) <= table_range.y) || !char_clicked)) { if (r_click_frame != nullptr) { *r_click_frame = table_click_frame; } diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 0396f3ab4a..5c46abc732 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -138,6 +138,12 @@ void Node::_notification(int p_notification) { get_tree()->nodes_in_tree_count++; orphan_node_count--; + + // Allow physics interpolated nodes to automatically reset when added to the tree + // (this is to save the user from doing this manually each time). + if (get_tree()->is_physics_interpolation_enabled()) { + _set_physics_interpolation_reset_requested(true); + } } break; case NOTIFICATION_EXIT_TREE: { @@ -437,6 +443,18 @@ void Node::_propagate_physics_interpolated(bool p_interpolated) { data.blocked--; } +void Node::_propagate_physics_interpolation_reset_requested(bool p_requested) { + if (is_physics_interpolated()) { + data.physics_interpolation_reset_requested = p_requested; + } + + data.blocked++; + for (KeyValue<StringName, Node *> &K : data.children) { + K.value->_propagate_physics_interpolation_reset_requested(p_requested); + } + data.blocked--; +} + void Node::move_child(Node *p_child, int p_index) { ERR_FAIL_COND_MSG(data.inside_tree && !Thread::is_main_thread(), "Moving child node positions inside the SceneTree is only allowed from the main thread. Use call_deferred(\"move_child\",child,index)."); ERR_FAIL_NULL(p_child); @@ -890,15 +908,23 @@ void Node::set_physics_interpolation_mode(PhysicsInterpolationMode p_mode) { } // If swapping from interpolated to non-interpolated, use this as an extra means to cause a reset. - if (is_physics_interpolated() && !interpolate) { - reset_physics_interpolation(); + if (is_physics_interpolated() && !interpolate && is_inside_tree()) { + propagate_notification(NOTIFICATION_RESET_PHYSICS_INTERPOLATION); } _propagate_physics_interpolated(interpolate); } void Node::reset_physics_interpolation() { - propagate_notification(NOTIFICATION_RESET_PHYSICS_INTERPOLATION); + if (is_inside_tree()) { + propagate_notification(NOTIFICATION_RESET_PHYSICS_INTERPOLATION); + + // If `reset_physics_interpolation()` is called explicitly by the user + // (e.g. from scripts) then we prevent deferred auto-resets taking place. + // The user is trusted to call reset in the right order, and auto-reset + // will interfere with their control of prev / curr, so should be turned off. + _propagate_physics_interpolation_reset_requested(false); + } } bool Node::_is_enabled() const { @@ -3825,6 +3851,9 @@ Node::Node() { data.unhandled_key_input = false; data.physics_interpolated = true; + data.physics_interpolation_reset_requested = false; + data.physics_interpolated_client_side = false; + data.use_identity_transform = false; data.parent_owned = false; data.in_constructor = true; diff --git a/scene/main/node.h b/scene/main/node.h index ee195ddef9..2f6372dad5 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -225,6 +225,21 @@ private: // is switched on. bool physics_interpolated : 1; + // We can auto-reset physics interpolation when e.g. adding a node for the first time. + bool physics_interpolation_reset_requested : 1; + + // Most nodes need not be interpolated in the scene tree, physics interpolation + // is normally only needed in the RenderingServer. However if we need to read the + // interpolated transform of a node in the SceneTree, it is necessary to duplicate + // the interpolation logic client side, in order to prevent stalling the RenderingServer + // by reading back. + bool physics_interpolated_client_side : 1; + + // For certain nodes (e.g. CPU particles in global mode) + // it can be useful to not send the instance transform to the + // RenderingServer, and specify the mesh in world space. + bool use_identity_transform : 1; + bool parent_owned : 1; bool in_constructor : 1; bool use_placeholder : 1; @@ -263,6 +278,7 @@ private: void _propagate_exit_tree(); void _propagate_after_exit_tree(); void _propagate_physics_interpolated(bool p_interpolated); + void _propagate_physics_interpolation_reset_requested(bool p_requested); void _propagate_process_owner(Node *p_owner, int p_pause_notification, int p_enabled_notification); void _propagate_groups_dirty(); Array _get_node_and_resource(const NodePath &p_path); @@ -334,6 +350,15 @@ protected: void _set_owner_nocheck(Node *p_owner); void _set_name_nocheck(const StringName &p_name); + void _set_physics_interpolated_client_side(bool p_enable) { data.physics_interpolated_client_side = p_enable; } + bool _is_physics_interpolated_client_side() const { return data.physics_interpolated_client_side; } + + void _set_physics_interpolation_reset_requested(bool p_enable) { data.physics_interpolation_reset_requested = p_enable; } + bool _is_physics_interpolation_reset_requested() const { return data.physics_interpolation_reset_requested; } + + void _set_use_identity_transform(bool p_enable) { data.use_identity_transform = p_enable; } + bool _is_using_identity_transform() const { return data.use_identity_transform; } + //call from SceneTree void _call_input(const Ref<InputEvent> &p_event); void _call_shortcut_input(const Ref<InputEvent> &p_event); diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index ced6d9aaa6..f0c9e8a866 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -59,6 +59,7 @@ #include "servers/navigation_server_3d.h" #include "servers/physics_server_2d.h" #ifndef _3D_DISABLED +#include "scene/3d/node_3d.h" #include "scene/resources/3d/world_3d.h" #include "servers/physics_server_3d.h" #endif // _3D_DISABLED @@ -118,6 +119,29 @@ void SceneTreeTimer::release_connections() { SceneTreeTimer::SceneTreeTimer() {} +#ifndef _3D_DISABLED +// This should be called once per physics tick, to make sure the transform previous and current +// is kept up to date on the few Node3Ds that are using client side physics interpolation. +void SceneTree::ClientPhysicsInterpolation::physics_process() { + for (SelfList<Node3D> *E = _node_3d_list.first(); E;) { + Node3D *node_3d = E->self(); + + SelfList<Node3D> *current = E; + + // Get the next element here BEFORE we potentially delete one. + E = E->next(); + + // This will return false if the Node3D has timed out .. + // i.e. if get_global_transform_interpolated() has not been called + // for a few seconds, we can delete from the list to keep processing + // to a minimum. + if (!node_3d->update_client_physics_interpolation_data()) { + _node_3d_list.remove(current); + } + } +} +#endif + void SceneTree::tree_changed() { emit_signal(tree_changed_name); } @@ -466,9 +490,31 @@ bool SceneTree::is_physics_interpolation_enabled() const { return _physics_interpolation_enabled; } +#ifndef _3D_DISABLED +void SceneTree::client_physics_interpolation_add_node_3d(SelfList<Node3D> *p_elem) { + // This ensures that _update_physics_interpolation_data() will be called at least once every + // physics tick, to ensure the previous and current transforms are kept up to date. + _client_physics_interpolation._node_3d_list.add(p_elem); +} + +void SceneTree::client_physics_interpolation_remove_node_3d(SelfList<Node3D> *p_elem) { + _client_physics_interpolation._node_3d_list.remove(p_elem); +} +#endif + void SceneTree::iteration_prepare() { if (_physics_interpolation_enabled) { + // Make sure any pending transforms from the last tick / frame + // are flushed before pumping the interpolation prev and currents. + flush_transform_notifications(); RenderingServer::get_singleton()->tick(); + +#ifndef _3D_DISABLED + // Any objects performing client physics interpolation + // should be given an opportunity to keep their previous transforms + // up to date before each new physics tick. + _client_physics_interpolation.physics_process(); +#endif } } @@ -503,6 +549,14 @@ bool SceneTree::physics_process(double p_time) { return _quit; } +void SceneTree::iteration_end() { + // When physics interpolation is active, we want all pending transforms + // to be flushed to the RenderingServer before finishing a physics tick. + if (_physics_interpolation_enabled) { + flush_transform_notifications(); + } +} + bool SceneTree::process(double p_time) { if (MainLoop::process(p_time)) { _quit = true; @@ -570,6 +624,10 @@ bool SceneTree::process(double p_time) { #endif // _3D_DISABLED #endif // TOOLS_ENABLED + if (_physics_interpolation_enabled) { + RenderingServer::get_singleton()->pre_draw(true); + } + return _quit; } @@ -1761,6 +1819,13 @@ SceneTree::SceneTree() { set_physics_interpolation_enabled(GLOBAL_DEF("physics/common/physics_interpolation", false)); + // Always disable jitter fix if physics interpolation is enabled - + // Jitter fix will interfere with interpolation, and is not necessary + // when interpolation is active. + if (is_physics_interpolation_enabled()) { + Engine::get_singleton()->set_physics_jitter_fix(0); + } + // Initialize network state. set_multiplayer(MultiplayerAPI::create_default_interface()); diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h index 6f0a61ec51..7e44541105 100644 --- a/scene/main/scene_tree.h +++ b/scene/main/scene_tree.h @@ -41,6 +41,9 @@ class PackedScene; class Node; +#ifndef _3D_DISABLED +class Node3D; +#endif class Window; class Material; class Mesh; @@ -120,6 +123,13 @@ private: bool changed = false; }; +#ifndef _3D_DISABLED + struct ClientPhysicsInterpolation { + SelfList<Node3D>::List _node_3d_list; + void physics_process(); + } _client_physics_interpolation; +#endif + Window *root = nullptr; double physics_process_time = 0.0; @@ -315,6 +325,7 @@ public: virtual void iteration_prepare() override; virtual bool physics_process(double p_time) override; + virtual void iteration_end() override; virtual bool process(double p_time) override; virtual void finalize() override; @@ -423,6 +434,11 @@ public: void set_physics_interpolation_enabled(bool p_enabled); bool is_physics_interpolation_enabled() const; +#ifndef _3D_DISABLED + void client_physics_interpolation_add_node_3d(SelfList<Node3D> *p_elem); + void client_physics_interpolation_remove_node_3d(SelfList<Node3D> *p_elem); +#endif + SceneTree(); ~SceneTree(); }; diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 1302e3c53e..c85fda2371 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -1511,6 +1511,7 @@ void Viewport::_gui_show_tooltip() { r.size *= win_scale; vr = window->get_usable_parent_rect(); } + r.size = r.size.ceil(); r.size = r.size.min(panel->get_max_size()); if (r.size.x + r.position.x > vr.size.x + vr.position.x) { @@ -5024,6 +5025,13 @@ Viewport::Viewport() { #endif // _3D_DISABLED set_sdf_oversize(sdf_oversize); // Set to server. + + // Physics interpolation mode for viewports is a special case. + // Typically viewports will be housed within Controls, + // and Controls default to PHYSICS_INTERPOLATION_MODE_OFF. + // Viewports can thus inherit physics interpolation OFF, which is unexpected. + // Setting to ON allows each viewport to have a fresh interpolation state. + set_physics_interpolation_mode(Node::PHYSICS_INTERPOLATION_MODE_ON); } Viewport::~Viewport() { diff --git a/scene/resources/2d/tile_set.cpp b/scene/resources/2d/tile_set.cpp index d124577d25..6a799e90ce 100644 --- a/scene/resources/2d/tile_set.cpp +++ b/scene/resources/2d/tile_set.cpp @@ -5275,11 +5275,26 @@ Rect2i TileSetAtlasSource::get_tile_texture_region(Vector2i p_atlas_coords, int bool TileSetAtlasSource::is_position_in_tile_texture_region(const Vector2i p_atlas_coords, int p_alternative_tile, Vector2 p_position) const { Size2 size = get_tile_texture_region(p_atlas_coords).size; - Rect2 rect = Rect2(-size / 2 - get_tile_data(p_atlas_coords, p_alternative_tile)->get_texture_origin(), size); + TileData *tile_data = get_tile_data(p_atlas_coords, p_alternative_tile); + if (tile_data->get_transpose()) { + size = Size2(size.y, size.x); + } + Rect2 rect = Rect2(-size / 2 - tile_data->get_texture_origin(), size); return rect.has_point(p_position); } +bool TileSetAtlasSource::is_rect_in_tile_texture_region(const Vector2i p_atlas_coords, int p_alternative_tile, Rect2 p_rect) const { + Size2 size = get_tile_texture_region(p_atlas_coords).size; + TileData *tile_data = get_tile_data(p_atlas_coords, p_alternative_tile); + if (tile_data->get_transpose()) { + size = Size2(size.y, size.x); + } + Rect2 rect = Rect2(-size / 2 - tile_data->get_texture_origin(), size); + + return p_rect.intersection(rect) == p_rect; +} + int TileSetAtlasSource::alternative_no_transform(int p_alternative_id) { return p_alternative_id & ~(TRANSFORM_FLIP_H | TRANSFORM_FLIP_V | TRANSFORM_TRANSPOSE); } diff --git a/scene/resources/2d/tile_set.h b/scene/resources/2d/tile_set.h index e083fa45b9..51df972c8d 100644 --- a/scene/resources/2d/tile_set.h +++ b/scene/resources/2d/tile_set.h @@ -763,6 +763,7 @@ public: Vector2i get_atlas_grid_size() const; Rect2i get_tile_texture_region(Vector2i p_atlas_coords, int p_frame = 0) const; bool is_position_in_tile_texture_region(const Vector2i p_atlas_coords, int p_alternative_tile, Vector2 p_position) const; + bool is_rect_in_tile_texture_region(const Vector2i p_atlas_coords, int p_alternative_tile, Rect2 p_rect) const; static int alternative_no_transform(int p_alternative_id); diff --git a/scene/resources/3d/importer_mesh.cpp b/scene/resources/3d/importer_mesh.cpp index f912d2650d..91531699b4 100644 --- a/scene/resources/3d/importer_mesh.cpp +++ b/scene/resources/3d/importer_mesh.cpp @@ -269,7 +269,7 @@ void ImporterMesh::set_surface_material(int p_surface, const Ref<Material> &p_ma } \ write_array[vert_idx] = transformed_vert; -void ImporterMesh::generate_lods(float p_normal_merge_angle, float p_normal_split_angle, Array p_bone_transform_array) { +void ImporterMesh::generate_lods(float p_normal_merge_angle, float p_normal_split_angle, Array p_bone_transform_array, bool p_raycast_normals) { if (!SurfaceTool::simplify_scale_func) { return; } @@ -432,6 +432,7 @@ void ImporterMesh::generate_lods(float p_normal_merge_angle, float p_normal_spli unsigned int index_target = 12; // Start with the smallest target, 4 triangles unsigned int last_index_count = 0; + // Only used for normal raycasting int split_vertex_count = vertex_count; LocalVector<Vector3> split_vertex_normals; LocalVector<int> split_vertex_indices; @@ -441,7 +442,7 @@ void ImporterMesh::generate_lods(float p_normal_merge_angle, float p_normal_spli RandomPCG pcg; pcg.seed(123456789); // Keep seed constant across imports - Ref<StaticRaycaster> raycaster = StaticRaycaster::create(); + Ref<StaticRaycaster> raycaster = p_raycast_normals ? StaticRaycaster::create() : Ref<StaticRaycaster>(); if (raycaster.is_valid()) { raycaster->add_mesh(vertices, indices, 0); raycaster->commit(); @@ -488,19 +489,22 @@ void ImporterMesh::generate_lods(float p_normal_merge_angle, float p_normal_spli } new_indices.resize(new_index_count); - - LocalVector<LocalVector<int>> vertex_corners; - vertex_corners.resize(vertex_count); { int *ptrw = new_indices.ptrw(); for (unsigned int j = 0; j < new_index_count; j++) { - const int &remapped = vertex_inverse_remap[ptrw[j]]; - vertex_corners[remapped].push_back(j); - ptrw[j] = remapped; + ptrw[j] = vertex_inverse_remap[ptrw[j]]; } } if (raycaster.is_valid()) { + LocalVector<LocalVector<int>> vertex_corners; + vertex_corners.resize(vertex_count); + + int *ptrw = new_indices.ptrw(); + for (unsigned int j = 0; j < new_index_count; j++) { + vertex_corners[ptrw[j]].push_back(j); + } + float error_factor = 1.0f / (scale * MAX(mesh_error, 0.15)); const float ray_bias = 0.05; float ray_length = ray_bias + mesh_error * scale * 3.0f; @@ -671,7 +675,10 @@ void ImporterMesh::generate_lods(float p_normal_merge_angle, float p_normal_spli } } - surfaces.write[i].split_normals(split_vertex_indices, split_vertex_normals); + if (raycaster.is_valid()) { + surfaces.write[i].split_normals(split_vertex_indices, split_vertex_normals); + } + surfaces.write[i].lods.sort_custom<Surface::LODComparator>(); for (int j = 0; j < surfaces.write[i].lods.size(); j++) { @@ -682,6 +689,10 @@ void ImporterMesh::generate_lods(float p_normal_merge_angle, float p_normal_spli } } +void ImporterMesh::_generate_lods_bind(float p_normal_merge_angle, float p_normal_split_angle, Array p_skin_pose_transform_array) { + generate_lods(p_normal_merge_angle, p_normal_split_angle, p_skin_pose_transform_array); +} + bool ImporterMesh::has_mesh() const { return mesh.is_valid(); } @@ -1367,7 +1378,7 @@ void ImporterMesh::_bind_methods() { ClassDB::bind_method(D_METHOD("set_surface_name", "surface_idx", "name"), &ImporterMesh::set_surface_name); ClassDB::bind_method(D_METHOD("set_surface_material", "surface_idx", "material"), &ImporterMesh::set_surface_material); - ClassDB::bind_method(D_METHOD("generate_lods", "normal_merge_angle", "normal_split_angle", "bone_transform_array"), &ImporterMesh::generate_lods); + ClassDB::bind_method(D_METHOD("generate_lods", "normal_merge_angle", "normal_split_angle", "bone_transform_array"), &ImporterMesh::_generate_lods_bind); ClassDB::bind_method(D_METHOD("get_mesh", "base_mesh"), &ImporterMesh::get_mesh, DEFVAL(Ref<ArrayMesh>())); ClassDB::bind_method(D_METHOD("clear"), &ImporterMesh::clear); diff --git a/scene/resources/3d/importer_mesh.h b/scene/resources/3d/importer_mesh.h index ff8683449b..777f936030 100644 --- a/scene/resources/3d/importer_mesh.h +++ b/scene/resources/3d/importer_mesh.h @@ -86,6 +86,8 @@ protected: void _set_data(const Dictionary &p_data); Dictionary _get_data() const; + void _generate_lods_bind(float p_normal_merge_angle, float p_normal_split_angle, Array p_skin_pose_transform_array); + static void _bind_methods(); public: @@ -112,7 +114,7 @@ public: void set_surface_material(int p_surface, const Ref<Material> &p_material); - void generate_lods(float p_normal_merge_angle, float p_normal_split_angle, Array p_skin_pose_transform_array); + void generate_lods(float p_normal_merge_angle, float p_normal_split_angle, Array p_skin_pose_transform_array, bool p_raycast_normals = false); void create_shadow_mesh(); Ref<ImporterMesh> get_shadow_mesh() const; diff --git a/scene/resources/3d/primitive_meshes.cpp b/scene/resources/3d/primitive_meshes.cpp index ee772f960a..128822d2cb 100644 --- a/scene/resources/3d/primitive_meshes.cpp +++ b/scene/resources/3d/primitive_meshes.cpp @@ -324,22 +324,43 @@ Vector2 PrimitiveMesh::get_uv2_scale(Vector2 p_margin_scale) const { } float PrimitiveMesh::get_lightmap_texel_size() const { - float texel_size = GLOBAL_GET("rendering/lightmapping/primitive_meshes/texel_size"); + return texel_size; +} - if (texel_size <= 0.0) { - texel_size = 0.2; +void PrimitiveMesh::_on_settings_changed() { + float new_texel_size = float(GLOBAL_GET("rendering/lightmapping/primitive_meshes/texel_size")); + if (new_texel_size <= 0.0) { + new_texel_size = 0.2; + } + if (texel_size == new_texel_size) { + return; } - return texel_size; + texel_size = new_texel_size; + _update_lightmap_size(); + request_update(); } PrimitiveMesh::PrimitiveMesh() { + ERR_FAIL_NULL(RenderingServer::get_singleton()); mesh = RenderingServer::get_singleton()->mesh_create(); + + ERR_FAIL_NULL(ProjectSettings::get_singleton()); + texel_size = float(GLOBAL_GET("rendering/lightmapping/primitive_meshes/texel_size")); + if (texel_size <= 0.0) { + texel_size = 0.2; + } + ProjectSettings *project_settings = ProjectSettings::get_singleton(); + project_settings->connect("settings_changed", callable_mp(this, &PrimitiveMesh::_on_settings_changed)); } PrimitiveMesh::~PrimitiveMesh() { ERR_FAIL_NULL(RenderingServer::get_singleton()); RenderingServer::get_singleton()->free(mesh); + + ERR_FAIL_NULL(ProjectSettings::get_singleton()); + ProjectSettings *project_settings = ProjectSettings::get_singleton(); + project_settings->disconnect("settings_changed", callable_mp(this, &PrimitiveMesh::_on_settings_changed)); } /** @@ -350,7 +371,6 @@ void CapsuleMesh::_update_lightmap_size() { if (get_add_uv2()) { // size must have changed, update lightmap size hint Size2i _lightmap_size_hint; - float texel_size = get_lightmap_texel_size(); float padding = get_uv2_padding(); float radial_length = radius * Math_PI * 0.5; // circumference of 90 degree bend @@ -365,7 +385,6 @@ void CapsuleMesh::_update_lightmap_size() { void CapsuleMesh::_create_mesh_array(Array &p_arr) const { bool _add_uv2 = get_add_uv2(); - float texel_size = get_lightmap_texel_size(); float _uv2_padding = get_uv2_padding() * texel_size; create_mesh_array(p_arr, radius, height, radial_segments, rings, _add_uv2, _uv2_padding); @@ -613,7 +632,6 @@ void BoxMesh::_update_lightmap_size() { if (get_add_uv2()) { // size must have changed, update lightmap size hint Size2i _lightmap_size_hint; - float texel_size = get_lightmap_texel_size(); float padding = get_uv2_padding(); float width = (size.x + size.z) / texel_size; @@ -632,7 +650,6 @@ void BoxMesh::_create_mesh_array(Array &p_arr) const { // With 3 faces along the width and 2 along the height of the texture we need to adjust our scale // accordingly. bool _add_uv2 = get_add_uv2(); - float texel_size = get_lightmap_texel_size(); float _uv2_padding = get_uv2_padding() * texel_size; BoxMesh::create_mesh_array(p_arr, size, subdivide_w, subdivide_h, subdivide_d, _add_uv2, _uv2_padding); @@ -937,7 +954,6 @@ void CylinderMesh::_update_lightmap_size() { if (get_add_uv2()) { // size must have changed, update lightmap size hint Size2i _lightmap_size_hint; - float texel_size = get_lightmap_texel_size(); float padding = get_uv2_padding(); float top_circumference = top_radius * Math_PI * 2.0; @@ -957,7 +973,6 @@ void CylinderMesh::_update_lightmap_size() { void CylinderMesh::_create_mesh_array(Array &p_arr) const { bool _add_uv2 = get_add_uv2(); - float texel_size = get_lightmap_texel_size(); float _uv2_padding = get_uv2_padding() * texel_size; create_mesh_array(p_arr, top_radius, bottom_radius, height, radial_segments, rings, cap_top, cap_bottom, _add_uv2, _uv2_padding); @@ -1244,7 +1259,6 @@ void PlaneMesh::_update_lightmap_size() { if (get_add_uv2()) { // size must have changed, update lightmap size hint Size2i _lightmap_size_hint; - float texel_size = get_lightmap_texel_size(); float padding = get_uv2_padding(); _lightmap_size_hint.x = MAX(1.0, (size.x / texel_size) + padding); @@ -1416,7 +1430,6 @@ void PrismMesh::_update_lightmap_size() { if (get_add_uv2()) { // size must have changed, update lightmap size hint Size2i _lightmap_size_hint; - float texel_size = get_lightmap_texel_size(); float padding = get_uv2_padding(); // left_to_right does not effect the surface area of the prism so we ignore that. @@ -1440,7 +1453,6 @@ void PrismMesh::_create_mesh_array(Array &p_arr) const { // Only used if we calculate UV2 bool _add_uv2 = get_add_uv2(); - float texel_size = get_lightmap_texel_size(); float _uv2_padding = get_uv2_padding() * texel_size; float horizontal_total = size.x + size.z + 2.0 * _uv2_padding; @@ -1762,7 +1774,6 @@ void SphereMesh::_update_lightmap_size() { if (get_add_uv2()) { // size must have changed, update lightmap size hint Size2i _lightmap_size_hint; - float texel_size = get_lightmap_texel_size(); float padding = get_uv2_padding(); float _width = radius * Math_TAU; @@ -1776,7 +1787,6 @@ void SphereMesh::_update_lightmap_size() { void SphereMesh::_create_mesh_array(Array &p_arr) const { bool _add_uv2 = get_add_uv2(); - float texel_size = get_lightmap_texel_size(); float _uv2_padding = get_uv2_padding() * texel_size; create_mesh_array(p_arr, radius, height, radial_segments, rings, is_hemisphere, _add_uv2, _uv2_padding); @@ -1950,7 +1960,6 @@ void TorusMesh::_update_lightmap_size() { if (get_add_uv2()) { // size must have changed, update lightmap size hint Size2i _lightmap_size_hint; - float texel_size = get_lightmap_texel_size(); float padding = get_uv2_padding(); float min_radius = inner_radius; @@ -2000,7 +2009,6 @@ void TorusMesh::_create_mesh_array(Array &p_arr) const { // Only used if we calculate UV2 bool _add_uv2 = get_add_uv2(); - float texel_size = get_lightmap_texel_size(); float _uv2_padding = get_uv2_padding() * texel_size; float horizontal_total = max_radius * Math_TAU + _uv2_padding; diff --git a/scene/resources/3d/primitive_meshes.h b/scene/resources/3d/primitive_meshes.h index 4d2d0760b3..fc2489923a 100644 --- a/scene/resources/3d/primitive_meshes.h +++ b/scene/resources/3d/primitive_meshes.h @@ -67,6 +67,9 @@ protected: // assume primitive triangles as the type, correct for all but one and it will change this :) Mesh::PrimitiveType primitive_type = Mesh::PRIMITIVE_TRIANGLES; + // Copy of our texel_size project setting. + float texel_size = 0.2; + static void _bind_methods(); virtual void _create_mesh_array(Array &p_arr) const {} @@ -76,6 +79,8 @@ protected: float get_lightmap_texel_size() const; virtual void _update_lightmap_size(){}; + void _on_settings_changed(); + public: virtual int get_surface_count() const override; virtual int surface_get_array_len(int p_idx) const override; diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 4bedcb1820..1fa52b9c73 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -412,7 +412,6 @@ String VisualShaderNode::get_warning(Shader::Mode p_mode, VisualShader::Type p_t } VisualShaderNode::Category VisualShaderNode::get_category() const { - WARN_PRINT(get_caption() + " is missing a category."); return CATEGORY_NONE; } @@ -1825,7 +1824,7 @@ void VisualShader::reset_state() { void VisualShader::_get_property_list(List<PropertyInfo> *p_list) const { //mode - p_list->push_back(PropertyInfo(Variant::INT, PNAME("mode"), PROPERTY_HINT_ENUM, "Node3D,CanvasItem,Particles,Sky,Fog")); + p_list->push_back(PropertyInfo(Variant::INT, PNAME("mode"), PROPERTY_HINT_ENUM, "Spatial,CanvasItem,Particles,Sky,Fog")); //render modes HashMap<String, String> blend_mode_enums; @@ -3004,9 +3003,9 @@ VisualShader::VisualShader() { /////////////////////////////////////////////////////////// const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = { - // Node3D + // Spatial - // Node3D, Vertex + // Spatial, Vertex { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_3D, "vertex", "VERTEX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR_INT, "vertex_id", "VERTEX_ID" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_3D, "normal", "NORMAL" }, @@ -3043,7 +3042,7 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = { { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_4D, "custom2", "CUSTOM2" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_4D, "custom3", "CUSTOM3" }, - // Node3D, Fragment + // Spatial, Fragment { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_4D, "fragcoord", "FRAGCOORD" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "vertex", "VERTEX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "normal", "NORMAL" }, @@ -3075,7 +3074,7 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = { { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR_UINT, "camera_visible_layers", "CAMERA_VISIBLE_LAYERS" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "node_position_view", "NODE_POSITION_VIEW" }, - // Node3D, Light + // Spatial, Light { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_4D, "fragcoord", "FRAGCOORD" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "normal", "NORMAL" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_2D, "uv", "UV" }, @@ -3883,9 +3882,9 @@ VisualShaderNodeParameterRef::VisualShaderNodeParameterRef() { const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = { //////////////////////////////////////////////////////////////////////// - // Node3D. + // Spatial. //////////////////////////////////////////////////////////////////////// - // Node3D, Vertex. + // Spatial, Vertex. //////////////////////////////////////////////////////////////////////// { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Vertex", "VERTEX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Normal", "NORMAL" }, @@ -3900,7 +3899,7 @@ const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = { { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "Model View Matrix", "MODELVIEW_MATRIX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "Projection Matrix", "PROJECTION_MATRIX" }, //////////////////////////////////////////////////////////////////////// - // Node3D, Fragment. + // Spatial, Fragment. //////////////////////////////////////////////////////////////////////// { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Albedo", "ALBEDO" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "Alpha", "ALPHA" }, @@ -3932,7 +3931,7 @@ const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = { { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "Depth", "DEPTH" }, //////////////////////////////////////////////////////////////////////// - // Node3D, Light. + // Spatial, Light. //////////////////////////////////////////////////////////////////////// { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Diffuse", "DIFFUSE_LIGHT" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Specular", "SPECULAR_LIGHT" }, diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp index 54840adcae..f0f894d03b 100644 --- a/servers/audio_server.cpp +++ b/servers/audio_server.cpp @@ -1379,6 +1379,12 @@ bool AudioServer::is_playback_active(Ref<AudioStreamPlayback> p_playback) { float AudioServer::get_playback_position(Ref<AudioStreamPlayback> p_playback) { ERR_FAIL_COND_V(p_playback.is_null(), 0); + // Samples. + if (p_playback->get_is_sample() && p_playback->get_sample_playback().is_valid()) { + Ref<AudioSamplePlayback> sample_playback = p_playback->get_sample_playback(); + return AudioServer::get_singleton()->get_sample_playback_position(sample_playback); + } + AudioStreamPlaybackListNode *playback_node = _find_playback_list_node(p_playback); if (!playback_node) { return 0; @@ -1847,6 +1853,11 @@ bool AudioServer::is_sample_playback_active(const Ref<AudioSamplePlayback> &p_pl return AudioDriver::get_singleton()->is_sample_playback_active(p_playback); } +double AudioServer::get_sample_playback_position(const Ref<AudioSamplePlayback> &p_playback) { + ERR_FAIL_COND_V_MSG(p_playback.is_null(), false, "Parameter p_playback is null."); + return AudioDriver::get_singleton()->get_sample_playback_position(p_playback); +} + void AudioServer::update_sample_playback_pitch_scale(const Ref<AudioSamplePlayback> &p_playback, float p_pitch_scale) { ERR_FAIL_COND_MSG(p_playback.is_null(), "Parameter p_playback is null."); return AudioDriver::get_singleton()->update_sample_playback_pitch_scale(p_playback, p_pitch_scale); diff --git a/servers/audio_server.h b/servers/audio_server.h index fd6cdb451e..2d6fc60860 100644 --- a/servers/audio_server.h +++ b/servers/audio_server.h @@ -141,6 +141,7 @@ public: virtual void stop_sample_playback(const Ref<AudioSamplePlayback> &p_playback) {} virtual void set_sample_playback_pause(const Ref<AudioSamplePlayback> &p_playback, bool p_paused) {} virtual bool is_sample_playback_active(const Ref<AudioSamplePlayback> &p_playback) { return false; } + virtual double get_sample_playback_position(const Ref<AudioSamplePlayback> &p_playback) { return false; } virtual void update_sample_playback_pitch_scale(const Ref<AudioSamplePlayback> &p_playback, float p_pitch_scale = 0.0f) {} virtual void set_sample_playback_bus_volumes_linear(const Ref<AudioSamplePlayback> &p_playback, const HashMap<StringName, Vector<AudioFrame>> &p_bus_volumes) {} @@ -484,6 +485,7 @@ public: void stop_sample_playback(const Ref<AudioSamplePlayback> &p_playback); void set_sample_playback_pause(const Ref<AudioSamplePlayback> &p_playback, bool p_paused); bool is_sample_playback_active(const Ref<AudioSamplePlayback> &p_playback); + double get_sample_playback_position(const Ref<AudioSamplePlayback> &p_playback); void update_sample_playback_pitch_scale(const Ref<AudioSamplePlayback> &p_playback, float p_pitch_scale = 0.0f); AudioServer(); diff --git a/servers/rendering/renderer_rd/shaders/effects/screen_space_reflection.glsl b/servers/rendering/renderer_rd/shaders/effects/screen_space_reflection.glsl index d629f2738d..b730b2c819 100644 --- a/servers/rendering/renderer_rd/shaders/effects/screen_space_reflection.glsl +++ b/servers/rendering/renderer_rd/shaders/effects/screen_space_reflection.glsl @@ -237,7 +237,7 @@ void main() { // This is an ad-hoc term to fade out the SSR as roughness increases. Values used // are meant to match the visual appearance of a ReflectionProbe. - float roughness_fade = smoothstep(0.4, 0.7, 1.0 - normal_roughness.w); + float roughness_fade = smoothstep(0.4, 0.7, 1.0 - roughness); // Schlick term. float metallic = texelFetch(source_metallic, ssC << 1, 0).w; diff --git a/servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp b/servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp index 99622996d4..c5454e748a 100644 --- a/servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp +++ b/servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp @@ -1439,12 +1439,10 @@ void MeshStorage::multimesh_allocate_data(RID p_multimesh, int p_instances, RS:: multimesh->motion_vectors_current_offset = 0; multimesh->motion_vectors_previous_offset = 0; multimesh->motion_vectors_last_change = -1; + multimesh->motion_vectors_enabled = false; if (multimesh->instances) { uint32_t buffer_size = multimesh->instances * multimesh->stride_cache * sizeof(float); - if (multimesh->motion_vectors_enabled) { - buffer_size *= 2; - } multimesh->buffer = RD::get_singleton()->storage_buffer_create(buffer_size); } @@ -1934,6 +1932,7 @@ void MeshStorage::multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_b ERR_FAIL_NULL(multimesh); ERR_FAIL_COND(p_buffer.size() != (multimesh->instances * (int)multimesh->stride_cache)); + bool used_motion_vectors = multimesh->motion_vectors_enabled; bool uses_motion_vectors = (RSG::viewport->get_num_viewports_with_motion_vectors() > 0) || (RendererCompositorStorage::get_singleton()->get_num_compositor_effects_with_motion_vectors() > 0); if (uses_motion_vectors) { _multimesh_enable_motion_vectors(multimesh); @@ -1952,6 +1951,11 @@ void MeshStorage::multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_b { const float *r = p_buffer.ptr(); RD::get_singleton()->buffer_update(multimesh->buffer, multimesh->motion_vectors_current_offset * multimesh->stride_cache * sizeof(float), p_buffer.size() * sizeof(float), r); + if (multimesh->motion_vectors_enabled && !used_motion_vectors) { + // Motion vectors were just enabled, and the other half of the buffer will be empty. + // Need to ensure that both halves are filled for correct operation. + RD::get_singleton()->buffer_update(multimesh->buffer, multimesh->motion_vectors_previous_offset * multimesh->stride_cache * sizeof(float), p_buffer.size() * sizeof(float), r); + } multimesh->buffer_set = true; } diff --git a/servers/rendering/renderer_scene_cull.cpp b/servers/rendering/renderer_scene_cull.cpp index b02d3def88..06753c3fb7 100644 --- a/servers/rendering/renderer_scene_cull.cpp +++ b/servers/rendering/renderer_scene_cull.cpp @@ -34,10 +34,16 @@ #include "core/object/worker_thread_pool.h" #include "core/os/os.h" #include "rendering_light_culler.h" +#include "rendering_server_constants.h" #include "rendering_server_default.h" #include <new> +#if defined(DEBUG_ENABLED) && defined(TOOLS_ENABLED) +// This is used only to obtain node paths for user-friendly physics interpolation warnings. +#include "scene/main/node.h" +#endif + /* HALTON SEQUENCE */ #ifndef _3D_DISABLED @@ -53,6 +59,20 @@ static float get_halton_value(int p_index, int p_base) { } #endif // _3D_DISABLED +/* EVENT QUEUING */ + +void RendererSceneCull::tick() { + if (_interpolation_data.interpolation_enabled) { + update_interpolation_tick(true); + } +} + +void RendererSceneCull::pre_draw(bool p_will_draw) { + if (_interpolation_data.interpolation_enabled) { + update_interpolation_frame(p_will_draw); + } +} + /* CAMERA API */ RID RendererSceneCull::camera_allocate() { @@ -93,6 +113,7 @@ void RendererSceneCull::camera_set_frustum(RID p_camera, float p_size, Vector2 p void RendererSceneCull::camera_set_transform(RID p_camera, const Transform3D &p_transform) { Camera *camera = camera_owner.get_or_null(p_camera); ERR_FAIL_NULL(camera); + camera->transform = p_transform.orthonormalized(); } @@ -924,8 +945,45 @@ void RendererSceneCull::instance_set_transform(RID p_instance, const Transform3D Instance *instance = instance_owner.get_or_null(p_instance); ERR_FAIL_NULL(instance); - if (instance->transform == p_transform) { - return; //must be checked to avoid worst evil +#ifdef RENDERING_SERVER_DEBUG_PHYSICS_INTERPOLATION + print_line("instance_set_transform " + rtos(p_transform.origin.x) + " .. tick " + itos(Engine::get_singleton()->get_physics_frames())); +#endif + + if (!_interpolation_data.interpolation_enabled || !instance->interpolated || !instance->scenario) { + if (instance->transform == p_transform) { + return; // Must be checked to avoid worst evil. + } + +#ifdef DEBUG_ENABLED + + for (int i = 0; i < 4; i++) { + const Vector3 &v = i < 3 ? p_transform.basis.rows[i] : p_transform.origin; + ERR_FAIL_COND(!v.is_finite()); + } + +#endif + instance->transform = p_transform; + _instance_queue_update(instance, true); + +#if defined(DEBUG_ENABLED) && defined(TOOLS_ENABLED) + if (_interpolation_data.interpolation_enabled && !instance->interpolated && Engine::get_singleton()->is_in_physics_frame()) { + PHYSICS_INTERPOLATION_NODE_WARNING(instance->object_id, "Non-interpolated instance triggered from physics process"); + } +#endif + + return; + } + + float new_checksum = TransformInterpolator::checksum_transform_3d(p_transform); + bool checksums_match = (instance->transform_checksum_curr == new_checksum) && (instance->transform_checksum_prev == new_checksum); + + // We can't entirely reject no changes because we need the interpolation + // system to keep on stewing. + + // Optimized check. First checks the checksums. If they pass it does the slow check at the end. + // Alternatively we can do this non-optimized and ignore the checksum... if no change. + if (checksums_match && (instance->transform_curr == p_transform) && (instance->transform_prev == p_transform)) { + return; } #ifdef DEBUG_ENABLED @@ -936,8 +994,69 @@ void RendererSceneCull::instance_set_transform(RID p_instance, const Transform3D } #endif - instance->transform = p_transform; + + instance->transform_curr = p_transform; + +#ifdef RENDERING_SERVER_DEBUG_PHYSICS_INTERPOLATION + print_line("\tprev " + rtos(instance->transform_prev.origin.x) + ", curr " + rtos(instance->transform_curr.origin.x)); +#endif + + // Keep checksums up to date. + instance->transform_checksum_curr = new_checksum; + + if (!instance->on_interpolate_transform_list) { + _interpolation_data.instance_transform_update_list_curr->push_back(p_instance); + instance->on_interpolate_transform_list = true; + } else { + DEV_ASSERT(_interpolation_data.instance_transform_update_list_curr->size()); + } + + // If the instance is invisible, then we are simply updating the data flow, there is no need to calculate the interpolated + // transform or anything else. + // Ideally we would not even call the VisualServer::set_transform() when invisible but that would entail having logic + // to keep track of the previous transform on the SceneTree side. The "early out" below is less efficient but a lot cleaner codewise. + if (!instance->visible) { + return; + } + + // Decide on the interpolation method... slerp if possible. + instance->interpolation_method = TransformInterpolator::find_method(instance->transform_prev.basis, instance->transform_curr.basis); + + if (!instance->on_interpolate_list) { + _interpolation_data.instance_interpolate_update_list.push_back(p_instance); + instance->on_interpolate_list = true; + } else { + DEV_ASSERT(_interpolation_data.instance_interpolate_update_list.size()); + } + _instance_queue_update(instance, true); + +#if defined(DEBUG_ENABLED) && defined(TOOLS_ENABLED) + if (!Engine::get_singleton()->is_in_physics_frame()) { + PHYSICS_INTERPOLATION_NODE_WARNING(instance->object_id, "Interpolated instance triggered from outside physics process"); + } +#endif +} + +void RendererSceneCull::instance_set_interpolated(RID p_instance, bool p_interpolated) { + Instance *instance = instance_owner.get_or_null(p_instance); + ERR_FAIL_NULL(instance); + instance->interpolated = p_interpolated; +} + +void RendererSceneCull::instance_reset_physics_interpolation(RID p_instance) { + Instance *instance = instance_owner.get_or_null(p_instance); + ERR_FAIL_NULL(instance); + + if (_interpolation_data.interpolation_enabled && instance->interpolated) { + instance->transform_prev = instance->transform_curr; + instance->transform_checksum_prev = instance->transform_checksum_curr; + +#ifdef RENDERING_SERVER_DEBUG_PHYSICS_INTERPOLATION + print_line("instance_reset_physics_interpolation .. tick " + itos(Engine::get_singleton()->get_physics_frames())); + print_line("\tprev " + rtos(instance->transform_prev.origin.x) + ", curr " + rtos(instance->transform_curr.origin.x)); +#endif + } } void RendererSceneCull::instance_attach_object_instance_id(RID p_instance, ObjectID p_id) { @@ -990,6 +1109,23 @@ void RendererSceneCull::instance_set_visible(RID p_instance, bool p_visible) { if (p_visible) { if (instance->scenario != nullptr) { + // Special case for physics interpolation, we want to ensure the interpolated data is up to date + if (_interpolation_data.interpolation_enabled && instance->interpolated && !instance->on_interpolate_list) { + // Do all the extra work we normally do on instance_set_transform(), because this is optimized out for hidden instances. + // This prevents a glitch of stale interpolation transform data when unhiding before the next physics tick. + instance->interpolation_method = TransformInterpolator::find_method(instance->transform_prev.basis, instance->transform_curr.basis); + _interpolation_data.instance_interpolate_update_list.push_back(p_instance); + instance->on_interpolate_list = true; + + // We must also place on the transform update list for a tick, so the system + // can auto-detect if the instance is no longer moving, and remove from the interpolate lists again. + // If this step is ignored, an unmoving instance could remain on the interpolate lists indefinitely + // (or rather until the object is deleted) and cause unnecessary updates and drawcalls. + if (!instance->on_interpolate_transform_list) { + _interpolation_data.instance_transform_update_list_curr->push_back(p_instance); + instance->on_interpolate_transform_list = true; + } + } _instance_queue_update(instance, true, false); } } else if (instance->indexer_id.is_valid()) { @@ -1574,11 +1710,22 @@ void RendererSceneCull::instance_geometry_get_shader_parameter_list(RID p_instan void RendererSceneCull::_update_instance(Instance *p_instance) { p_instance->version++; + // When not using interpolation the transform is used straight. + const Transform3D *instance_xform = &p_instance->transform; + + // Can possibly use the most up to date current transform here when using physics interpolation ... + // uncomment the next line for this.. + //if (_interpolation_data.interpolation_enabled && p_instance->interpolated) { + // instance_xform = &p_instance->transform_curr; + //} + // However it does seem that using the interpolated transform (transform) works for keeping AABBs + // up to date to avoid culling errors. + if (p_instance->base_type == RS::INSTANCE_LIGHT) { InstanceLightData *light = static_cast<InstanceLightData *>(p_instance->base_data); - RSG::light_storage->light_instance_set_transform(light->instance, p_instance->transform); - RSG::light_storage->light_instance_set_aabb(light->instance, p_instance->transform.xform(p_instance->aabb)); + RSG::light_storage->light_instance_set_transform(light->instance, *instance_xform); + RSG::light_storage->light_instance_set_aabb(light->instance, instance_xform->xform(p_instance->aabb)); light->make_shadow_dirty(); RS::LightBakeMode bake_mode = RSG::light_storage->light_get_bake_mode(p_instance->base); @@ -1601,7 +1748,7 @@ void RendererSceneCull::_update_instance(Instance *p_instance) { } else if (p_instance->base_type == RS::INSTANCE_REFLECTION_PROBE) { InstanceReflectionProbeData *reflection_probe = static_cast<InstanceReflectionProbeData *>(p_instance->base_data); - RSG::light_storage->reflection_probe_instance_set_transform(reflection_probe->instance, p_instance->transform); + RSG::light_storage->reflection_probe_instance_set_transform(reflection_probe->instance, *instance_xform); if (p_instance->scenario && p_instance->array_index >= 0) { InstanceData &idata = p_instance->scenario->instance_data[p_instance->array_index]; @@ -1610,17 +1757,17 @@ void RendererSceneCull::_update_instance(Instance *p_instance) { } else if (p_instance->base_type == RS::INSTANCE_DECAL) { InstanceDecalData *decal = static_cast<InstanceDecalData *>(p_instance->base_data); - RSG::texture_storage->decal_instance_set_transform(decal->instance, p_instance->transform); + RSG::texture_storage->decal_instance_set_transform(decal->instance, *instance_xform); } else if (p_instance->base_type == RS::INSTANCE_LIGHTMAP) { InstanceLightmapData *lightmap = static_cast<InstanceLightmapData *>(p_instance->base_data); - RSG::light_storage->lightmap_instance_set_transform(lightmap->instance, p_instance->transform); + RSG::light_storage->lightmap_instance_set_transform(lightmap->instance, *instance_xform); } else if (p_instance->base_type == RS::INSTANCE_VOXEL_GI) { InstanceVoxelGIData *voxel_gi = static_cast<InstanceVoxelGIData *>(p_instance->base_data); - scene_render->voxel_gi_instance_set_transform_to_data(voxel_gi->probe_instance, p_instance->transform); + scene_render->voxel_gi_instance_set_transform_to_data(voxel_gi->probe_instance, *instance_xform); } else if (p_instance->base_type == RS::INSTANCE_PARTICLES) { - RSG::particles_storage->particles_set_emission_transform(p_instance->base, p_instance->transform); + RSG::particles_storage->particles_set_emission_transform(p_instance->base, *instance_xform); } else if (p_instance->base_type == RS::INSTANCE_PARTICLES_COLLISION) { InstanceParticlesCollisionData *collision = static_cast<InstanceParticlesCollisionData *>(p_instance->base_data); @@ -1628,13 +1775,13 @@ void RendererSceneCull::_update_instance(Instance *p_instance) { if (RSG::particles_storage->particles_collision_is_heightfield(p_instance->base)) { heightfield_particle_colliders_update_list.insert(p_instance); } - RSG::particles_storage->particles_collision_instance_set_transform(collision->instance, p_instance->transform); + RSG::particles_storage->particles_collision_instance_set_transform(collision->instance, *instance_xform); } else if (p_instance->base_type == RS::INSTANCE_FOG_VOLUME) { InstanceFogVolumeData *volume = static_cast<InstanceFogVolumeData *>(p_instance->base_data); - scene_render->fog_volume_instance_set_transform(volume->instance, p_instance->transform); + scene_render->fog_volume_instance_set_transform(volume->instance, *instance_xform); } else if (p_instance->base_type == RS::INSTANCE_OCCLUDER) { if (p_instance->scenario) { - RendererSceneOcclusionCull::get_singleton()->scenario_set_instance(p_instance->scenario->self, p_instance->self, p_instance->base, p_instance->transform, p_instance->visible); + RendererSceneOcclusionCull::get_singleton()->scenario_set_instance(p_instance->scenario->self, p_instance->self, p_instance->base, *instance_xform, p_instance->visible); } } @@ -1654,7 +1801,7 @@ void RendererSceneCull::_update_instance(Instance *p_instance) { } AABB new_aabb; - new_aabb = p_instance->transform.xform(p_instance->aabb); + new_aabb = instance_xform->xform(p_instance->aabb); p_instance->transformed_aabb = new_aabb; if ((1 << p_instance->base_type) & RS::INSTANCE_GEOMETRY_MASK) { @@ -1681,11 +1828,11 @@ void RendererSceneCull::_update_instance(Instance *p_instance) { } ERR_FAIL_NULL(geom->geometry_instance); - geom->geometry_instance->set_transform(p_instance->transform, p_instance->aabb, p_instance->transformed_aabb); + geom->geometry_instance->set_transform(*instance_xform, p_instance->aabb, p_instance->transformed_aabb); } // note: we had to remove is equal approx check here, it meant that det == 0.000004 won't work, which is the case for some of our scenes. - if (p_instance->scenario == nullptr || !p_instance->visible || p_instance->transform.basis.determinant() == 0) { + if (p_instance->scenario == nullptr || !p_instance->visible || instance_xform->basis.determinant() == 0) { p_instance->prev_transformed_aabb = p_instance->transformed_aabb; return; } @@ -3089,7 +3236,7 @@ void RendererSceneCull::_render_scene(const RendererSceneRender::CameraData *p_c Vector<Instance *> lights_with_shadow; for (Instance *E : scenario->directional_lights) { - if (!E->visible) { + if (!E->visible || !(E->layer_mask & p_visible_layers)) { continue; } @@ -4180,6 +4327,8 @@ bool RendererSceneCull::free(RID p_rid) { Instance *instance = instance_owner.get_or_null(p_rid); + _interpolation_data.notify_free_instance(p_rid, *instance); + instance_geometry_set_lightmap(p_rid, RID(), Rect2(), 0); instance_set_scenario(p_rid, RID()); instance_set_base(p_rid, RID()); @@ -4240,6 +4389,106 @@ void RendererSceneCull::set_scene_render(RendererSceneRender *p_scene_render) { geometry_instance_pair_mask = scene_render->geometry_instance_get_pair_mask(); } +/* INTERPOLATION API */ + +void RendererSceneCull::update_interpolation_tick(bool p_process) { + // TODO (MultiMesh): Update interpolation in storage. + + // INSTANCES + + // Detect any that were on the previous transform list that are no longer active; + // we should remove them from the interpolate list. + + for (const RID &rid : *_interpolation_data.instance_transform_update_list_prev) { + Instance *instance = instance_owner.get_or_null(rid); + + bool active = true; + + // No longer active? (Either the instance deleted or no longer being transformed.) + if (instance && !instance->on_interpolate_transform_list) { + active = false; + instance->on_interpolate_list = false; + + // Make sure the most recent transform is set... + instance->transform = instance->transform_curr; + + // ... and that both prev and current are the same, just in case of any interpolations. + instance->transform_prev = instance->transform_curr; + + // Make sure instances are updated one more time to ensure the AABBs are correct. + _instance_queue_update(instance, true); + } + + if (!instance) { + active = false; + } + + if (!active) { + _interpolation_data.instance_interpolate_update_list.erase(rid); + } + } + + // Now for any in the transform list (being actively interpolated), keep the previous transform + // value up to date, ready for the next tick. + if (p_process) { + for (const RID &rid : *_interpolation_data.instance_transform_update_list_curr) { + Instance *instance = instance_owner.get_or_null(rid); + if (instance) { + instance->transform_prev = instance->transform_curr; + instance->transform_checksum_prev = instance->transform_checksum_curr; + instance->on_interpolate_transform_list = false; + } + } + } + + // We maintain a mirror list for the transform updates, so we can detect when an instance + // is no longer being transformed, and remove it from the interpolate list. + SWAP(_interpolation_data.instance_transform_update_list_curr, _interpolation_data.instance_transform_update_list_prev); + + // Prepare for the next iteration. + _interpolation_data.instance_transform_update_list_curr->clear(); +} + +void RendererSceneCull::update_interpolation_frame(bool p_process) { + // TODO (MultiMesh): Update interpolation in storage. + + if (p_process) { + real_t f = Engine::get_singleton()->get_physics_interpolation_fraction(); + + for (const RID &rid : _interpolation_data.instance_interpolate_update_list) { + Instance *instance = instance_owner.get_or_null(rid); + if (instance) { + TransformInterpolator::interpolate_transform_3d_via_method(instance->transform_prev, instance->transform_curr, instance->transform, f, instance->interpolation_method); + +#ifdef RENDERING_SERVER_DEBUG_PHYSICS_INTERPOLATION + print_line("\t\tinterpolated: " + rtos(instance->transform.origin.x) + "\t( prev " + rtos(instance->transform_prev.origin.x) + ", curr " + rtos(instance->transform_curr.origin.x) + " ) on tick " + itos(Engine::get_singleton()->get_physics_frames())); +#endif + + // Make sure AABBs are constantly up to date through the interpolation. + _instance_queue_update(instance, true); + } + } + } +} + +void RendererSceneCull::set_physics_interpolation_enabled(bool p_enabled) { + _interpolation_data.interpolation_enabled = p_enabled; +} + +void RendererSceneCull::InterpolationData::notify_free_instance(RID p_rid, Instance &r_instance) { + r_instance.on_interpolate_list = false; + r_instance.on_interpolate_transform_list = false; + + if (!interpolation_enabled) { + return; + } + + // If the instance was on any of the lists, remove. + instance_interpolate_update_list.erase_multiple_unordered(p_rid); + instance_transform_update_list_curr->erase_multiple_unordered(p_rid); + instance_transform_update_list_prev->erase_multiple_unordered(p_rid); +} + RendererSceneCull::RendererSceneCull() { render_pass = 1; singleton = this; diff --git a/servers/rendering/renderer_scene_cull.h b/servers/rendering/renderer_scene_cull.h index 0039d14475..53f1f2d246 100644 --- a/servers/rendering/renderer_scene_cull.h +++ b/servers/rendering/renderer_scene_cull.h @@ -32,6 +32,7 @@ #define RENDERER_SCENE_CULL_H #include "core/math/dynamic_bvh.h" +#include "core/math/transform_interpolator.h" #include "core/templates/bin_sorted_array.h" #include "core/templates/local_vector.h" #include "core/templates/paged_allocator.h" @@ -66,6 +67,11 @@ public: static RendererSceneCull *singleton; + /* EVENT QUEUING */ + + void tick(); + void pre_draw(bool p_will_draw); + /* CAMERA API */ struct Camera { @@ -406,8 +412,16 @@ public: RID mesh_instance; //only used for meshes and when skeleton/blendshapes exist + // This is the main transform to be drawn with ... + // This will either be the interpolated transform (when using fixed timestep interpolation) + // or the ONLY transform (when not using FTI). Transform3D transform; + // For interpolation we store the current transform (this physics tick) + // and the transform in the previous tick. + Transform3D transform_curr; + Transform3D transform_prev; + float lod_bias; bool ignore_occlusion_culling; @@ -418,13 +432,23 @@ public: RS::ShadowCastingSetting cast_shadows; uint32_t layer_mask; - //fit in 32 bits - bool mirror : 8; - bool receive_shadows : 8; - bool visible : 8; - bool baked_light : 2; //this flag is only to know if it actually did use baked light - bool dynamic_gi : 2; //same above for dynamic objects - bool redraw_if_visible : 4; + // Fit in 32 bits. + bool mirror : 1; + bool receive_shadows : 1; + bool visible : 1; + bool baked_light : 1; // This flag is only to know if it actually did use baked light. + bool dynamic_gi : 1; // Same as above for dynamic objects. + bool redraw_if_visible : 1; + + bool on_interpolate_list : 1; + bool on_interpolate_transform_list : 1; + bool interpolated : 1; + TransformInterpolator::Method interpolation_method : 3; + + // For fixed timestep interpolation. + // Note 32 bits is plenty for checksum, no need for real_t + float transform_checksum_curr; + float transform_checksum_prev; Instance *lightmap = nullptr; Rect2 lightmap_uv_scale; @@ -574,6 +598,14 @@ public: baked_light = true; dynamic_gi = false; redraw_if_visible = false; + + on_interpolate_list = false; + on_interpolate_transform_list = false; + interpolated = true; + interpolation_method = TransformInterpolator::INTERP_LERP; + transform_checksum_curr = 0.0; + transform_checksum_prev = 0.0; + lightmap_slice_index = 0; lightmap = nullptr; lightmap_cull_index = 0; @@ -1027,6 +1059,8 @@ public: virtual void instance_set_layer_mask(RID p_instance, uint32_t p_mask); virtual void instance_set_pivot_data(RID p_instance, float p_sorting_offset, bool p_use_aabb_center); virtual void instance_set_transform(RID p_instance, const Transform3D &p_transform); + virtual void instance_set_interpolated(RID p_instance, bool p_interpolated); + virtual void instance_reset_physics_interpolation(RID p_instance); virtual void instance_attach_object_instance_id(RID p_instance, ObjectID p_id); virtual void instance_set_blend_shape_weight(RID p_instance, int p_shape, float p_weight); virtual void instance_set_surface_override_material(RID p_instance, int p_surface, RID p_material); @@ -1393,6 +1427,22 @@ public: virtual void update_visibility_notifiers(); + /* INTERPOLATION */ + + void update_interpolation_tick(bool p_process = true); + void update_interpolation_frame(bool p_process = true); + virtual void set_physics_interpolation_enabled(bool p_enabled); + + struct InterpolationData { + void notify_free_instance(RID p_rid, Instance &r_instance); + LocalVector<RID> instance_interpolate_update_list; + LocalVector<RID> instance_transform_update_lists[2]; + LocalVector<RID> *instance_transform_update_list_curr = &instance_transform_update_lists[0]; + LocalVector<RID> *instance_transform_update_list_prev = &instance_transform_update_lists[1]; + + bool interpolation_enabled = false; + } _interpolation_data; + RendererSceneCull(); virtual ~RendererSceneCull(); }; diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp index 22044a8c2d..da48b24a1a 100644 --- a/servers/rendering/rendering_device.cpp +++ b/servers/rendering/rendering_device.cpp @@ -5065,13 +5065,19 @@ void RenderingDevice::swap_buffers() { void RenderingDevice::submit() { _THREAD_SAFE_METHOD_ + ERR_FAIL_COND_MSG(is_main_instance, "Only local devices can submit and sync."); + ERR_FAIL_COND_MSG(local_device_processing, "device already submitted, call sync to wait until done."); _end_frame(); _execute_frame(false); + local_device_processing = true; } void RenderingDevice::sync() { _THREAD_SAFE_METHOD_ + ERR_FAIL_COND_MSG(is_main_instance, "Only local devices can submit and sync."); + ERR_FAIL_COND_MSG(!local_device_processing, "sync can only be called after a submit"); _begin_frame(); + local_device_processing = false; } void RenderingDevice::_free_pending_resources(int p_frame) { @@ -5323,7 +5329,7 @@ Error RenderingDevice::initialize(RenderingContextDriver *p_context, DisplayServ Error err; RenderingContextDriver::SurfaceID main_surface = 0; - const bool main_instance = (singleton == this) && (p_main_window != DisplayServer::INVALID_WINDOW_ID); + is_main_instance = (singleton == this) && (p_main_window != DisplayServer::INVALID_WINDOW_ID); if (p_main_window != DisplayServer::INVALID_WINDOW_ID) { // Retrieve the surface from the main window if it was specified. main_surface = p_context->surface_get_from_window(p_main_window); @@ -5371,7 +5377,7 @@ Error RenderingDevice::initialize(RenderingContextDriver *p_context, DisplayServ err = driver->initialize(device_index, frame_count); ERR_FAIL_COND_V_MSG(err != OK, FAILED, "Failed to initialize driver for device."); - if (main_instance) { + if (is_main_instance) { // Only the singleton instance with a display should print this information. String rendering_method; if (OS::get_singleton()->get_current_rendering_method() == "mobile") { @@ -5499,7 +5505,7 @@ Error RenderingDevice::initialize(RenderingContextDriver *p_context, DisplayServ compute_list = nullptr; bool project_pipeline_cache_enable = GLOBAL_GET("rendering/rendering_device/pipeline_cache/enable"); - if (main_instance && project_pipeline_cache_enable) { + if (is_main_instance && project_pipeline_cache_enable) { // Only the instance that is not a local device and is also the singleton is allowed to manage a pipeline cache. pipeline_cache_file_path = vformat("user://vulkan/pipelines.%s.%s", OS::get_singleton()->get_current_rendering_method(), diff --git a/servers/rendering/rendering_device.h b/servers/rendering/rendering_device.h index 38ffd5d23d..52f086e54f 100644 --- a/servers/rendering/rendering_device.h +++ b/servers/rendering/rendering_device.h @@ -88,6 +88,9 @@ private: RenderingDeviceDriver *driver = nullptr; RenderingContextDriver::Device device; + bool local_device_processing = false; + bool is_main_instance = false; + protected: static void _bind_methods(); diff --git a/servers/rendering/rendering_method.h b/servers/rendering/rendering_method.h index aa5e7d83cc..57fbf97d8c 100644 --- a/servers/rendering/rendering_method.h +++ b/servers/rendering/rendering_method.h @@ -83,6 +83,8 @@ public: virtual void instance_set_layer_mask(RID p_instance, uint32_t p_mask) = 0; virtual void instance_set_pivot_data(RID p_instance, float p_sorting_offset, bool p_use_aabb_center) = 0; virtual void instance_set_transform(RID p_instance, const Transform3D &p_transform) = 0; + virtual void instance_set_interpolated(RID p_instance, bool p_interpolated) = 0; + virtual void instance_reset_physics_interpolation(RID p_instance) = 0; virtual void instance_attach_object_instance_id(RID p_instance, ObjectID p_id) = 0; virtual void instance_set_blend_shape_weight(RID p_instance, int p_shape, float p_weight) = 0; virtual void instance_set_surface_override_material(RID p_instance, int p_surface, RID p_material) = 0; @@ -350,6 +352,16 @@ public: virtual bool free(RID p_rid) = 0; + /* Physics interpolation */ + + virtual void update_interpolation_tick(bool p_process = true) = 0; + virtual void set_physics_interpolation_enabled(bool p_enabled) = 0; + + /* Event queueing */ + + virtual void tick() = 0; + virtual void pre_draw(bool p_will_draw) = 0; + RenderingMethod(); virtual ~RenderingMethod(); }; diff --git a/servers/rendering/rendering_server_constants.h b/servers/rendering/rendering_server_constants.h new file mode 100644 index 0000000000..6d27a3a022 --- /dev/null +++ b/servers/rendering/rendering_server_constants.h @@ -0,0 +1,48 @@ +/**************************************************************************/ +/* rendering_server_constants.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* 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: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* 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. */ +/**************************************************************************/ + +#ifndef RENDERING_SERVER_CONSTANTS_H +#define RENDERING_SERVER_CONSTANTS_H + +// Use for constants etc. that need not be included as often as rendering_server.h +// to reduce dependencies and prevent slow compilation. + +// This is a "cheap" include, and can be used from scene side code as well as servers. + +// N.B. ONLY allow these defined in DEV_ENABLED builds, they will slow +// performance, and are only necessary to use for debugging. +#ifdef DEV_ENABLED + +// Uncomment this define to produce debugging output for physics interpolation. +//#define RENDERING_SERVER_DEBUG_PHYSICS_INTERPOLATION + +#endif // DEV_ENABLED + +#endif // RENDERING_SERVER_CONSTANTS_H diff --git a/servers/rendering/rendering_server_default.cpp b/servers/rendering/rendering_server_default.cpp index 51ff009eaf..86efccef9a 100644 --- a/servers/rendering/rendering_server_default.cpp +++ b/servers/rendering/rendering_server_default.cpp @@ -381,12 +381,9 @@ void RenderingServerDefault::_thread_loop() { /* INTERPOLATION */ -void RenderingServerDefault::tick() { - RSG::canvas->tick(); -} - void RenderingServerDefault::set_physics_interpolation_enabled(bool p_enabled) { RSG::canvas->set_physics_interpolation_enabled(p_enabled); + RSG::scene->set_physics_interpolation_enabled(p_enabled); } /* EVENT QUEUING */ @@ -411,6 +408,15 @@ void RenderingServerDefault::draw(bool p_swap_buffers, double frame_step) { } } +void RenderingServerDefault::tick() { + RSG::canvas->tick(); + RSG::scene->tick(); +} + +void RenderingServerDefault::pre_draw(bool p_will_draw) { + RSG::scene->pre_draw(p_will_draw); +} + void RenderingServerDefault::_call_on_render_thread(const Callable &p_callable) { p_callable.call(); } diff --git a/servers/rendering/rendering_server_default.h b/servers/rendering/rendering_server_default.h index 164ec3cc09..6e195a8002 100644 --- a/servers/rendering/rendering_server_default.h +++ b/servers/rendering/rendering_server_default.h @@ -802,6 +802,8 @@ public: FUNC2(instance_set_layer_mask, RID, uint32_t) FUNC3(instance_set_pivot_data, RID, float, bool) FUNC2(instance_set_transform, RID, const Transform3D &) + FUNC2(instance_set_interpolated, RID, bool) + FUNC1(instance_reset_physics_interpolation, RID) FUNC2(instance_attach_object_instance_id, RID, ObjectID) FUNC3(instance_set_blend_shape_weight, RID, int, float) FUNC3(instance_set_surface_override_material, RID, int, RID) @@ -1048,7 +1050,6 @@ public: /* INTERPOLATION */ - virtual void tick() override; virtual void set_physics_interpolation_enabled(bool p_enabled) override; /* EVENT QUEUING */ @@ -1060,6 +1061,8 @@ public: virtual bool has_changed() const override; virtual void init() override; virtual void finish() override; + virtual void tick() override; + virtual void pre_draw(bool p_will_draw) override; virtual bool is_on_render_thread() override { return Thread::get_caller_id() == server_thread; diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp index 0235d72cfa..9c4e3fb249 100644 --- a/servers/rendering/shader_language.cpp +++ b/servers/rendering/shader_language.cpp @@ -898,6 +898,13 @@ bool ShaderLanguage::_lookup_next(Token &r_tk) { return false; } +ShaderLanguage::Token ShaderLanguage::_peek() { + TkPos pre_pos = _get_tkpos(); + Token tk = _get_token(); + _set_tkpos(pre_pos); + return tk; +} + String ShaderLanguage::token_debug(const String &p_code) { clear(); @@ -8080,6 +8087,11 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun _set_error(RTR("The middle expression is expected to be a boolean operator.")); return ERR_PARSE_ERROR; } + tk = _peek(); + if (tk.type == TK_SEMICOLON) { + _set_error(vformat(RTR("Expected expression, found: '%s'."), get_token_text(tk))); + return ERR_PARSE_ERROR; + } continue; } if (tk.type != TK_SEMICOLON) { @@ -8088,6 +8100,11 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun } } else if (p_block->block_type == BlockNode::BLOCK_TYPE_FOR_EXPRESSION) { if (tk.type == TK_COMMA) { + tk = _peek(); + if (tk.type == TK_PARENTHESIS_CLOSE) { + _set_error(vformat(RTR("Expected expression, found: '%s'."), get_token_text(tk))); + return ERR_PARSE_ERROR; + } continue; } if (tk.type != TK_PARENTHESIS_CLOSE) { @@ -9217,6 +9234,7 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f tk = _get_token(); if (tk.type == TK_IDENTIFIER) { current_uniform_group_name = tk.text; + current_uniform_subgroup_name = ""; tk = _get_token(); if (tk.type == TK_PERIOD) { tk = _get_token(); diff --git a/servers/rendering/shader_language.h b/servers/rendering/shader_language.h index 4a67c8f2d2..ad3b78546d 100644 --- a/servers/rendering/shader_language.h +++ b/servers/rendering/shader_language.h @@ -1037,6 +1037,7 @@ private: Token _make_token(TokenType p_type, const StringName &p_text = StringName()); Token _get_token(); bool _lookup_next(Token &r_tk); + Token _peek(); ShaderNode *shader = nullptr; diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp index 70b585d683..9fc67b04b1 100644 --- a/servers/rendering_server.cpp +++ b/servers/rendering_server.cpp @@ -3116,6 +3116,8 @@ void RenderingServer::_bind_methods() { ClassDB::bind_method(D_METHOD("instance_set_layer_mask", "instance", "mask"), &RenderingServer::instance_set_layer_mask); ClassDB::bind_method(D_METHOD("instance_set_pivot_data", "instance", "sorting_offset", "use_aabb_center"), &RenderingServer::instance_set_pivot_data); ClassDB::bind_method(D_METHOD("instance_set_transform", "instance", "transform"), &RenderingServer::instance_set_transform); + ClassDB::bind_method(D_METHOD("instance_set_interpolated", "instance", "interpolated"), &RenderingServer::instance_set_interpolated); + ClassDB::bind_method(D_METHOD("instance_reset_physics_interpolation", "instance"), &RenderingServer::instance_reset_physics_interpolation); ClassDB::bind_method(D_METHOD("instance_attach_object_instance_id", "instance", "id"), &RenderingServer::instance_attach_object_instance_id); ClassDB::bind_method(D_METHOD("instance_set_blend_shape_weight", "instance", "shape", "weight"), &RenderingServer::instance_set_blend_shape_weight); ClassDB::bind_method(D_METHOD("instance_set_surface_override_material", "instance", "surface", "material"), &RenderingServer::instance_set_surface_override_material); diff --git a/servers/rendering_server.h b/servers/rendering_server.h index 693c822488..8450cb0198 100644 --- a/servers/rendering_server.h +++ b/servers/rendering_server.h @@ -1334,6 +1334,8 @@ public: virtual void instance_set_layer_mask(RID p_instance, uint32_t p_mask) = 0; virtual void instance_set_pivot_data(RID p_instance, float p_sorting_offset, bool p_use_aabb_center) = 0; virtual void instance_set_transform(RID p_instance, const Transform3D &p_transform) = 0; + virtual void instance_set_interpolated(RID p_instance, bool p_interpolated) = 0; + virtual void instance_reset_physics_interpolation(RID p_instance) = 0; virtual void instance_attach_object_instance_id(RID p_instance, ObjectID p_id) = 0; virtual void instance_set_blend_shape_weight(RID p_instance, int p_shape, float p_weight) = 0; virtual void instance_set_surface_override_material(RID p_instance, int p_surface, RID p_material) = 0; @@ -1647,7 +1649,6 @@ public: /* INTERPOLATION */ - virtual void tick() = 0; virtual void set_physics_interpolation_enabled(bool p_enabled) = 0; /* EVENT QUEUING */ @@ -1659,6 +1660,8 @@ public: virtual bool has_changed() const = 0; virtual void init(); virtual void finish() = 0; + virtual void tick() = 0; + virtual void pre_draw(bool p_will_draw) = 0; /* STATUS INFORMATION */ diff --git a/servers/text/text_server_dummy.h b/servers/text/text_server_dummy.h index a5ab444f55..1a945ac221 100644 --- a/servers/text/text_server_dummy.h +++ b/servers/text/text_server_dummy.h @@ -88,6 +88,7 @@ public: virtual int64_t font_get_char_from_glyph_index(const RID &p_font_rid, int64_t p_size, int64_t p_glyph_index) const override { return 0; } virtual bool font_has_char(const RID &p_font_rid, int64_t p_char) const override { return false; } virtual String font_get_supported_chars(const RID &p_font_rid) const override { return String(); } + virtual PackedInt32Array font_get_supported_glyphs(const RID &p_font_rid) const override { return PackedInt32Array(); }; virtual void font_draw_glyph(const RID &p_font_rid, const RID &p_canvas, int64_t p_size, const Vector2 &p_pos, int64_t p_index, const Color &p_color) const override {} virtual void font_draw_glyph_outline(const RID &p_font_rid, const RID &p_canvas, int64_t p_size, int64_t p_outline_size, const Vector2 &p_pos, int64_t p_index, const Color &p_color) const override {} diff --git a/servers/text/text_server_extension.cpp b/servers/text/text_server_extension.cpp index 509d49a1e4..d387c8ff7e 100644 --- a/servers/text/text_server_extension.cpp +++ b/servers/text/text_server_extension.cpp @@ -196,6 +196,7 @@ void TextServerExtension::_bind_methods() { GDVIRTUAL_BIND(_font_has_char, "font_rid", "char"); GDVIRTUAL_BIND(_font_get_supported_chars, "font_rid"); + GDVIRTUAL_BIND(_font_get_supported_glyphs, "font_rid"); GDVIRTUAL_BIND(_font_render_range, "font_rid", "size", "start", "end"); GDVIRTUAL_BIND(_font_render_glyph, "font_rid", "size", "index"); @@ -927,6 +928,12 @@ String TextServerExtension::font_get_supported_chars(const RID &p_font_rid) cons return ret; } +PackedInt32Array TextServerExtension::font_get_supported_glyphs(const RID &p_font_rid) const { + PackedInt32Array ret; + GDVIRTUAL_REQUIRED_CALL(_font_get_supported_glyphs, p_font_rid, ret); + return ret; +} + void TextServerExtension::font_render_range(const RID &p_font_rid, const Vector2i &p_size, int64_t p_start, int64_t p_end) { GDVIRTUAL_CALL(_font_render_range, p_font_rid, p_size, p_start, p_end); } diff --git a/servers/text/text_server_extension.h b/servers/text/text_server_extension.h index 16a03b6592..52654c010c 100644 --- a/servers/text/text_server_extension.h +++ b/servers/text/text_server_extension.h @@ -323,8 +323,10 @@ public: virtual bool font_has_char(const RID &p_font_rid, int64_t p_char) const override; virtual String font_get_supported_chars(const RID &p_font_rid) const override; + virtual PackedInt32Array font_get_supported_glyphs(const RID &p_font_rid) const override; GDVIRTUAL2RC(bool, _font_has_char, RID, int64_t); GDVIRTUAL1RC(String, _font_get_supported_chars, RID); + GDVIRTUAL1RC(PackedInt32Array, _font_get_supported_glyphs, RID); virtual void font_render_range(const RID &p_font, const Vector2i &p_size, int64_t p_start, int64_t p_end) override; virtual void font_render_glyph(const RID &p_font_rid, const Vector2i &p_size, int64_t p_index) override; diff --git a/servers/text_server.cpp b/servers/text_server.cpp index e7a1511064..f391c79514 100644 --- a/servers/text_server.cpp +++ b/servers/text_server.cpp @@ -352,6 +352,7 @@ void TextServer::_bind_methods() { ClassDB::bind_method(D_METHOD("font_has_char", "font_rid", "char"), &TextServer::font_has_char); ClassDB::bind_method(D_METHOD("font_get_supported_chars", "font_rid"), &TextServer::font_get_supported_chars); + ClassDB::bind_method(D_METHOD("font_get_supported_glyphs", "font_rid"), &TextServer::font_get_supported_glyphs); ClassDB::bind_method(D_METHOD("font_render_range", "font_rid", "size", "start", "end"), &TextServer::font_render_range); ClassDB::bind_method(D_METHOD("font_render_glyph", "font_rid", "size", "index"), &TextServer::font_render_glyph); @@ -1563,7 +1564,7 @@ int64_t TextServer::shaped_text_prev_grapheme_pos(const RID &p_shaped, int64_t p int64_t TextServer::shaped_text_prev_character_pos(const RID &p_shaped, int64_t p_pos) const { const PackedInt32Array &chars = shaped_text_get_character_breaks(p_shaped); - int64_t prev = 0; + int64_t prev = shaped_text_get_range(p_shaped).x; for (const int32_t &E : chars) { if (E >= p_pos) { return prev; @@ -1575,7 +1576,7 @@ int64_t TextServer::shaped_text_prev_character_pos(const RID &p_shaped, int64_t int64_t TextServer::shaped_text_next_character_pos(const RID &p_shaped, int64_t p_pos) const { const PackedInt32Array &chars = shaped_text_get_character_breaks(p_shaped); - int64_t prev = 0; + int64_t prev = shaped_text_get_range(p_shaped).x; for (const int32_t &E : chars) { if (E > p_pos) { return E; @@ -1587,7 +1588,7 @@ int64_t TextServer::shaped_text_next_character_pos(const RID &p_shaped, int64_t int64_t TextServer::shaped_text_closest_character_pos(const RID &p_shaped, int64_t p_pos) const { const PackedInt32Array &chars = shaped_text_get_character_breaks(p_shaped); - int64_t prev = 0; + int64_t prev = shaped_text_get_range(p_shaped).x; for (const int32_t &E : chars) { if (E == p_pos) { return E; diff --git a/servers/text_server.h b/servers/text_server.h index a77953e6f2..ba3fdaa35e 100644 --- a/servers/text_server.h +++ b/servers/text_server.h @@ -396,6 +396,7 @@ public: virtual bool font_has_char(const RID &p_font_rid, int64_t p_char) const = 0; virtual String font_get_supported_chars(const RID &p_font_rid) const = 0; + virtual PackedInt32Array font_get_supported_glyphs(const RID &p_font_rid) const = 0; virtual void font_render_range(const RID &p_font, const Vector2i &p_size, int64_t p_start, int64_t p_end) = 0; virtual void font_render_glyph(const RID &p_font_rid, const Vector2i &p_size, int64_t p_index) = 0; diff --git a/tests/core/object/test_class_db.h b/tests/core/object/test_class_db.h index c1aa39031d..d2d7b6a8b2 100644 --- a/tests/core/object/test_class_db.h +++ b/tests/core/object/test_class_db.h @@ -139,6 +139,7 @@ struct NamesCache { StringName vector2_type = StaticCString::create("Vector2"); StringName rect2_type = StaticCString::create("Rect2"); StringName vector3_type = StaticCString::create("Vector3"); + StringName vector4_type = StaticCString::create("Vector4"); // Object not included as it must be checked for all derived classes static constexpr int nullable_types_count = 18; @@ -247,6 +248,8 @@ bool arg_default_value_is_assignable_to_type(const Context &p_context, const Var case Variant::VECTOR2: case Variant::RECT2: case Variant::VECTOR3: + case Variant::VECTOR4: + case Variant::PROJECTION: case Variant::RID: case Variant::ARRAY: case Variant::DICTIONARY: @@ -274,13 +277,15 @@ bool arg_default_value_is_assignable_to_type(const Context &p_context, const Var case Variant::VECTOR3I: return p_arg_type.name == p_context.names_cache.vector3_type || p_arg_type.name == Variant::get_type_name(p_val.get_type()); - default: - if (r_err_msg) { - *r_err_msg = "Unexpected Variant type: " + itos(p_val.get_type()); - } + case Variant::VECTOR4I: + return p_arg_type.name == p_context.names_cache.vector4_type || + p_arg_type.name == Variant::get_type_name(p_val.get_type()); + case Variant::VARIANT_MAX: break; } - + if (r_err_msg) { + *r_err_msg = "Unexpected Variant type: " + itos(p_val.get_type()); + } return false; } diff --git a/thirdparty/README.md b/thirdparty/README.md index 9a56f6baa4..47618d675b 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -845,7 +845,7 @@ Files extracted from upstream source: Some downstream changes have been made and are identified by `// -- GODOT begin --` and `// -- GODOT end --` comments. They can be reapplied using the patches included in the `patches` -folder. +folder, in order. ## squish diff --git a/thirdparty/spirv-reflect/patches/specialization-constants.patch b/thirdparty/spirv-reflect/patches/1-specialization-constants.patch index ff11841451..ff11841451 100644 --- a/thirdparty/spirv-reflect/patches/specialization-constants.patch +++ b/thirdparty/spirv-reflect/patches/1-specialization-constants.patch diff --git a/thirdparty/spirv-reflect/patches/2-zero-size-for-sc-sized-arrays.patch b/thirdparty/spirv-reflect/patches/2-zero-size-for-sc-sized-arrays.patch new file mode 100644 index 0000000000..dbf6069d07 --- /dev/null +++ b/thirdparty/spirv-reflect/patches/2-zero-size-for-sc-sized-arrays.patch @@ -0,0 +1,18 @@ +diff --git a/thirdparty/spirv-reflect/spirv_reflect.c b/thirdparty/spirv-reflect/spirv_reflect.c +index c96dd85439..2ca9c8580d 100644 +--- a/thirdparty/spirv-reflect/spirv_reflect.c ++++ b/thirdparty/spirv-reflect/spirv_reflect.c +@@ -2692,6 +2692,13 @@ static SpvReflectResult ParseDescriptorBlockVariableSizes(SpvReflectPrvParser* p + // ...then array + uint32_t element_count = (p_member_var->array.dims_count > 0 ? 1 : 0); + for (uint32_t i = 0; i < p_member_var->array.dims_count; ++i) { ++// -- GODOT begin -- ++ if (p_member_var->array.spec_constant_op_ids[i] != (uint32_t)INVALID_VALUE) { ++ // Force size to be reported as 0 to effectively disable buffer size validation, since ++ // the value is unreliable anyway as only valid for the default values of the SCs involved. ++ element_count = 0; ++ } ++// -- GODOT end -- + element_count *= p_member_var->array.dims[i]; + } + p_member_var->size = element_count * p_member_var->array.stride; diff --git a/thirdparty/spirv-reflect/spirv_reflect.c b/thirdparty/spirv-reflect/spirv_reflect.c index c96dd85439..d6c926b40a 100644 --- a/thirdparty/spirv-reflect/spirv_reflect.c +++ b/thirdparty/spirv-reflect/spirv_reflect.c @@ -2692,6 +2692,13 @@ static SpvReflectResult ParseDescriptorBlockVariableSizes(SpvReflectPrvParser* p // ...then array uint32_t element_count = (p_member_var->array.dims_count > 0 ? 1 : 0); for (uint32_t i = 0; i < p_member_var->array.dims_count; ++i) { +// -- GODOT begin -- + if (p_member_var->array.spec_constant_op_ids[i] != (uint32_t)INVALID_VALUE) { + // Force size to be reported as 0 to effectively disable buffer size validation, since + // the value is unreliable anyway as only valid for the default values of the SCs involved. + element_count = 0; + } +// -- GODOT end -- element_count *= p_member_var->array.dims[i]; } p_member_var->size = element_count * p_member_var->array.stride; diff --git a/version.py b/version.py index 0430bddb71..22704a08cb 100644 --- a/version.py +++ b/version.py @@ -1,9 +1,9 @@ short_name = "godot" name = "Godot Engine" major = 4 -minor = 3 +minor = 4 patch = 0 -status = "rc" +status = "dev" module_config = "" website = "https://godotengine.org" docs = "latest" |