فهرست منبع

Merge branch 'master' into patch-1

Matthew 3 ماه پیش
والد
کامیت
a15f86bc03
100فایلهای تغییر یافته به همراه3896 افزوده شده و 2076 حذف شده
  1. 1 1
      .github/ISSUE_TEMPLATE/bug_report.md
  2. 8 0
      .github/ISSUE_TEMPLATE/config.yml
  3. 1 1
      .github/ISSUE_TEMPLATE/enhancement_request.md
  4. 3 1
      .github/dependabot.yml
  5. 34 6
      .github/workflows/build_offline_docs.yml
  6. 36 0
      .github/workflows/check_urls.yml
  7. 75 0
      .github/workflows/cherrypick.yml
  8. 30 12
      .github/workflows/ci.yml
  9. 13 5
      .github/workflows/sync_class_ref.yml
  10. 17 6
      .gitignore
  11. 32 0
      .lycheeignore
  12. 16 4
      .mailmap
  13. 17 0
      .pre-commit-config.yaml
  14. 20 3
      AUTHORS.md
  15. 13 21
      README.md
  16. 53 22
      _extensions/gdscript.py
  17. 0 6
      _static/css/algolia.css
  18. 67 0
      _static/css/custom.css
  19. 12 20
      _templates/layout.html
  20. 1 0
      _tools/codespell-dict.txt
  21. 3 0
      _tools/codespell-ignore.txt
  22. 0 42
      _tools/format.sh
  23. 5 5
      _tools/redirects/README.md
  24. 10 6
      _tools/redirects/redirects.csv
  25. 1 1
      _tools/redirects/requirements.txt
  26. 6 6
      about/complying_with_licenses.rst
  27. 162 68
      about/docs_changelog.rst
  28. 46 10
      about/faq.rst
  29. 19 14
      about/introduction.rst
  30. 42 41
      about/list_of_features.rst
  31. 26 18
      about/release_policy.rst
  32. 136 123
      about/system_requirements.rst
  33. 206 94
      classes/[email protected]
  34. 149 118
      classes/[email protected]
  35. 75 75
      classes/class_aabb.rst
  36. 51 23
      classes/class_acceptdialog.rst
  37. 8 8
      classes/class_aescontext.rst
  38. 2 2
      classes/class_animatablebody2d.rst
  39. 5 5
      classes/class_animatablebody3d.rst
  40. 32 35
      classes/class_animatedsprite2d.rst
  41. 27 30
      classes/class_animatedsprite3d.rst
  42. 12 12
      classes/class_animatedtexture.rst
  43. 269 91
      classes/class_animation.rst
  44. 24 10
      classes/class_animationlibrary.rst
  45. 148 67
      classes/class_animationmixer.rst
  46. 62 32
      classes/class_animationnode.rst
  47. 1 1
      classes/class_animationnodeadd3.rst
  48. 33 10
      classes/class_animationnodeanimation.rst
  49. 2 2
      classes/class_animationnodeblend2.rst
  50. 17 17
      classes/class_animationnodeblendspace1d.rst
  51. 28 28
      classes/class_animationnodeblendspace2d.rst
  52. 17 17
      classes/class_animationnodeblendtree.rst
  53. 94 0
      classes/class_animationnodeextension.rst
  54. 14 14
      classes/class_animationnodeoneshot.rst
  55. 2 2
      classes/class_animationnodeoutput.rst
  56. 24 26
      classes/class_animationnodestatemachine.rst
  57. 10 12
      classes/class_animationnodestatemachineplayback.rst
  58. 18 18
      classes/class_animationnodestatemachinetransition.rst
  59. 2 2
      classes/class_animationnodesync.rst
  60. 1 1
      classes/class_animationnodetimescale.rst
  61. 34 0
      classes/class_animationnodetimeseek.rst
  62. 13 13
      classes/class_animationnodetransition.rst
  63. 340 108
      classes/class_animationplayer.rst
  64. 8 8
      classes/class_animationtree.rst
  65. 35 35
      classes/class_area2d.rst
  66. 47 41
      classes/class_area3d.rst
  67. 352 211
      classes/class_array.rst
  68. 50 34
      classes/class_arraymesh.rst
  69. 9 5
      classes/class_arrayoccluder3d.rst
  70. 6 6
      classes/class_aspectratiocontainer.rst
  71. 36 32
      classes/class_astar2d.rst
  72. 62 44
      classes/class_astar3d.rst
  73. 99 81
      classes/class_astargrid2d.rst
  74. 6 6
      classes/class_atlastexture.rst
  75. 4 4
      classes/class_audioeffect.rst
  76. 25 4
      classes/class_audioeffectamplify.rst
  77. 10 10
      classes/class_audioeffectcapture.rst
  78. 39 39
      classes/class_audioeffectchorus.rst
  79. 7 7
      classes/class_audioeffectcompressor.rst
  80. 13 13
      classes/class_audioeffectdelay.rst
  81. 6 6
      classes/class_audioeffectdistortion.rst
  82. 3 3
      classes/class_audioeffecteq.rst
  83. 10 28
      classes/class_audioeffectfilter.rst
  84. 3 3
      classes/class_audioeffecthardlimiter.rst
  85. 5 5
      classes/class_audioeffectinstance.rst
  86. 4 4
      classes/class_audioeffectlimiter.rst
  87. 1 1
      classes/class_audioeffectpanner.rst
  88. 5 5
      classes/class_audioeffectphaser.rst
  89. 4 4
      classes/class_audioeffectpitchshift.rst
  90. 5 5
      classes/class_audioeffectrecord.rst
  91. 9 9
      classes/class_audioeffectreverb.rst
  92. 7 7
      classes/class_audioeffectspectrumanalyzer.rst
  93. 22 8
      classes/class_audioeffectspectrumanalyzerinstance.rst
  94. 6 10
      classes/class_audioeffectstereoenhance.rst
  95. 4 4
      classes/class_audiolistener2d.rst
  96. 6 6
      classes/class_audiolistener3d.rst
  97. 33 0
      classes/class_audiosample.rst
  98. 33 0
      classes/class_audiosampleplayback.rst
  99. 204 54
      classes/class_audioserver.rst
  100. 93 19
      classes/class_audiostream.rst

+ 1 - 1
.github/ISSUE_TEMPLATE/bug_report.md

@@ -2,7 +2,7 @@
 name: Bug report
 about: Report incorrect or outdated documentation
 title: ''
-labels: bug
+labels: ''
 assignees: ''
 ---
 

+ 8 - 0
.github/ISSUE_TEMPLATE/config.yml

@@ -4,3 +4,11 @@ contact_links:
   - name: Godot community channels
     url: https://godotengine.org/community
     about: Please ask for technical support on one of the other community channels, not here.
+
+  - name: Godot proposals
+    url: https://github.com/godotengine/godot-proposals
+    about: Please submit engine feature proposals on the Godot proposals repository, not here.
+
+  - name: Main Godot repository
+    url: https://github.com/godotengine/godot
+    about: Report engine bugs on the main Godot repository

+ 1 - 1
.github/ISSUE_TEMPLATE/enhancement_request.md

@@ -2,7 +2,7 @@
 name: Enhancement request
 about: Suggest new documentation or improving existing documentation
 title: ''
-labels: enhancement
+labels: ''
 assignees: ''
 ---
 

+ 3 - 1
.github/dependabot.yml

@@ -9,5 +9,7 @@ updates:
     schedule:
       interval: "daily"
     ignore:
-      # ReadTheDocs is staying on v1.
+      # We need to decide on when we upgrade Sphinx manually,
+      # as historically, this has been proven to often imply larger changes
+      # (RTD compat, upgrading extensions, other dependencies, our content, etc.).
       - dependency-name: "sphinx"

+ 34 - 6
.github/workflows/build_offline_docs.yml

@@ -8,27 +8,55 @@ on:
 
 jobs:
   build:
-    runs-on: ubuntu-22.04
+    # Don't run scheduled runs on forks unless the CI_OFFLINE_DOCS_CRON variable is set to 'true'.
+    # Manual runs can still be triggered as normal.
+    if: ${{ github.repository_owner == 'godotengine' || github.event_name != 'schedule' || vars.CI_OFFLINE_DOCS_CRON == 'true' }}
+    runs-on: ubuntu-24.04
+    timeout-minutes: 180
     strategy:
+      max-parallel: 1
+      fail-fast: false
       matrix:
         branch:
           - master
           - stable
           - 3.6
+    permissions:
+      contents: write
     steps:
       - uses: actions/checkout@v4
         with:
           ref: ${{ matrix.branch }}
 
+      - name: Get Python version
+        id: pythonv
+        run: |
+          echo "PYTHON_VERSION=$(python --version)" >> $GITHUB_OUTPUT
+
+      - name: Restore cached virtualenv
+        uses: actions/cache/restore@v4
+        with:
+          key: venv-${{ runner.os }}-${{ steps.pythonv.outputs.PYTHON_VERSION }}-${{ hashFiles('requirements.txt') }}
+          path: .venv
+
       - name: Install dependencies
         run: |
-          sudo pip3 install -r requirements.txt
-          sudo pip3 install codespell
+          python -m venv .venv
+          source .venv/bin/activate
+          python -m pip install -r requirements.txt
+          echo "$VIRTUAL_ENV/bin" >> $GITHUB_PATH
+          echo "VIRTUAL_ENV=$VIRTUAL_ENV" >> $GITHUB_ENV
           sudo apt update
-          sudo apt install parallel libwebp7
+          sudo apt install parallel libwebp7 imagemagick
+
+      - name: Save virtualenv cache
+        uses: actions/cache/save@v4
+        with:
+          key: venv-${{ runner.os }}-${{ steps.pythonv.outputs.PYTHON_VERSION }}-${{ hashFiles('requirements.txt') }}
+          path: .venv
 
       - name: Sphinx - Build HTML
-        run: make SPHINXOPTS='--color' html
+        run: make SPHINXOPTS='--color -j 4' html
 
       - uses: actions/upload-artifact@v4
         with:
@@ -50,7 +78,7 @@ jobs:
           sed -i 's/"godot_is_latest": True/"godot_is_latest": False/' conf.py
           sed -i 's/"godot_show_article_status": True/"godot_show_article_status": False/' conf.py
 
-          make SPHINXOPTS='--color' epub
+          make SPHINXOPTS='--color -j 4' epub
 
       - uses: actions/upload-artifact@v4
         with:

+ 36 - 0
.github/workflows/check_urls.yml

@@ -0,0 +1,36 @@
+name: 🌐 Check URLs
+on:
+  schedule:
+    # Every Friday at 16:27 UTC.
+    # URLs can decay over time. Setting up a schedule makes it possible to be warned
+    # about dead links as soon as possible.
+    - cron: "27 16 * * FRI"
+
+jobs:
+  check-urls:
+    runs-on: ubuntu-24.04
+    steps:
+
+      - uses: actions/checkout@v4
+
+      - name: Restore lychee cache
+        uses: actions/cache@v4
+        with:
+          path: .lycheecache
+          key: cache-lychee-${{ github.sha }}
+          restore-keys: cache-lychee-
+
+      - name: Run lychee
+        uses: lycheeverse/lychee-action@v2
+        with:
+          args: >
+            --base .
+            --no-progress
+            --cache
+            --max-cache-age 1d
+            --exclude-path _templates/
+            --exclude-path classes/
+            "**/*.md" "**/*.html" "**/*.rst"
+
+      - name: Fail if there were link errors
+        run: exit ${{ steps.lc.outputs.exit_code }}

+ 75 - 0
.github/workflows/cherrypick.yml

@@ -0,0 +1,75 @@
+name: Create Cherrypick PR
+
+on:
+  pull_request:
+      types:
+        - closed
+      branches:
+        # TODO: Extract this to an env variable?
+        - 'master'
+
+env:
+  # TODO: Add a way to handle multiple potential cherrypick targets.
+  TARGET_BRANCH: '4.3'
+  USERNAME: 'Godot Organization'
+  EMAIL: '[email protected]'
+
+jobs:
+  Create-cherrypick-PR:
+    # The cherrypick label is hardcoded because `contains()` doesn't seem to be able to use an environment variable as a second argument.
+    if: ${{ github.event.pull_request.merged == true && contains( github.event.pull_request.labels.*.name, 'cherrypick:4.3' ) }}
+    runs-on: ubuntu-24.04
+    timeout-minutes: 10
+    env:
+      # "Ternary" hack featured in the official docs.
+      # When using "Squash and merge", the commit hash is the last merge commit of the pull request merge branch.
+      # When using "Merge", the commit hash is the last commit to the head branch of the pull request.
+      # This is mildly error-prone, since in theory we could merge multiple commits without squashing.
+      # We are relying on human review of the generated PRs to catch that.
+      COMMIT_HASH: ${{ github.event.pull_request.commits > 1 && github.sha || github.event.pull_request.head.sha }}
+      PR_NUMBER: ${{ github.event.number }}
+
+    permissions:
+      contents: write
+      pull-requests: write
+
+    steps:
+    - name: Checkout
+      uses: actions/checkout@v4
+      with:
+        ref: ${{ env.TARGET_BRANCH }}
+
+    - name: Cherrypick Commit
+      id: cherrypick_commit
+      continue-on-error: true
+      # TODO: Maybe only fetch some branches?
+      run: |
+        git config user.name "${{ env.USERNAME }}"
+        git config user.email "${{ env.EMAIL }}"
+        git fetch
+        git cherry-pick -m 1 ${{ env.COMMIT_HASH }}
+
+    - name: Create Pull Request
+      if: steps.cherrypick_commit.outcome == 'success'
+      uses: peter-evans/create-pull-request@v7
+      with:
+        commit-message: 'Cherrypick to ${{ env.TARGET_BRANCH }}'
+        branch: 'cherrypick-${{ env.PR_NUMBER }}-${{ env.TARGET_BRANCH }}'
+        delete-branch: true
+
+        # Configure the commit author.
+        author: '${{ env.USERNAME }} <${{ env.EMAIL }}>'
+        committer: '${{ env.USERNAME }} <${{ env.EMAIL }}>'
+
+        # Configure the pull request.
+        title: 'Cherrypick ${{ env.PR_NUMBER }} to ${{ env.TARGET_BRANCH }}'
+        body: 'Cherrypick #${{ env.PR_NUMBER }} to ${{ env.TARGET_BRANCH }}.'
+        # TODO: Only add the bug or enhancement label, depending on which the original PR uses.
+        labels: 'bug,enhancement'
+
+    - name: Handle failure
+      if: steps.cherrypick_commit.outcome == 'failure'
+      run: |
+        echo "Can't automatically cherrypick. Potential causes:"
+        echo "- PR has multiple commits. Did you squash and merge?"
+        echo "- Cherrypick did not apply cleanly and can't be auto-merged."

+ 30 - 12
.github/workflows/ci.yml

@@ -5,29 +5,47 @@ on:
   pull_request:
 
 concurrency:
-  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }}
   cancel-in-progress: true
 
 jobs:
   build:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
+    timeout-minutes: 120
     steps:
       - name: Checkout
         uses: actions/checkout@v4
 
-      - name: Install dependencies
+      - name: Style checks via pre-commit
+        uses: pre-commit/[email protected]
+
+      - name: Get Python version
+        id: pythonv
         run: |
-          # Install tools used by `_tools/format.sh`.
-          sudo apt-get -qq update
-          sudo apt-get -qq install dos2unix recode
-          sudo pip3 install -r requirements.txt
-          sudo pip3 install codespell
+          echo "PYTHON_VERSION=$(python --version)" >> $GITHUB_OUTPUT
+
+      - name: Restore cached virtualenv
+        uses: actions/cache/restore@v4
+        with:
+          key: venv-${{ runner.os }}-${{ steps.pythonv.outputs.PYTHON_VERSION }}-${{ hashFiles('requirements.txt') }}
+          path: .venv
 
-      - name: Linter checks
+      - name: Install dependencies
         run: |
-          bash _tools/format.sh
-          codespell -I _tools/codespell-ignore.txt -x _tools/codespell-ignore-lines.txt -S tutorials/i18n/locales.rst {about,community,development,getting_started,tutorials}/**/*.rst
+          python -m venv .venv
+          source .venv/bin/activate
+          python -m pip install -r requirements.txt
+          echo "$VIRTUAL_ENV/bin" >> $GITHUB_PATH
+          echo "VIRTUAL_ENV=$VIRTUAL_ENV" >> $GITHUB_ENV
+
+      - name: Save virtualenv cache
+        uses: actions/cache/save@v4
+        with:
+          key: venv-${{ runner.os }}-${{ steps.pythonv.outputs.PYTHON_VERSION }}-${{ hashFiles('requirements.txt') }}
+          path: .venv
 
       # Use dummy builder to improve performance as we don't need the generated HTML in this workflow.
       - name: Sphinx build
-        run: make SPHINXOPTS='--color -W' dummy
+        run: |
+          source .venv/bin/activate
+          make SPHINXOPTS='--color -j 4 -W' dummy

+ 13 - 5
.github/workflows/sync_class_ref.yml

@@ -3,22 +3,30 @@ name: Sync Class Reference
 on:
   workflow_dispatch:
   # Scheduled updates only run on the default/master branch.
+  # Other branches need to be run manually (usually after a new release for that branch).
   schedule:
-    # Run it at night (European time) every Saturday.
-    # The offset is there to try and avoid the high load times.
+    # Run it at (European) night time every Saturday.
+    # The offset is there to try and avoid high load times.
     - cron: '15 3 * * 6'
 
 # Make sure jobs cannot overlap.
 concurrency:
-  group: classref-sync-ci-master
+  group: classref-sync-ci-${{ github.ref_name }}
   cancel-in-progress: true
 
 jobs:
   build:
+    # Don't run scheduled runs on forks unless the CI_SYNC_CLASS_REF_CRON variable is set to 'true'.
+    # Manual runs can still be triggered as normal.
+    if: ${{ github.repository_owner == 'godotengine' || github.event_name != 'schedule' || vars.CI_SYNC_CLASS_REF_CRON == 'true' }}
     name: Update class reference files based on the engine revision
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-24.04
+    timeout-minutes: 10
     env:
       engine_rev: 'master'
+    permissions:
+      contents: write
+      pull-requests: write
 
     steps:
       - name: Checkout the documentation repository
@@ -51,7 +59,7 @@ jobs:
           ./.engine-src/doc/tools/make_rst.py --color -o ./classes -l en ./.engine-src/doc/classes ./.engine-src/modules ./.engine-src/platform
 
       - name: Submit a pull-request
-        uses: peter-evans/create-pull-request@v6
+        uses: peter-evans/create-pull-request@v7
         with:
           commit-message: 'classref: Sync with current ${{ env.engine_rev }} branch (${{ steps.engine.outputs.rev_hash_short }})'
           branch: 'classref/sync-${{ steps.engine.outputs.rev_hash_short }}'

+ 17 - 6
.gitignore

@@ -3,15 +3,29 @@
 .env
 
 _build/
-env/
-__pycache__
-*.pyc
 *~
 .directory
 .vs/
 .vscode/
 *.mo
 
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# Common environment files
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# User created Python virtual environment as described in the docs
+godot-docs-venv/
+
 # Vim temp files
 *.swo
 *.swp
@@ -45,8 +59,5 @@ logo.h
 tmp-unused-images
 tmp-unused-images-history
 
-# User created Python virtual environement as described in the docs
-godot-docs-venv/
-
 # Jetbrains IDE files
 /.idea/

+ 32 - 0
.lycheeignore

@@ -0,0 +1,32 @@
+# Don't read Godot's own URL schemes as web URLs.
+user:\/\/.*
+res:\/\/.*
+uid:\/\/.*
+
+# Don't read WebSockets or TCP URLs as web URLs.
+ws(s?):\/\/.*
+tcp:\/\/.*
+
+# Security checks prevent checking the URLs of these websites automatically,
+# typically returning 403 errors.
+.*asecuritysite\.com.*
+.*intel\.com.*
+.*reddit\.com.*
+.*inkscape.org.*
+.*computerhope.com*
+
+# Don't check URLs from these websites due to frequent rate limits (error 429) or timeouts.
+.*adobe\.com.*
+.*gamedevartisan\.com.*
+.*github\.com.*
+.*gnu\.org.*
+.*loopit\.dk.*
+.*meta\.com.*
+.*sourceforge\.io.*
+
+# Not a valid URL with the GET method, which lychee always sends.
+# Mentioned in the class reference.
+.*httpbin\.org\/post
+
+# Class reference mentions `example.com/index.php` in an example, which is 404.
+.*example\.com.*

+ 16 - 4
.mailmap

@@ -1,3 +1,4 @@
+31 <[email protected]> <[email protected]>
 Andreas Haas <[email protected]>
 Andrew Conrad <[email protected]>
 Andrii Doroshenko <[email protected]>
@@ -6,11 +7,16 @@ Chris Bradfield <[email protected]> <[email protected]>
 clayjohn <[email protected]>
 clayjohn <[email protected]> <[email protected]>
 corrigentia <[email protected]> <[email protected]>
+DeeJayLSP <[email protected]>
+DeeJayLSP <[email protected]> <[email protected]>
 Frido <[email protected]>
 Frido <[email protected]> <[email protected]>
+Hana - Piralein <[email protected]>
+hpnrep6 <[email protected]> <[email protected]>
 Hugo Locurcio <[email protected]> <[email protected]>
 Hugo Locurcio <[email protected]> <[email protected]>
 Ignacio Etcheverry <[email protected]> <[email protected]>
+jsjtxietian <[email protected]>
 Julian Murgia <[email protected]>
 Kelly Thomas <[email protected]>
 Leon Krause <[email protected]>
@@ -19,12 +25,18 @@ Max Hilbrunner <[email protected]>
 Max Hilbrunner <[email protected]> <[email protected]>
 Michael Alexsander <[email protected]>
 Nathan Lovato <[email protected]>
+Patrick Exner <[email protected]>
+Patrick Exner <[email protected]> <[email protected]>
 Paul Joannon <[email protected]> <[email protected]>
+Poommetee Ketson <[email protected]>
 Rémi Verschelde <[email protected]> <[email protected]>
-skyace65 <[email protected]>
-skyace65 <[email protected]> <[email protected]>
+skyace65 <[email protected]>
+skyace65 <[email protected]> <[email protected]>
+skyace65 <[email protected]> <[email protected]>
+TheYellowArchitect <[email protected]>
 TwistedTwigleg <[email protected]> <[email protected]>
 Will Nations <[email protected]>
-Yuri Roubinsky <[email protected]>
-Yuri Sizov <[email protected]> <[email protected]>
+Yuri Rubinsky <[email protected]>
+Yuri Sizov <[email protected]> <[email protected]>
+Yuri Sizov <[email protected]> <[email protected]>
 ZX-WT <[email protected]> <[email protected]>

+ 17 - 0
.pre-commit-config.yaml

@@ -0,0 +1,17 @@
+default_language_version:
+  python: python3
+
+repos:
+  - repo: https://github.com/codespell-project/codespell
+    rev: v2.3.0
+    hooks:
+      - id: codespell
+        files: ^(about|community|contributing|getting_started|tutorials)/.*\.rst$
+        additional_dependencies: [tomli]
+
+  - repo: https://github.com/pre-commit/pre-commit-hooks
+    rev: v5.0.0
+    hooks:
+      - id: fix-byte-order-marker
+      - id: mixed-line-ending
+        args: ['--fix=lf']

+ 20 - 3
AUTHORS.md

@@ -14,23 +14,32 @@ name is available.
 
 (in alphabetical order, with over 10 commits excluding merges)
 
+    31
     Aaron Franke (aaronfranke)
+    Adam Scott (adamscott)
     Andrew Conrad (her001)
     Andrii Doroshenko (Xrayez)
     Arman (puchik)
+    AThousandShips
     Bastiaan Olij (BastiaanOlij)
     bitbutter
+    bruvzg
     Camille Mohr-Daurat (pouleyKetchoupp)
     Chris Bradfield (cbscribe)
     Clay John (clayjohn)
     corrigentia
+    Danil Alexeev (dalexeev)
+    Douglas Leão (DeeJayLSP)
     Fabio Alessandrelli (Faless)
     FeralBytes
+    Fredia Huya-Kouadio (m4gr3d)
     Frido (mega-bit)
     George Marques (vnen)
     Gerrit Großkopf (Grosskopf)
     Griatch
+    Hana - Piralein (Piralein)
     Haoyu Qiu (timothyqiu)
+    hpnrep6
     Hugo Locurcio (Calinou)
     Ignacio Roldán Etcheverry (neikeq)
     Jérôme Gully (Nutriz)
@@ -38,16 +47,24 @@ name is available.
     Julian Murgia (StraToN)
     Kelly Thomas (KellyThomas)
     Leon Krause (leonkrause)
+    Marcel Admiraal (madmiraal)
+    Markus Sauermann (Sauermann)
     Matthew (skyace65)
     Max Hilbrunner (mhilbrunner)
     Michael Alexsander (YeldhamDev)
+    Nathalie Galla (MurderVeggie)
     Nathan Lovato (NathanLovato)
+    Patrick Exner (FlameLizard)
     Paul Joannon (paulloz)
-    Poommetee Ketson (Naryosha)
+    Poommetee Ketson (Noshyaar)
+    Raul Santos (raulsntos)
     Rémi Verschelde (akien-mga)
+    smix8
+    TheYellowArchitect
     Tomasz Chabora (KoBeWi)
     TwistedTwigleg
     Will Nations (willnationsdev)
-    Yuri Roubinsky (Chaosus)
-    Yuri Sizov (pycbouh)
+    Yuri Rubinsky (Chaosus)
+    Yuri Sizov (YuriSizov)
     ZX-WT
+    谢天 (jsjtxietian)

+ 13 - 21
README.md

@@ -6,25 +6,17 @@ They are meant to be parsed with the [Sphinx](https://www.sphinx-doc.org/) docum
 
 ## Download for offline use
 
-To browse the documentation offline, you can use the mirror of the documentation
-hosted on [DevDocs](https://devdocs.io/godot/). To enable offline browsing on
-DevDocs, you need to:
-
-- Click the three dots in the top-left corner, choose **Preferences**.
-- Enable the desired version of the Godot documentation by checking the box
-  next to it in the sidebar.
-- Click the three dots in the top-left corner, choose **Offline data**.
-- Click the **Install** link next to the Godot documentation.
-
-You can also
-[download an HTML copy](https://nightly.link/godotengine/godot-docs/workflows/build_offline_docs/master/godot-docs-html-master.zip)
-for offline reading (updated every Monday). Extract the ZIP archive then open
-the top-level `index.html` in a web browser.
-
-For mobile devices or e-readers, you can also
-[download an ePub copy](https://nightly.link/godotengine/godot-docs/workflows/build_offline_docs/master/godot-docs-epub-master.zip)
-for offline reading (updated every Monday). Extract the ZIP archive then open
-the `GodotEngine.epub` file in an e-book reader application.
+To browse the documentation offline, you can download an HTML copy (updated every Monday):
+[stable](https://nightly.link/godotengine/godot-docs/workflows/build_offline_docs/master/godot-docs-html-stable.zip),
+[latest](https://nightly.link/godotengine/godot-docs/workflows/build_offline_docs/master/godot-docs-html-master.zip),
+[3.6](https://nightly.link/godotengine/godot-docs/workflows/build_offline_docs/master/godot-docs-html-3.6.zip). Extract
+the ZIP archive then open the top-level `index.html` in a web browser.
+
+For mobile devices or e-readers, you can also download an ePub copy (updated every Monday):
+[stable](https://nightly.link/godotengine/godot-docs/workflows/build_offline_docs/master/godot-docs-epub-stable.zip),
+[latest](https://nightly.link/godotengine/godot-docs/workflows/build_offline_docs/master/godot-docs-epub-master.zip),
+[3.6](https://nightly.link/godotengine/godot-docs/workflows/build_offline_docs/master/godot-docs-epub-3.6.zip). Extract
+the ZIP archive then open the `GodotEngine.epub` file in an e-book reader application.
 
 ## Theming
 
@@ -41,7 +33,7 @@ add-on.
 
 All contributors are welcome to help on the Godot documentation.
 
-To get started, head to the [Contributing section](https://docs.godotengine.org/en/latest/contributing/ways_to_contribute.html#contributing-to-the-documentation) of the online manual. There, you will find all the information you need to write and submit changes.
+To get started, head to the [Contributing section](https://docs.godotengine.org/en/latest/contributing/how_to_contribute.html) of the online manual. There, you will find all the information you need to write and submit changes.
 
 Here are some quick links to the areas you might be interested in:
 
@@ -54,7 +46,7 @@ Here are some quick links to the areas you might be interested in:
 
 ## License
 
-At the exception of the `classes/` folder, all the content of this repository is licensed under the Creative Commons Attribution 3.0 Unported license ([CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)) and is to be attributed to "Juan Linietsky, Ariel Manzur and the Godot community".
+With the exception of the `classes/` folder, all the content of this repository is licensed under the Creative Commons Attribution 3.0 Unported license ([CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)) and is to be attributed to "Juan Linietsky, Ariel Manzur and the Godot community".
 See [LICENSE.txt](/LICENSE.txt) for details.
 
 The files in the `classes/` folder are derived from [Godot's main source repository](https://github.com/godotengine/godot) and are distributed under the MIT license, with the same authors as above.

+ 53 - 22
_extensions/gdscript.py

@@ -80,7 +80,9 @@ class GDScriptLexer(RegexLexer):
             (r"[]{}:(),;[]", Punctuation),
             (r"(\\)(\n)", Whitespace),
             (r"\\", Text),
-            (r"(in|and|or|not)\b", Operator.Word),
+            # modules/gdscript/gdscript.cpp - GDScriptLanguage::get_reserved_words()
+            # Operators.
+            (r"(and|as|in|is|not|or)\b", Operator.Word),
             (
                 r"!=|==|<<|>>|&&|\+=|-=|\*=|/=|%=|&=|\|=|\|\||[-~+/*%=<>&^.!|$]",
                 Operator,
@@ -138,26 +140,28 @@ class GDScriptLexer(RegexLexer):
             (
                 words(
                     (
-                        "and",
-                        "await",
-                        "in",
-                        "get",
-                        "set",
-                        "not",
-                        "or",
-                        "as",
-                        "breakpoint",
+                        # modules/gdscript/gdscript.cpp - GDScriptLanguage::get_reserved_words()
+                        # Declarations.
                         "class",
                         "class_name",
+                        "const",
+                        "enum",
                         "extends",
-                        "is",
                         "func",
+                        "namespace", # Reserved for potential future use.
                         "signal",
-                        "const",
-                        "enum",
                         "static",
+                        "trait", # Reserved for potential future use.
                         "var",
+                        # Other keywords.
+                        "await",
+                        "breakpoint",
+                        "self",
                         "super",
+                        "yield", # Reserved for potential future use.
+                        # Not really keywords, but used in property syntax.
+                        "set",
+                        "get",
                     ),
                     suffix=r"\b",
                 ),
@@ -168,12 +172,14 @@ class GDScriptLexer(RegexLexer):
             (
                 words(
                     (
+                        # modules/gdscript/gdscript.cpp - GDScriptLanguage::get_reserved_words()
+                        # Control flow.
                         "break",
                         "continue",
                         "elif",
                         "else",
-                        "if",
                         "for",
+                        "if",
                         "match",
                         "pass",
                         "return",
@@ -196,9 +202,13 @@ class GDScriptLexer(RegexLexer):
                         "absf",
                         "absi",
                         "acos",
+                        "acosh",
+                        "angle_difference",
                         "asin",
+                        "asinh",
                         "atan",
                         "atan2",
+                        "atanh",
                         "bezier_derivative",
                         "bezier_interpolate",
                         "bytes_to_var",
@@ -234,6 +244,7 @@ class GDScriptLexer(RegexLexer):
                         "is_instance_id_valid",
                         "is_instance_valid",
                         "is_nan",
+                        "is_same",
                         "is_zero_approx",
                         "lerp",
                         "lerp_angle",
@@ -271,6 +282,7 @@ class GDScriptLexer(RegexLexer):
                         "remap",
                         "rid_allocate_id",
                         "rid_from_int64",
+                        "rotate_toward",
                         "round",
                         "roundf",
                         "roundi",
@@ -290,6 +302,8 @@ class GDScriptLexer(RegexLexer):
                         "str_to_var",
                         "tan",
                         "tanh",
+                        "type_convert",
+                        "type_string",
                         "typeof",
                         "var_to_bytes",
                         "var_to_bytes_with_objects",
@@ -307,13 +321,13 @@ class GDScriptLexer(RegexLexer):
                         "dict_to_inst",
                         "get_stack",
                         "inst_to_dict",
+                        "is_instance_of",
                         "len",
                         "load",
                         "preload",
                         "print_debug",
                         "print_stack",
                         "range",
-                        "str",
                         "type_exists",
                     ),
                     prefix=r"(?<!\.)",
@@ -321,16 +335,18 @@ class GDScriptLexer(RegexLexer):
                 ),
                 Name.Builtin,
             ),
-            (r"((?<!\.)(self|super|false|true)|(PI|TAU|NAN|INF)" r")\b", Name.Builtin.Pseudo),
+            # modules/gdscript/gdscript.cpp - GDScriptLanguage::get_reserved_words()
+            # Special values. Constants.
+            (r"((?<!\.)(false|null|true)|(INF|NAN|PI|TAU))\b", Name.Builtin.Pseudo),
             (
                 words(
                     (
+                        # core/variant/variant.cpp - Variant::get_type_name()
+                        # `Nil` is excluded because it is not allowed in GDScript.
                         "bool",
                         "int",
                         "float",
                         "String",
-                        "StringName",
-                        "NodePath",
                         "Vector2",
                         "Vector2i",
                         "Rect2",
@@ -338,14 +354,21 @@ class GDScriptLexer(RegexLexer):
                         "Transform2D",
                         "Vector3",
                         "Vector3i",
-                        "AABB",
+                        "Vector4",
+                        "Vector4i",
                         "Plane",
+                        "AABB",
                         "Quaternion",
                         "Basis",
                         "Transform3D",
+                        "Projection",
                         "Color",
                         "RID",
                         "Object",
+                        "Callable",
+                        "Signal",
+                        "StringName",
+                        "NodePath",
                         "Dictionary",
                         "Array",
                         "PackedByteArray",
@@ -355,11 +378,11 @@ class GDScriptLexer(RegexLexer):
                         "PackedFloat64Array",
                         "PackedStringArray",
                         "PackedVector2Array",
-                        "PackedVector2iArray",
                         "PackedVector3Array",
-                        "PackedVector3iArray",
                         "PackedColorArray",
-                        "null",
+                        "PackedVector4Array",
+                        # The following are also considered types in GDScript.
+                        "Variant",
                         "void",
                     ),
                     prefix=r"(?<!\.)",
@@ -372,9 +395,11 @@ class GDScriptLexer(RegexLexer):
             (
                 words(
                     (
+                        # modules/gdscript/doc_classes/@GDScript.xml
                         "@export",
                         "@export_category",
                         "@export_color_no_alpha",
+                        "@export_custom",
                         "@export_dir",
                         "@export_enum",
                         "@export_exp_easing",
@@ -386,6 +411,7 @@ class GDScriptLexer(RegexLexer):
                         "@export_flags_3d_navigation",
                         "@export_flags_3d_physics",
                         "@export_flags_3d_render",
+                        "@export_flags_avoidance",
                         "@export_global_dir",
                         "@export_global_file",
                         "@export_group",
@@ -393,12 +419,17 @@ class GDScriptLexer(RegexLexer):
                         "@export_node_path",
                         "@export_placeholder",
                         "@export_range",
+                        "@export_storage",
                         "@export_subgroup",
+                        "@export_tool_button",
                         "@icon",
                         "@onready",
                         "@rpc",
+                        "@static_unload",
                         "@tool",
                         "@warning_ignore",
+                        "@warning_ignore_restore",
+                        "@warning_ignore_start",
                     ),
                     prefix=r"(?<!\.)",
                     suffix=r"\b",

+ 0 - 6
_static/css/algolia.css

@@ -1,6 +0,0 @@
-.wy-nav-side { overflow: visible; }
-.wy-side-scroll { overflow-x: inherit; }
-
-.algolia-autocomplete {
-    display: block !important;
-}

+ 67 - 0
_static/css/custom.css

@@ -396,6 +396,38 @@ a.btn:hover {
     padding-right: 13px;
 }
 
+/* Style self-links to make them appear only on hover. */
+.classref-method > a[href*="-method-"].reference,
+.classref-method > a[href*="-func-"].reference,
+.classref-property > a[href*="-property-"].reference,
+.classref-signal > a[href*="-signal-"].reference,
+.classref-annotation > a[href*="-annotation-"].reference,
+.classref-themeproperty > a[href*="-theme-"].reference,
+.classref-method > a[href*="-method-"].reference,
+.classref-constructor > a[href*="-constructor-"].reference,
+.classref-operator > a[href*="-operator-"].reference,
+.classref-constant > a[href*="-constant-"].reference,
+.classref-enumeration > a[href^="#enum-"].reference {
+    visibility: hidden;
+    padding-left: 20px;
+    padding-right: 20px;
+}
+.classref-method:hover > a[href*="-method-"].reference,
+.classref-method:hover > a[href*="-func-"].reference,
+.classref-property:hover > a[href*="-property-"].reference,
+.classref-signal:hover > a[href*="-signal-"].reference,
+.classref-annotation:hover > a[href*="-annotation-"].reference,
+.classref-themeproperty:hover > a[href*="-theme-"].reference,
+.classref-method:hover > a[href*="-method-"].reference,
+.classref-constructor:hover > a[href*="-constructor-"].reference,
+.classref-operator:hover > a[href*="-operator-"].reference,
+.classref-constant:hover > a[href*="-constant-"].reference,
+.classref-enumeration:hover > a[href^="#enum-"].reference {
+    visibility: visible;
+    padding-left: 20px;
+    padding-right: 20px;
+}
+
 /* Distinguish class reference page links from "user manual" page links with a class reference badge. */
 
 /* Remove text wrapping so that the badge is always on the same line as the anchor's text. */
@@ -535,6 +567,14 @@ html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(
 html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .k {
     font-style: normal;
 }
+html.writer-html5 .rst-content dl:not(.docutils) > dt, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt {
+    border-top-color: var(--highlight-background-emph-color);
+    background: var(--highlight-background-color);
+}
+html.writer-html5 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt {
+    border-left-color: var(--highlight-background-emph-color);
+    background: var(--highlight-background-color);
+}
 html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-param,
 html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).class dt > .optional ~ em,
 html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple).function dt > .optional ~ em,
@@ -673,6 +713,7 @@ footer {
 .wy-body-for-nav {
     position: relative;
     background-color: var(--content-wrap-background-color);
+    overflow: visible;
 }
 
 @media only screen and (min-width: 769px) {
@@ -771,6 +812,31 @@ html.writer-html5 .rst-content table.docutils th {
 .wy-table-responsive table.wrap-normal th {
     white-space: normal;
 }
+/* Turn nowrap on per-column */
+.wy-table-responsive table.nowrap-col1 td:nth-child(1),
+.wy-table-responsive table.nowrap-col1 th:nth-child(1) {
+    white-space: nowrap;
+}
+.wy-table-responsive table.nowrap-col2 td:nth-child(2),
+.wy-table-responsive table.nowrap-col2 th:nth-child(2) {
+    white-space: nowrap;
+}
+.wy-table-responsive table.nowrap-col3 td:nth-child(3),
+.wy-table-responsive table.nowrap-col3 th:nth-child(3) {
+    white-space: nowrap;
+}
+.wy-table-responsive table.nowrap-col4 td:nth-child(4),
+.wy-table-responsive table.nowrap-col4 th:nth-child(4) {
+    white-space: nowrap;
+}
+.wy-table-responsive table.nowrap-col5 td:nth-child(5),
+.wy-table-responsive table.nowrap-col5 th:nth-child(5) {
+    white-space: nowrap;
+}
+.wy-table-responsive table.nowrap-col6 td:nth-child(6),
+.wy-table-responsive table.nowrap-col6 th:nth-child(6) {
+    white-space: nowrap;
+}
 
 /* Make sure line blocks don't stretch tables */
 .wy-table-responsive table .line-block {
@@ -1097,6 +1163,7 @@ kbd.compound > .kbd,
 .classref-descriptions-group > p.classref-annotation,
 .classref-descriptions-group > p.classref-themeproperty,
 .classref-descriptions-group > p.classref-method,
+.classref-descriptions-group > div.classref-method.line-block,
 .classref-descriptions-group > p.classref-constructor,
 .classref-descriptions-group > p.classref-operator,
 .classref-descriptions-group > p.classref-constant,

+ 12 - 20
_templates/layout.html

@@ -13,16 +13,6 @@
 
 {% block linktags -%}
   <meta name="theme-color" content="#3d8fcc" />
-  {% if godot_inject_language_links -%}
-  {% for alternate_lang in godot_docs_supported_languages -%}
-  {# Convert to ISO 639-1 format, e.g. zh_CN -> zh-cn -#}
-  {% set alternate_lang_href = alternate_lang.lower().replace("_", "-") -%}
-  <link rel="alternate" hreflang="{{ alternate_lang_href }}" href="{{ godot_docs_basepath }}{{ alternate_lang }}/{{ godot_canonical_version }}/{{ pagename }}{{ godot_docs_suffix }}" />
-  {% endfor -%}
-  <link rel="alternate" hreflang="x-default" href="{{ godot_docs_basepath }}{{ godot_default_lang }}/{{ godot_canonical_version }}/{{ pagename }}{{ godot_docs_suffix }}" />
-
-  <link rel="canonical" href="{{ godot_docs_basepath }}{{ lang_attr }}/{{ godot_canonical_version }}/{{ pagename }}{{ godot_docs_suffix }}" />
-  {% endif -%}
   {{ super() }}
 {% endblock -%}
 
@@ -44,9 +34,8 @@
     </div>
     {% endif %}
 
-    {% if godot_show_article_status and not godot_is_latest %}
-    <div class="admonition tip article-status">
-      {% if meta and meta.get('article_outdated') == 'True' %}
+    {% if godot_show_article_status and not godot_is_latest and meta and meta.get('article_outdated') == 'True' %}
+    <div class="admonition attention article-status">
       <p class="first admonition-title">Work in progress</p>
       <p>
         The content of this page was not yet updated for Godot
@@ -54,13 +43,6 @@
         and may be <strong>outdated</strong>. If you know how to improve this page or you can confirm
         that it's up to date, feel free to <a href="https://github.com/godotengine/godot-docs">open a pull request</a>.
       </p>
-      {% else %}
-      <p class="first admonition-title">Up to date</p>
-      <p>
-        This page is <strong>up to date</strong> for Godot <code class="docutils literal notranslate">{{ godot_version }}</code>.
-        If you still find outdated information, please <a href="https://github.com/godotengine/godot-docs">open an issue</a>.
-      </p>
-      {% endif %}
     </div>
     {% endif %}
   </div>
@@ -70,6 +52,16 @@
 
 {% if (not meta or meta.get('allow_comments') != 'False') and godot_show_article_comments %}
 <div id="godot-giscus">
+    {%- if (theme_prev_next_buttons_location == 'bottom' or theme_prev_next_buttons_location == 'both') and (next or prev) %}
+      <div class="rst-footer-buttons" role="navigation">
+        {%- if prev %}
+          <a href="{{ prev.link|e }}" class="btn btn-neutral float-left" title="{{ prev.title|striptags|e }}" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> {{ _('Previous') }}</a>
+        {%- endif %}
+        {%- if next %}
+          <a href="{{ next.link|e }}" class="btn btn-neutral float-right" title="{{ next.title|striptags|e }}" accesskey="n" rel="next">{{ _('Next') }} <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+        {%- endif %}
+      </div>
+    {%- endif %}
     <hr>
         <h2>User-contributed notes</h2>
     <p>

+ 1 - 0
_tools/codespell-dict.txt

@@ -0,0 +1 @@
+anti-aliasing->antialiasing

+ 3 - 0
_tools/codespell-ignore.txt

@@ -5,3 +5,6 @@ que
 raison
 uint
 implementors
+thirdparty
+inout
+findn

+ 0 - 42
_tools/format.sh

@@ -1,42 +0,0 @@
-#!/usr/bin/env bash
-
-set -uo pipefail
-IFS=$'\n\t'
-
-# Loops through all text files tracked by Git.
-git grep -zIl '' |
-while IFS= read -rd '' f; do
-    # Exclude csproj and hdr files.
-    if [[ "$f" == *"csproj" ]]; then
-        continue
-    elif [[ "$f" == *"hdr" ]]; then
-        continue
-    fi
-    # Ensures that files are UTF-8 formatted.
-    recode UTF-8 "$f" 2> /dev/null
-    # Ensures that files have LF line endings.
-    dos2unix "$f" 2> /dev/null
-    # Ensures that files do not contain a BOM.
-    sed -i '1s/^\xEF\xBB\xBF//' "$f"
-    # Ensures that files end with newline characters.
-    tail -c1 < "$f" | read -r _ || echo >> "$f";
-done
-
-git diff > patch.patch
-FILESIZE="$(stat -c%s patch.patch)"
-MAXSIZE=5
-
-# If no patch has been generated all is OK, clean up, and exit.
-if (( FILESIZE < MAXSIZE )); then
-    printf "Files in this commit comply with the formatting rules.\n"
-    rm -f patch.patch
-    exit 0
-fi
-
-# A patch has been created, notify the user, clean up, and exit.
-printf "\n*** The following differences were found between the code "
-printf "and the formatting rules:\n\n"
-cat patch.patch
-printf "\n*** Aborting, please fix your commit(s) with 'git commit --amend' or 'git rebase -i <hash>'\n"
-rm -f patch.patch
-exit 1

+ 5 - 5
_tools/redirects/README.md

@@ -17,21 +17,21 @@ For more information on the scripts themselves, see their help output.
 To install requirements: `pip3 install -r requirements.txt`.
 Git is also required and needs to be available in the `PATH`.
 To interact with the Read the Docs API, a valid API key must be set as
-`RTD_AUTH_TOKEN` (either as a environment variable or in a [.env file](https://pypi.org/project/python-dotenv/)).
+`RTD_AUTH_TOKEN` (either as an environment variable or in a [.env file](https://pypi.org/project/python-dotenv/)).
 
 ## Usage
 
-Lets say we recently renamed some files in the Git branch `3.4` (compared to the `stable` branch), and now we want to create redirects for these.
+Let's say we recently renamed some files in the Git branch `3.4` (compared to the `stable` branch), and now we want to create redirects for these.
 For this, we would (after setting up the API token and requirements, see Setup above):
 
 > python convert_git_renames_to_csv.py stable 3.4
 
-This should output a list of the redirects to create. Lets append these to the redirects file:
+This should output a list of the redirects to create. Let's append these to the redirects file:
 
 > python convert_git_renames_to_csv.py stable 3.4 >> redirects.csv
 
-After this, redirects for renamed files should have been appended to `redirects.csv`. You may want to double check that!
-Now lets submit these to ReadTheDocs and create redirects there:
+After this, redirects for renamed files should have been appended to `redirects.csv`. You may want to double-check that!
+Now let's submit these to ReadTheDocs and create redirects there:
 
 > python create_redirects.py
 

+ 10 - 6
_tools/redirects/redirects.csv

@@ -30,6 +30,7 @@ source,destination
 /contributing/development/core_and_modules/introduction_to_godot_development.html,/contributing/development/core_and_modules/index.html
 /contributing/doc_and_l10n_guidelines.html,/community/contributing/doc_and_l10n_guidelines.html
 /contributing/updating_the_class_reference.html,/community/contributing/updating_the_class_reference.html
+/contributing/ways_to_contribute.html,/contributing/how_to_contribute.html
 /development/compiling/compiling_for_android.html,/contributing/development/compiling/compiling_for_android.html
 /development/compiling/compiling_for_ios.html,/contributing/development/compiling/compiling_for_ios.html
 /development/compiling/compiling_for_linuxbsd.html,/contributing/development/compiling/compiling_for_linuxbsd.html
@@ -107,13 +108,13 @@ source,destination
 /getting_started/step_by_step/resources.html,/tutorials/scripting/resources.html
 /getting_started/step_by_step/scene_tree.html,/tutorials/scripting/scene_tree.html
 /getting_started/step_by_step/singletons_autoload.html,/tutorials/scripting/singletons_autoload.html
-/getting_started/workflow/assets/escn_exporter/animation.html,/tutorials/assets_pipeline/escn_exporter/animation.html
+/getting_started/workflow/assets/escn_exporter/animation.html,/tutorials/assets_pipeline/escn_exporter/index.html
 /getting_started/workflow/assets/escn_exporter/index.html,/tutorials/assets_pipeline/escn_exporter/index.html
-/getting_started/workflow/assets/escn_exporter/lights.html,/tutorials/assets_pipeline/escn_exporter/lights.html
-/getting_started/workflow/assets/escn_exporter/material.html,/tutorials/assets_pipeline/escn_exporter/material.html
-/getting_started/workflow/assets/escn_exporter/mesh.html,/tutorials/assets_pipeline/escn_exporter/mesh.html
-/getting_started/workflow/assets/escn_exporter/physics.html,/tutorials/assets_pipeline/escn_exporter/physics.html
-/getting_started/workflow/assets/escn_exporter/skeleton.html,/tutorials/assets_pipeline/escn_exporter/skeleton.html
+/getting_started/workflow/assets/escn_exporter/lights.html,/tutorials/assets_pipeline/escn_exporter/index.html
+/getting_started/workflow/assets/escn_exporter/material.html,/tutorials/assets_pipeline/escn_exporter/index.html
+/getting_started/workflow/assets/escn_exporter/mesh.html,/tutorials/assets_pipeline/escn_exporter/index.html
+/getting_started/workflow/assets/escn_exporter/physics.html,/tutorials/assets_pipeline/escn_exporter/index.html
+/getting_started/workflow/assets/escn_exporter/skeleton.html,/tutorials/assets_pipeline/escn_exporter/index.html
 /getting_started/workflow/assets/import_process.html,/tutorials/assets_pipeline/import_process.html
 /getting_started/workflow/assets/importing_audio_samples.html,/tutorials/assets_pipeline/importing_audio_samples.html
 /getting_started/workflow/assets/importing_images.html,/tutorials/assets_pipeline/importing_images.html
@@ -377,6 +378,8 @@ source,destination
 /tutorials/misc/pausing_games.html,/tutorials/scripting/pausing_games.html
 /tutorials/misc/running_code_in_the_editor.html,/tutorials/plugins/running_code_in_the_editor.html
 /tutorials/misc/saving_games.html,/tutorials/io/saving_games.html
+/tutorials/navigation/navigation_using_navigationobstacles.html#static-obstacles,/tutorials/navigation/navigation_using_navigationobstacles.html#static-avoidance-obstacles
+/tutorials/navigation/navigation_using_navigationobstacles.html#static-obstacles,/tutorials/navigation/navigation_using_navigationobstacles.html#dynamic-avoidance-obstacles
 /tutorials/optimization/batching.html,/tutorials/performance/batching.html
 /tutorials/optimization/cpu_optimization.html,/tutorials/performance/cpu_optimization.html
 /tutorials/optimization/general_optimization.html,/tutorials/performance/general_optimization.html
@@ -422,3 +425,4 @@ source,destination
 /tutorials/viewports/viewports.html,/tutorials/rendering/viewports.html
 /contributing/development/compiling/compiling_for_uwp.html,/about/faq.html#which-platforms-are-supported-by-godot
 /tutorials/export/exporting_for_uwp.html,/about/faq.html#which-platforms-are-supported-by-godot
+/tutorials/xr/openxr_passthrough.html,/tutorials/xr/ar_passthrough.html

+ 1 - 1
_tools/redirects/requirements.txt

@@ -1,2 +1,2 @@
 python-dotenv==0.18.0
-requests==2.31.0
+requests==2.32.0

+ 6 - 6
about/complying_with_licenses.rst

@@ -84,39 +84,39 @@ how the text has to be included, but here are the most common approaches (you
 only need to implement one of them, not all).
 
 Credits screen
-^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~
 
 Include the above license text somewhere in the credits screen. It can be at the
 bottom after showing the rest of the credits. Most large studios use this
 approach with open source licenses.
 
 Licenses screen
-^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~
 
 Some games have a special menu (often in the settings) to display licenses.
 This menu is typically accessed with a button called **Third-party Licenses**
 or **Open Source Licenses**.
 
 Output log
-^^^^^^^^^^
+~~~~~~~~~~
 
 Printing the license text using the :ref:`print() <class_@GlobalScope_method_print>`
 function may be enough on platforms where a global output log is readable.
 This is the case on desktop platforms, Android and HTML5 (but not iOS).
 
 Accompanying file
-^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~
 
 If the game is distributed on desktop platforms, a file containing the license
 text can be added to the software that is installed to the user PC.
 
 Printed manual
-^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~
 
 If the game includes a printed manual, the license text can be included there.
 
 Link to the license
-^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~
 
 The Godot Engine developers consider that a link to ``godotengine.org/license``
 in your game documentation or credits would be an acceptable way to satisfy

+ 162 - 68
about/docs_changelog.rst

@@ -13,31 +13,125 @@ added since version 3.0.
 .. note:: This document only contains new pages so not all changes are reflected,
           many pages have been substantially updated but are not reflected in this document.
 
+New pages since version 4.3
+---------------------------
+
+2D
+~~
+
+- :ref:`doc_introduction_to_2d`
+
+3D
+~~
+
+- :ref:`doc_spring_arm`
+
+Debug
+~~~~~
+
+- :ref:`doc_output_panel`
+
+Editor
+~~~~~~
+
+- :ref:`doc_using_the_xr_editor`
+
+Performance
+~~~~~~~~~~~
+
+- :ref:`doc_pipeline_compilations`
+
+Physics
+~~~~~~~
+
+- :ref:`doc_physics_interpolation`
+- :ref:`doc_physics_interpolation_quick_start_guide`
+- :ref:`doc_physics_interpolation_introduction`
+- :ref:`doc_using_physics_interpolation`
+- :ref:`doc_advanced_physics_interpolation`
+- :ref:`doc_2d_and_3d_physics_interpolation`
+
+Rendering
+~~~~~~~~~
+
+- :ref:`doc_renderers`
+
+Shaders
+~~~~~~~
+
+- :ref:`doc_shader_functions`
+
+New pages since version 4.2
+---------------------------
+
+About
+~~~~~
+
+- :ref:`doc_system_requirements`
+
+2D
+~~
+
+- :ref:`doc_2d_parallax`
+
+Contributing
+~~~~~~~~~~~~
+
+- :ref:`doc_handling_compatibility_breakages`
+- :ref:`doc_ways_to_contribute`
+
+GDExtension
+~~~~~~~~~~~
+
+- :ref:`doc_gdextension_file`
+- :ref:`doc_gdextension_docs_system`
+
+Migrating
+~~~~~~~~~
+
+- :ref:`doc_upgrading_to_godot_4.3`
+
+Rendering
+~~~~~~~~~
+
+- :ref:`doc_compositor`
+
+XR
+~~
+
+- :ref:`doc_a_better_xr_start_script`
+- :ref:`doc_openxr_passthrough`
+- :ref:`doc_xr_next_steps`
+- :ref:`doc_openxr_settings`
+- :ref:`doc_openxr_composition_layers`
+- :ref:`doc_openxr_body_tracking`
+
+
 New pages since version 4.1
 ---------------------------
 
 C#
-^^
+~~
 
 - :ref:`doc_c_sharp_diagnostics`
 
 Development
-^^^^^^^^^^^
+~~~~~~~~~~~
 
 - :ref:`doc_2d_coordinate_systems`
 
 Migrating
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_upgrading_to_godot_4.2`
 
 I/O
-^^^
+~~~
 
 - :ref:`doc_runtime_loading_and_saving`
 
 Platform-specific
-^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~
 
 - :ref:`doc_android_library`
 
@@ -45,18 +139,18 @@ New pages since version 4.0
 ---------------------------
 
 Development
-^^^^^^^^^^^
+~~~~~~~~~~~
 
 - :ref:`doc_internal_rendering_architecture`
 - :ref:`doc_using_sanitizers`
 
 Migrating
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_upgrading_to_godot_4.1`
 
 Physics
-^^^^^^^
+~~~~~~~
 
 - :ref:`doc_troubleshooting_physics_issues`
 
@@ -64,12 +158,12 @@ New pages since version 3.6
 ---------------------------
 
 2D
-^^
+~~
 
 - :ref:`doc_2d_antialiasing`
 
 3D
-^^
+~~
 
 - :ref:`doc_3d_antialiasing`
 - :ref:`doc_faking_global_illumination`
@@ -84,32 +178,32 @@ New pages since version 3.6
 - :ref:`doc_physical_light_and_camera_units`
 
 Animation
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_creating_movies`
 
 Assets pipeline
-^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~
 
 - :ref:`doc_retargeting_3d_skeletons`
 
 Development
-^^^^^^^^^^^
+~~~~~~~~~~~
 
 - :ref:`doc_custom_platform_ports`
 
 Migrating
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_upgrading_to_godot_4`
 
 Physics
-^^^^^^^
+~~~~~~~
 
 - :ref:`doc_large_world_coordinates`
 
 Scripting
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_custom_performance_monitors`
 - :ref:`doc_c_sharp_collections`
@@ -117,17 +211,17 @@ Scripting
 - :ref:`doc_c_sharp_variant`
 
 Shaders
-^^^^^^^
+~~~~~~~
 
 - :ref:`doc_compute_shaders`
 
 Workflow
-^^^^^^^^
+~~~~~~~~
 
 - :ref:`doc_pr_review_guidelines`
 
 XR
-^^
+~~
 
 - :ref:`doc_introducing_xr_tools`
 - :ref:`doc_xr_action_map`
@@ -142,17 +236,17 @@ New pages since version 3.4
 ---------------------------
 
 3D
-^^
+~~
 
 - :ref:`doc_3d_text`
 
 Animation
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_playing_videos`
 
 Editor
-^^^^^^
+~~~~~~
 
 - :ref:`doc_managing_editor_features`
 
@@ -160,12 +254,12 @@ New pages since version 3.3
 ---------------------------
 
 C++
-^^^
+~~~
 
 - :ref:`doc_cpp_usage_guidelines`
 
 GDScript
-^^^^^^^^
+~~~~~~~~
 
 - :ref:`doc_gdscript_documentation_comments`
 
@@ -173,31 +267,31 @@ New pages since version 3.2
 ---------------------------
 
 3D
-^^
+~~
 
 - :ref:`doc_3d_rendering_limitations`
 
 About
-^^^^^
+~~~~~
 
 - :ref:`doc_troubleshooting`
 - :ref:`doc_list_of_features`
 - :ref:`doc_release_policy`
 
 Best practices
-^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~
 
 - :ref:`doc_version_control_systems`
 
 Community
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_best_practices_for_engine_contributors`
 - :ref:`doc_bisecting_regressions`
 - :ref:`doc_editor_and_docs_localization`
 
 Development
-^^^^^^^^^^^
+~~~~~~~~~~~
 
 - :ref:`doc_introduction_to_editor_development`
 - :ref:`doc_editor_style_guide`
@@ -207,46 +301,46 @@ Development
 - Configuring an IDE: :ref:`doc_configuring_an_ide_code_blocks`
 
 Editor
-^^^^^^
+~~~~~~
 
 - :ref:`doc_default_key_mapping`
 - :ref:`doc_using_the_web_editor`
 
 Export
-^^^^^^
+~~~~~~
 
 - :ref:`doc_exporting_for_dedicated_servers`
 
 Input
-^^^^^
+~~~~~
 
 - :ref:`doc_controllers_gamepads_joysticks`
 
 Math
-^^^^
+~~~~
 
 - :ref:`doc_random_number_generation`
 
 Platform-specific
-^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~
 
 - :ref:`doc_plugins_for_ios`
 - :ref:`doc_ios_plugin`
 - :ref:`doc_html5_shell_classref`
 
 Physics
-^^^^^^^
+~~~~~~~
 
 - :ref:`doc_collision_shapes_2d`
 - :ref:`doc_collision_shapes_3d`
 
 Shaders
-^^^^^^^
+~~~~~~~
 
 - :ref:`doc_shaders_style_guide`
 
 Scripting
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_debugger_panel`
 - :ref:`doc_creating_script_templates`
@@ -255,7 +349,7 @@ Scripting
 - :ref:`doc_gdscript_warning_system` (split from :ref:`doc_gdscript_static_typing`)
 
 User Interface (UI)
-^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~
 
 - :ref:`doc_control_node_gallery`
 
@@ -263,39 +357,39 @@ New pages since version 3.1
 ---------------------------
 
 Project workflow
-^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~
 
 - :ref:`doc_android_gradle_build`
 
 2D
-^^
+~~
 
 - :ref:`doc_2d_sprite_animation`
 
 Audio
-^^^^^
+~~~~~
 
 - :ref:`doc_recording_with_microphone`
 - :ref:`doc_sync_with_audio`
 
 Math
-^^^^
+~~~~
 
 - :ref:`doc_beziers_and_curves`
 - :ref:`doc_interpolation`
 
 Inputs
-^^^^^^
+~~~~~~
 
 - :ref:`doc_input_examples`
 
 Internationalization
-^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~
 
 - :ref:`doc_localization_using_gettext`
 
 Shading
-^^^^^^^
+~~~~~~~
 
 - Your First Shader Series:
     - :ref:`doc_introduction_to_shaders`
@@ -305,24 +399,24 @@ Shading
 - :ref:`doc_visual_shaders`
 
 Networking
-^^^^^^^^^^
+~~~~~~~~~~
 
 - :ref:`doc_webrtc`
 
 Plugins
-^^^^^^^
+~~~~~~~
 
 - :ref:`doc_android_plugin`
 - :ref:`doc_inspector_plugins`
 - :ref:`doc_visual_shader_plugins`
 
 Multi-threading
-^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~
 
 - :ref:`doc_using_multiple_threads`
 
 Creating content
-^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~
 
 Procedural geometry series:
   - :ref:`Procedural geometry <toc-procedural_geometry>`
@@ -332,13 +426,13 @@ Procedural geometry series:
   - :ref:`doc_immediatemesh`
 
 Optimization
-^^^^^^^^^^^^
+~~~~~~~~~~~~
 
 - :ref:`doc_using_multimesh`
 - :ref:`doc_using_servers`
 
 Legal
-^^^^^
+~~~~~
 
 - :ref:`doc_complying_with_licenses`
 
@@ -346,18 +440,18 @@ New pages since version 3.0
 ---------------------------
 
 Step by step
-^^^^^^^^^^^^
+~~~~~~~~~~~~
 
 - :ref:`doc_signals`
 - Exporting
 
 Scripting
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_gdscript_static_typing`
 
 Project workflow
-^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~
 
 Best Practices:
 
@@ -373,43 +467,43 @@ Best Practices:
 - :ref:`doc_logic_preferences`
 
 2D
-^^
+~~
 
 - :ref:`doc_2d_lights_and_shadows`
 - :ref:`doc_2d_meshes`
 
 3D
-^^
+~~
 
 - :ref:`doc_csg_tools`
 - :ref:`doc_animating_thousands_of_fish`
 - :ref:`doc_controlling_thousands_of_fish`
 
 Physics
-^^^^^^^
+~~~~~~~
 
 - :ref:`doc_ragdoll_system`
 - :ref:`doc_soft_body`
 
 Animation
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_2d_skeletons`
 - :ref:`doc_animation_tree`
 
 GUI
-^^^
+~~~
 
 - :ref:`doc_gui_containers`
 
 Viewports
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_viewport_as_texture`
 - :ref:`doc_custom_postprocessing`
 
 Shading
-^^^^^^^
+~~~~~~~
 
 - :ref:`doc_converting_glsl_to_godot_shaders`
 - :ref:`doc_advanced_postprocessing`
@@ -423,40 +517,40 @@ Shading Reference:
 - :ref:`doc_particle_shader`
 
 Plugins
-^^^^^^^
+~~~~~~~
 
 - :ref:`doc_making_main_screen_plugins`
 - :ref:`doc_3d_gizmo_plugins`
 
 Platform-specific
-^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~
 
 - :ref:`doc_customizing_html5_shell`
 
 Multi-threading
-^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~
 
 - :ref:`doc_thread_safe_apis`
 
 Creating content
-^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~
 
 - :ref:`doc_making_trees`
 
 Miscellaneous
-^^^^^^^^^^^^^
+~~~~~~~~~~~~~
 
 - :ref:`doc_jitter_stutter`
 - :ref:`doc_running_code_in_the_editor`
 - :ref:`doc_change_scenes_manually`
 
 Compiling
-^^^^^^^^^
+~~~~~~~~~
 
 - :ref:`doc_optimizing_for_size`
 - :ref:`doc_compiling_with_script_encryption_key`
 
 Engine development
-^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~
 
 - :ref:`doc_binding_to_external_libraries`

+ 46 - 10
about/faq.rst

@@ -11,7 +11,7 @@ Frequently asked questions
 What can I do with Godot? How much does it cost? What are the license terms?
 ----------------------------------------------------------------------------
 
-Godot is `Free and open source Software <https://en.wikipedia.org/wiki/Free_and_open source_software>`_
+Godot is `Free and open source Software <https://en.wikipedia.org/wiki/Free_and_open_source_software>`_
 available under the `OSI-approved <https://opensource.org/licenses/MIT>`_ MIT license. This means it is
 free as in "free speech" as well as in "free beer."
 
@@ -115,9 +115,8 @@ If you've ever written anything in a language like Python before, then you'll fe
 right at home. For examples and a complete overview of the power GDScript offers
 you, check out the :ref:`GDScript scripting guide <doc_gdscript>`.
 
-There are several reasons to use GDScript, especially when you are prototyping, in
-alpha/beta stages of your project, or are not creating the next AAA title. The
-most salient reason is the overall **reduction of complexity**.
+There are several reasons to use GDScript, but the most salient reason is the overall
+**reduction of complexity**.
 
 The original intent of creating a tightly integrated, custom scripting language for
 Godot was two-fold: first, it reduces the amount of time necessary to get up and running
@@ -133,7 +132,7 @@ more familiar programming languages, especially when supporting those more famil
 languages would result in a worse experience. We understand if you would rather use
 another language in Godot (see the list of supported options above). That being said, if
 you haven't given GDScript a try, try it for **three days**. Just like Godot,
-once you see how powerful it is and rapid your development becomes, we think GDScript
+once you see how powerful it is and how rapid your development becomes, we think GDScript
 will grow on you.
 
 More information about getting comfortable with GDScript or dynamically typed
@@ -168,6 +167,38 @@ The main reasons for creating a custom scripting language for Godot were:
 
 GDScript was designed to curtail the issues above, and more.
 
+.. _doc_faq_which_programming_language_is_fastest:
+
+Which programming language is fastest?
+--------------------------------------
+
+In most games, the *scripting language* itself is not the cause of performance
+problems. Instead, performance is slowed by inefficient algorithms (which are
+slow in all languages), by GPU performance, or by the common C++ engine code
+like physics or navigation. All languages supported by Godot are fast enough for
+general-purpose scripting. You should choose a language based on other factors,
+like ease-of-use, familiarity, platform support, or language features.
+
+In general, the performance of C# and GDScript is within the same order of
+magnitude, and C++ is faster than both.
+
+Comparing GDScript performance to C# is tricky, since C# can be faster in some
+specific cases. The C# *language* itself tends to be faster than GDScript, which
+means that C# can be faster in situations with few calls to Godot engine code.
+However, C# can be slower than GDScript when making many Godot API calls, due
+to the cost of *marshalling*. C#'s performance can also be brought down by garbage
+collection which occurs at random and unpredictable moments. This can result in
+stuttering issues in complex projects, and is not exclusive to Godot.
+
+C++, using :ref:`GDExtension <doc_what_is_gdextension>`, will almost always be
+faster than either C# or GDScript. However, C++ is less easy to use than C# or
+GDScript, and is slower to develop with.
+
+You can also use multiple languages within a single project, with
+:ref:`cross-language scripting <doc_cross_language_scripting>`, or by using
+GDExtension and scripting languages together. Be aware that doing so comes with
+its own complications.
+
 What 3D model formats does Godot support?
 -----------------------------------------
 
@@ -225,7 +256,7 @@ This will automatically perform the required steps for desktop integration.
 Alternatively, you can manually perform the steps that an installer would do for you:
 
 Windows
-^^^^^^^
+~~~~~~~
 
 - Move the Godot executable to a stable location (i.e. outside of your Downloads folder),
   so you don't accidentally move it and break the shortcut in the future.
@@ -236,14 +267,14 @@ Windows
   **Pin to Task Bar**.
 
 macOS
-^^^^^
+~~~~~
 
 Drag the extracted Godot application to ``/Applications/Godot.app``, then drag it
 to the Dock if desired. Spotlight will be able to find Godot as long as it's in
 ``/Applications`` or ``~/Applications``.
 
 Linux
-^^^^^
+~~~~~
 
 - Move the Godot binary to a stable location (i.e. outside of your Downloads folder),
   so you don't accidentally move it and break the shortcut in the future.
@@ -291,7 +322,7 @@ While Vulkan and OpenGL remain our primary focus for their open standard and
 cross-platform benefits, Godot 4.3 introduced experimental support for Direct3D 12.
 This addition aims to enhance performance and compatibility on platforms where
 Direct3D 12 is prevalent, such as Windows and Xbox. However, Vulkan and OpenGL
-will continue as the default rendering backends on all platforms, including Windows.
+will continue as the default rendering drivers on all platforms, including Windows.
 
 Why does Godot aim to keep its core feature set small?
 ------------------------------------------------------
@@ -394,6 +425,11 @@ Some new versions are safer to upgrade to than others. In general, whether you
 should upgrade depends on your project's circumstances. See
 :ref:`doc_release_policy_should_i_upgrade_my_project` for more information.
 
+Should I use the Forward+, Mobile, or Compatibility renderer?
+-------------------------------------------------------------
+
+You can find a detailed comparison of the renderers in :ref:`doc_renderers`.
+
 I would like to contribute! How can I get started?
 --------------------------------------------------
 
@@ -563,7 +599,7 @@ resulted in better usability while still being fast enough for most use cases.
 
 That said, nothing prevents you from making use of composition in your project
 by creating child Nodes with individual scripts. These nodes can then be added and
-removed at run-time to dynamically add and remove behaviors.
+removed at runtime to dynamically add and remove behaviors.
 
 More information about Godot's design choices can be found in
 `this article <https://godotengine.org/article/why-isnt-godot-ecs-based-game-engine>`__.

+ 19 - 14
about/introduction.rst

@@ -5,11 +5,19 @@
 Introduction
 ============
 
-::
+.. tabs::
+ .. code-tab:: gdscript
 
     func _ready():
         print("Hello world!")
 
+ .. code-tab:: csharp
+
+    public override void _Ready()
+    {
+        GD.Print("Hello world!");
+    }
+
 Welcome to the official documentation of **Godot Engine**, the free and open source
 community-driven 2D and 3D game engine! Behind this mouthful, you will find a
 powerful yet user-friendly tool that you can use to develop any kind of game,
@@ -28,8 +36,8 @@ consider checking them out. Otherwise, :ref:`Getting Started <doc_getting_starte
 is a great starting point.
 
 In case you have trouble with one of the tutorials or your project,
-you can find help on the various :ref:`Community channels <doc_community_channels>`,
-especially the Godot `Discord`_ community and
+you can find help on the various `Community channels <https://godotengine.org/community/>`_,
+especially the Godot `Discord <https://discord.gg/godotengine>`_ community and
 `Forum <https://forum.godotengine.org/>`_.
 
 About Godot Engine
@@ -63,10 +71,10 @@ This documentation is organized into several sections:
 - **About** contains this introduction as well as
   information about the engine, its history, its licensing, authors, etc. It
   also contains the :ref:`doc_faq`.
-- **Getting Started** contains all necessary information on using the
-  engine to make games. It starts with the :ref:`Step by step
-  <toc-learn-step_by_step>` tutorial which should be the entry point for all
-  new users. **This is the best place to start if you're new!**
+- **Getting Started** contains all necessary information on using the engine to
+  make games. It starts with the :ref:`doc_getting_started_intro` section which
+  should be the entry point for all new users. **This is the best place to start
+  if you're new!**
 - The **Manual** can be read or referenced as needed,
   in any order. It contains feature-specific tutorials and documentation.
 - **Contributing** gives information related to contributing to
@@ -75,11 +83,10 @@ This documentation is organized into several sections:
   It also contains sections intended for advanced users and contributors,
   with information on compiling the engine, contributing to the editor,
   or developing C++ modules.
-- **Community** is dedicated to the life of Godot's community.
-  It points to various community channels like the
-  `Godot Contributors Chat <https://chat.godotengine.org/>`_ and
-  `Discord`_ and contains a list of recommended third-party tutorials and
-  materials outside of this documentation.
+- **Community** is dedicated to the life of Godot's community and contains a list of
+  recommended third-party tutorials and materials outside of this documentation.
+  It also provides details on the Asset Library. It also used to list Godot
+  communities, which are now listed on the `Godot website <https://godotengine.org/community/>`_.
 - Finally, the **Class reference** documents the full Godot API,
   also available directly within the engine's script editor.
   You can find information on all classes, functions, signals and so on here.
@@ -104,5 +111,3 @@ with attribution to "*Juan Linietsky, Ariel Manzur, and the Godot Engine communi
 unless otherwise noted.
 
 *Have fun reading and making games with Godot Engine!*
-
-.. _Discord: https://discord.gg/4JBkykG

+ 42 - 41
about/list_of_features.rst

@@ -10,8 +10,8 @@ This page aims to list **all** features currently supported by Godot.
 .. note::
 
     This page lists features supported by the current stable version of
-    Godot. Some of these features may not be available in the
-    `LTS release series (3.x) <https://docs.godotengine.org/en/3.5/about/list_of_features.html>`__.
+    Godot. Some of these features are not available in the
+    `3.x release series <https://docs.godotengine.org/en/3.6/about/list_of_features.html>`__.
 
 Platforms
 ---------
@@ -22,7 +22,7 @@ Platforms
 
 **Can run both the editor and exported projects:**
 
-- Windows (x86, 64-bit and 32-bit).
+- Windows (x86 and ARM, 64-bit and 32-bit).
 - macOS (x86 and ARM, 64-bit only).
 - Linux (x86 and ARM, 64-bit and 32-bit).
 
@@ -30,8 +30,7 @@ Platforms
      on an old enough base distribution.
    - Official binaries are compiled using the
      `Godot Engine buildroot <https://github.com/godotengine/buildroot>`__,
-     allowing for binaries that work across common Linux distributions
-     (including LTS variants).
+     allowing for binaries that work across common Linux distributions.
 
 - Android (editor support is experimental).
 - :ref:`Web browsers <doc_using_the_web_editor>`. Experimental in 4.0,
@@ -96,17 +95,20 @@ Editor
 Rendering
 ---------
 
-3 rendering *methods* (running over 2 rendering *drivers*) are available:
+Godot 4 includes three renderers:
 
-- **Forward+**, running over Vulkan 1.0 (with optional Vulkan 1.1 and 1.2
-  features). The most advanced graphics backend, suited for desktop platforms
-  only. Used by default on desktop platforms.
-- **Forward Mobile**, running over Vulkan 1.0 (with optional Vulkan 1.1 and 1.2
-  features). Less features, but renders simple scenes faster. Suited for mobile
-  and desktop platforms. Used by default on mobile platforms.
-- **Compatibility**, running over OpenGL 3.3 / OpenGL ES 3.0 / WebGL 2.0. The least
-  advanced graphics backend, suited for low-end desktop and mobile platforms.
-  Used by default on the web platform.
+- **Forward+**. The most advanced renderer, suited for desktop platforms only.
+  Used by default on desktop platforms. This renderer uses **Vulkan**, **Direct3D 12**,
+  or **Metal** as the rendering driver, and it uses the **RenderingDevice** backend.
+- **Mobile**. Fewer features, but renders simple scenes faster. Suited for mobile
+  and desktop platforms. Used by default on mobile platforms. This renderer uses
+  **Vulkan**, **Direct3D 12**, or **Metal** as the rendering driver, and it uses
+  the **RenderingDevice** backend.
+- **Compatibility**, sometimes called **GL Compatibility**. The least advanced
+  renderer, suited for low-end desktop and mobile platforms. Used by default on
+  the web platform. This renderer uses **OpenGL** as the rendering driver.
+
+See :ref:`doc_renderers` for a detailed comparison of the rendering methods.
 
 2D graphics
 -----------
@@ -187,9 +189,9 @@ Rendering
 
 - HDR rendering with sRGB.
 - Perspective, orthographic and frustum-offset cameras.
-- When using the Forward+ backend, a depth prepass is used to improve
+- When using the Forward+ renderer, a depth prepass is used to improve
   performance in complex scenes by reducing the cost of overdraw.
-- :ref:`doc_variable_rate_shading` on supported GPUs in Forward+ and Forward Mobile.
+- :ref:`doc_variable_rate_shading` on supported GPUs in Forward+ and Mobile.
 
 **Physically-based rendering (built-in material features):**
 
@@ -216,10 +218,10 @@ Rendering
 - Specular, indirect light, and volumetric fog energy can be adjusted on a per-light basis.
 - Adjustable light "size" for fake area lights (will also make shadows blurrier).
 - Optional distance fade system to fade distant lights and their shadows, improving performance.
-- When using the Forward+ backend (default on desktop), lights are
+- When using the Forward+ renderer (default on desktop), lights are
   rendered with clustered forward optimizations to decrease their individual cost.
   Clustered rendering also lifts any limits on the number of lights that can be used on a mesh.
-- When using the Forward Mobile backend, up to 8 omni lights and 8 spot lights can
+- When using the Mobile renderer, up to 8 omni lights and 8 spot lights can
   be displayed per mesh resource. Baked lighting can be used to overcome this limit
   if needed.
 
@@ -238,7 +240,7 @@ Rendering
 
 **Global illumination with indirect lighting:**
 
-- :ref:`Baked lightmaps <doc_using_lightmap_gi>` (fast, but can't be updated at run-time).
+- :ref:`Baked lightmaps <doc_using_lightmap_gi>` (fast, but can't be updated at runtime).
 
    - Supports baking indirect light only or baking both direct and indirect lighting.
      The bake mode can be adjusted on a per-light basis to allow for hybrid light
@@ -255,7 +257,7 @@ Rendering
 - :ref:`Voxel-based GI probes <doc_using_voxel_gi>`. Supports
   dynamic lights *and* dynamic occluders, while also supporting reflections.
   Requires a fast baking step which can be performed in the editor or at
-  run-time (including from an exported project).
+  runtime (including from an exported project).
 - :ref:`Signed-distance field GI <doc_using_sdfgi>` designed for large open worlds.
   Supports dynamic lights, but not dynamic occluders. Supports reflections.
   No baking required.
@@ -275,11 +277,12 @@ Rendering
   Parallax box correction can optionally be enabled.
 - Screen-space reflections with support for material roughness.
 - Reflection techniques can be mixed together for greater accuracy or scalability.
-- When using the Forward+ backend (default on desktop), reflection probes are
+- When using the Forward+ renderer (default on desktop), reflection probes are
   rendered with clustered forward optimizations to decrease their individual cost.
   Clustered rendering also lifts any limits on the number of reflection probes that can be used on a mesh.
-- When using the Forward Mobile backend, up to 8 reflection probes can be displayed per mesh
-  resource.
+- When using the Mobile renderer, up to 8 reflection probes can be displayed per mesh
+  resource. When using the Compatibility renderer, up to 2 reflection probes can
+  be displayed per mesh resource.
 
 **Decals:**
 
@@ -288,14 +291,14 @@ Rendering
 - Texture channels are smoothly overlaid on top of the underlying material,
   with support for normal/ORM-only decals.
 - Support for normal fade to fade the decal depending on its incidence angle.
-- Does not rely on run-time mesh generation. This means decals can be used on
+- Does not rely on runtime mesh generation. This means decals can be used on
   complex skinned meshes with no performance penalty, even if the decal moves every frame.
 - Support for nearest, bilinear, trilinear or anisotropic texture filtering (configured globally).
 - Optional distance fade system to fade distant decals, improving performance.
-- When using the Forward+ backend (default on desktop), decals are
+- When using the Forward+ renderer (default on desktop), decals are
   rendered with clustered forward optimizations to decrease their individual cost.
   Clustered rendering also lifts any limits on the number of decals that can be used on a mesh.
-- When using the Forward Mobile backend, up to 8 decals can be displayed per mesh
+- When using the Mobile renderer, up to 8 decals can be displayed per mesh
   resource.
 
 **Sky:**
@@ -367,7 +370,7 @@ Rendering
 - ETC2 (not supported on macOS).
 - S3TC (not supported on mobile/Web platforms).
 
-**Anti-aliasing:**
+**Antialiasing:**
 
 - Temporal :ref:`antialiasing <doc_3d_antialiasing>` (TAA).
 - AMD FidelityFX Super Resolution 2.2 :ref:`antialiasing <doc_3d_antialiasing>` (FSR2),
@@ -405,7 +408,7 @@ improve quality. This can be helpful when
 
 - :ref:`3D geometry helper class <class_Geometry3D>`.
 - Support for exporting the current scene as a glTF 2.0 file, both from the editor
-  and at run-time from an exported project.
+  and at runtime from an exported project.
 
 3D physics
 ----------
@@ -448,26 +451,24 @@ Scripting
 - Support for :ref:`cross-language scripting <doc_cross_language_scripting>`.
 - Many 2D, 3D and 4D linear algebra data types such as vectors and transforms.
 
-:ref:`GDScript: <toc-learn-scripting-gdscript>`
+:ref:`GDScript: <doc_gdscript>`
 
-- :ref:`High-level interpreted language <doc_gdscript>` with
+- :ref:`High-level interpreted language <doc_gdscript_reference>` with
   :ref:`optional static typing <doc_gdscript_static_typing>`.
 - Syntax inspired by Python. However, GDScript is **not** based on Python.
 - Syntax highlighting is provided on GitHub.
 - :ref:`Use threads <doc_using_multiple_threads>` to perform asynchronous actions
   or make use of multiple processor cores.
 
-:ref:`C#: <toc-learn-scripting-C#>`
+:ref:`C#: <doc_c_sharp>`
 
 - Packaged in a separate binary to keep file sizes and dependencies down.
-- Supports .NET 6 and higher.
+- Supports .NET 8 and higher.
 
-   - Full support for the C# 10.0 syntax and features.
+   - Full support for the C# 12.0 syntax and features.
 
-- Supports Windows, Linux, and macOS. As of 4.2 experimental support for Android
-  and iOS is also available (requires a .NET 7.0 project for Android and 8.0 for iOS).
+- Supports Windows, Linux, and macOS. Since Godot 4.2, experimental support for Android and iOS is also available.
 
-   - On the Android platform only some architectures are supported: ``arm64`` and ``x64``.
    - On the iOS platform only some architectures are supported: ``arm64``.
    - The web platform is currently unsupported. To use C# on that platform,
      consider Godot 3 instead.
@@ -487,7 +488,7 @@ Scripting
    - Use any build system and language features you wish.
 
 - Actively developed GDExtension bindings for `D <https://github.com/godot-dlang/godot-dlang>`__,
-  `Haxe <https://hxgodot.github.io/>`__, `Swift <https://github.com/migueldeicaza/SwiftGodot>`__, and `Rust <https://github.com/godot-rust/gdextension>`__
+  `Swift <https://github.com/migueldeicaza/SwiftGodot>`__, and `Rust <https://github.com/godot-rust/gdextension>`__
   bindings provided by the community. (Some of these bindings may be experimental and not production-ready).
 
 Audio
@@ -542,7 +543,7 @@ Import
    - Collada (.dae).
    - Wavefront OBJ (static scenes only, can be loaded directly as a mesh or imported as a 3D scene).
 
-- Support for loading glTF 2.0 scenes at run-time, including from an exported project.
+- Support for loading glTF 2.0 scenes at runtime, including from an exported project.
 - 3D meshes use `Mikktspace <http://www.mikktspace.com/>`__ to generate tangents
   on import, which ensures consistency with other 3D applications such as Blender.
 
@@ -574,7 +575,7 @@ Navigation
 - A* algorithm in :ref:`2D <class_AStar2D>` and :ref:`3D <class_AStar3D>`.
 - Navigation meshes with dynamic obstacle avoidance in
   :ref:`2D <doc_navigation_overview_2d>` and :ref:`3D <doc_navigation_overview_3d>`.
-- Generate navigation meshes from the editor or at run-time (including from an exported project).
+- Generate navigation meshes from the editor or at runtime (including from an exported project).
 
 Networking
 ----------
@@ -651,7 +652,7 @@ XR support (AR and VR)
 
    - Including support for popular desktop headsets like the Valve Index, WMR headsets, and Quest over Link.
 
-- Support for :ref:`Android based headsets <doc_deploying_to_android>` using OpenXR through a plugin.
+- Support for :ref:`Android-based headsets <doc_deploying_to_android>` using OpenXR through a plugin.
 
   - Including support for popular stand alone headsets like the Meta Quest 1/2/3 and Pro, Pico 4, Magic Leap 2, and Lynx R1.
 

+ 26 - 18
about/release_policy.rst

@@ -63,6 +63,8 @@ further developed for maintenance releases in a Git branch of the same name
 Release support timeline
 ------------------------
 
+.. UPDATE: Table changes every minor version. Support policy may change.
+
 Stable branches are supported *at least* until the next stable branch is
 released and has received its first patch update. In practice, we support
 stable branches on a *best effort* basis for as long as they have active users
@@ -72,7 +74,7 @@ Whenever a new major version is released, we make the previous stable branch a
 long-term supported release, and do our best to provide fixes for issues
 encountered by users of that branch who cannot port complex projects to the new
 major version. This was the case for the 2.1 branch, and is the case for the
-3.6 branch.
+3.x branch.
 
 In a given minor release series, only the latest patch release receives support.
 If you experience an issue using an older patch release, please upgrade to the
@@ -82,23 +84,29 @@ on GitHub.
 +--------------+----------------------+--------------------------------------------------------------------------+
 | **Version**  | **Release date**     | **Support level**                                                        |
 +--------------+----------------------+--------------------------------------------------------------------------+
-| Godot 4.3    | April 2024           | |unstable| *Development.* Receives new features, usability and           |
-| (`master`)   | (estimate)           | performance improvements, as well as bug fixes, while under development. |
+| Godot 4.5    | Q3 2025 (estimate)   | |unstable| *Development.* Receives new features, usability and           |
+| (`master`)   |                      | performance improvements, as well as bug fixes, while under development. |
 +--------------+----------------------+--------------------------------------------------------------------------+
-| Godot 4.2    | November 2023        | |supported| Receives fixes for bugs and security issues, as well as      |
+| Godot 4.4    | March 2025           | |supported| Receives fixes for bugs and security issues, as well as      |
 |              |                      | patches that enable platform support.                                    |
 +--------------+----------------------+--------------------------------------------------------------------------+
-| Godot 4.1    | July 2023            | |supported| Receives fixes for bugs and security issues, as well as      |
+| Godot 4.3    | August 2024          | |supported| Receives fixes for bugs and security issues, as well as      |
 |              |                      | patches that enable platform support.                                    |
 +--------------+----------------------+--------------------------------------------------------------------------+
+| Godot 4.2    | November 2023        | |partial| Receives fixes for security and platform support issues only.  |
++--------------+----------------------+--------------------------------------------------------------------------+
+| Godot 4.1    | July 2023            | |eol| No longer supported (last update: 4.1.4).                          |
++--------------+----------------------+--------------------------------------------------------------------------+
 | Godot 4.0    | March 2023           | |eol| No longer supported (last update: 4.0.4).                          |
 +--------------+----------------------+--------------------------------------------------------------------------+
-| Godot 3.6    | Q1 2024 (estimate)   | |supported| *Beta.* Receives new features, usability and performance     |
-| (`3.x`, LTS) |                      | improvements, as well as bug fixes, while under development.             |
+| Godot 3.7    | No ETA for now       | |supported| *Beta.* Receives new features, usability and performance     |
+| (`3.x`)      |                      | improvements, as well as bug fixes, while under development.             |
 +--------------+----------------------+--------------------------------------------------------------------------+
-| Godot 3.5    | August 2022          | |supported| Receives fixes for bugs and security issues, as well as      |
+| Godot 3.6    | September 2024       | |supported| Receives fixes for bugs and security issues, as well as      |
 |              |                      | patches that enable platform support.                                    |
 +--------------+----------------------+--------------------------------------------------------------------------+
+| Godot 3.5    | August 2022          | |partial| Receives fixes for security and platform support issues only.  |
++--------------+----------------------+--------------------------------------------------------------------------+
 | Godot 3.4    | November 2021        | |eol| No longer supported (last update: 3.4.5).                          |
 +--------------+----------------------+--------------------------------------------------------------------------+
 | Godot 3.3    | April 2021           | |eol| No longer supported (last update: 3.3.4).                          |
@@ -196,12 +204,14 @@ features that come with 4.0+.
 When is the next release out?
 -----------------------------
 
+.. UPDATE: Refers to specific current minor versions 3.6 and 3.7.
+
 While Godot contributors aren't working under any deadlines, we strive to
 publish minor releases relatively frequently.
 
-In particular, after the very length release cycle for 4.0, we are pivoting to
-a faster paced development workflow, 4.1 released 4 months after 4.0, and 4.2
-released 4 months after 4.1
+In particular, after the very long release cycle for 4.0, we are pivoting to
+a faster-paced development workflow, 4.1 released 4 months after 4.0, and 4.2
+released 4 months after 4.1.
 
 Frequent minor releases will enable us to ship new features faster (possibly
 as experimental), get user feedback quickly, and iterate to improve those
@@ -212,11 +222,10 @@ Maintenance (patch) releases are released as needed with potentially very
 short development cycles, to provide users of the current stable branch with
 the latest bug fixes for their production needs.
 
-The 3.6 release is still planned and should be the last stable branch of Godot
-3.x. It will be a Long-Term Support (LTS) release, which we plan to support for
-as long as users still need it (due to missing features in Godot 4.x, or
-having published games which they need to keep updating for platform
-requirements).
+There is currently no planned release date for the next 3.x minor version, 3.7.
+The current stable release, 3.6, may be the last stable branch of Godot 3.x.
+Godot 3.x is supported on a best-effort basis, as long as contributors continue
+to maintain it.
 
 What are the criteria for compatibility across engine versions?
 ---------------------------------------------------------------
@@ -275,5 +284,4 @@ compatibility-breaking changes of this kind.
       optional parameter), a GDExtension compatibility method must be created.
       This ensures that existing GDExtensions continue to work across patch and
       minor releases, so that users don't have to recompile them.
-      See `pull request #76446 <https://github.com/godotengine/godot/pull/76446>`_
-      for more information.
+      See :ref:`doc_handling_compatibility_breakages` for more information.

+ 136 - 123
about/system_requirements.rst

@@ -16,16 +16,16 @@ These are the **minimum** specifications required to run the Godot editor and wo
 on a simple 2D or 3D project:
 
 Desktop or laptop PC - Minimum
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. When adjusting specifications, make sure to only mention hardware that can run the required OS version.
 .. For example, the x86 CPU requirement for macOS is set after the MacBook Air 11" (late 2010 model),
 .. which can run up to macOS 10.13.
 
 +----------------------+-----------------------------------------------------------------------------------------+
-| **CPU**              | - **Windows:** x86_32 CPU with SSE2 instructions, or any x86_64 CPU                     |
+| **CPU**              | - **Windows:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv8 CPU                 |
 |                      |                                                                                         |
-|                      |   - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300*                            |
+|                      |   - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Snapdragon X Elite*        |
 |                      |                                                                                         |
 |                      | - **macOS:** x86_64 or ARM CPU (Apple Silicon)                                          |
 |                      |                                                                                         |
@@ -35,15 +35,15 @@ Desktop or laptop PC - Minimum
 |                      |                                                                                         |
 |                      |   - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Raspberry Pi 4*            |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **GPU**              | - **Forward+ rendering method:** Integrated graphics with full Vulkan 1.0 support       |
+| **GPU**              | - **Forward+ renderer:** Integrated graphics with full Vulkan 1.0 support               |
 |                      |                                                                                         |
 |                      |   - *Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics (Kaveri)*      |
 |                      |                                                                                         |
-|                      | - **Mobile rendering method:** Integrated graphics with full Vulkan 1.0 support         |
+|                      | - **Mobile renderer:** Integrated graphics with full Vulkan 1.0 support                 |
 |                      |                                                                                         |
 |                      |   - *Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics (Kaveri)*      |
 |                      |                                                                                         |
-|                      | - **Compatibility rendering method:** Integrated graphics with full OpenGL 3.3 support  |
+|                      | - **Compatibility renderer:** Integrated graphics with full OpenGL 3.3 support          |
 |                      |                                                                                         |
 |                      |   - *Example: Intel HD Graphics 2500 (Ivy Bridge), AMD Radeon R5 Graphics (Kaveri)*     |
 +----------------------+-----------------------------------------------------------------------------------------+
@@ -69,39 +69,38 @@ Desktop or laptop PC - Minimum
 
     Vulkan drivers for these Windows versions are known to have issues with
     memory leaks. As a result, it's recommended to stick to the Compatibility
-    rendering method when running Godot on a Windows version older than 10.
+    renderer when running Godot on a Windows version older than 10.
 
 Mobile device (smartphone/tablet) - Minimum
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 +----------------------+-----------------------------------------------------------------------------------------+
 | **CPU**              | - **Android:** SoC with any 32-bit or 64-bit ARM or x86 CPU                             |
 |                      |                                                                                         |
-|                      |    - *Example: Qualcomm Snapdragon 430, Samsung Exynos 5 Octa 5430*                     |
+|                      |   - *Example: Qualcomm Snapdragon 430, Samsung Exynos 5 Octa 5430*                      |
 |                      |                                                                                         |
 |                      | - **iOS:** *Cannot run the editor*                                                      |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **GPU**              | - **Forward+ rendering method:** SoC featuring GPU with full Vulkan 1.0 support         |
+| **GPU**              | - **Forward+ renderer:** SoC featuring GPU with full Vulkan 1.0 support                 |
 |                      |                                                                                         |
 |                      |   - *Example: Qualcomm Adreno 505, Mali-G71 MP2*                                        |
 |                      |                                                                                         |
-|                      | - **Mobile rendering method:** SoC featuring GPU with full Vulkan 1.0 support           |
+|                      | - **Mobile renderer:** SoC featuring GPU with full Vulkan 1.0 support                   |
 |                      |                                                                                         |
 |                      |   - *Example: Qualcomm Adreno 505, Mali-G71 MP2*                                        |
 |                      |                                                                                         |
-|                      | - **Compatibility rendering method:** SoC featuring GPU with full OpenGL ES 3.0 support |
+|                      | - **Compatibility renderer:** SoC featuring GPU with full OpenGL ES 3.0 support         |
 |                      |                                                                                         |
 |                      |   - *Example: Qualcomm Adreno 306, Mali-T628 MP6*                                       |
 +----------------------+-----------------------------------------------------------------------------------------+
 | **RAM**              | - **Native editor:** 3 GB                                                               |
 |                      | - **Web editor:** 6 GB                                                                  |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **Storage**          | 200 MB (used for the executable, project files and cache).                              |
+| **Storage**          | 200 MB (used for the executable, project files and cache)                               |
 |                      | Exporting projects requires downloading export templates separately                     |
-|                      | (1.3 GB after installation).                                                            |
+|                      | (1.3 GB after installation)                                                             |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **Operating system** | - **Native editor:** Android 6.0 (Compatibility) or Android 9.0 (Forward+/Mobile),      |
-|                      |   iOS 11.0                                                                              |
+| **Operating system** | - **Native editor:** Android 6.0 (Compatibility) or Android 9.0 (Forward+/Mobile)       |
 |                      | - **Web editor:** Firefox 79, Chrome 88, Edge 79, Safari 15.2, Opera 64,                |
 |                      |   Samsung Internet 15                                                                   |
 +----------------------+-----------------------------------------------------------------------------------------+
@@ -110,45 +109,45 @@ These are the **recommended** specifications to get a smooth experience with the
 Godot editor on a simple 2D or 3D project:
 
 Desktop or laptop PC - Recommended
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-+----------------------+-----------------------------------------------------------------------------------------+
-| **CPU**              | - **Windows:** x86_64 CPU with SSE4.2 instructions, with 4 physical cores or more       |
-|                      |                                                                                         |
-|                      |   - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600*                                    |
-|                      |                                                                                         |
-|                      | - **macOS:** x86_64 or ARM CPU (Apple Silicon)                                          |
-|                      |                                                                                         |
-|                      |   - *Example: Intel Core i5-8500, Apple M1*                                             |
-|                      |                                                                                         |
-|                      | - **Linux:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv7 or ARMv8 CPU          |
-|                      |                                                                                         |
-|                      |   - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Raspberry Pi 5 with overclocking*  |
-+----------------------+-----------------------------------------------------------------------------------------+
-| **GPU**              | - **Forward+ rendering method:** Dedicated graphics with full Vulkan 1.2 support        |
-|                      |                                                                                         |
-|                      |   - *Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*            |
-|                      |                                                                                         |
-|                      | - **Mobile rendering method:** Dedicated graphics with full Vulkan 1.2 support          |
-|                      |                                                                                         |
-|                      |   - *Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*            |
-|                      |                                                                                         |
-|                      | - **Compatibility rendering method:** Dedicated graphics with full OpenGL 4.6 support   |
-|                      |                                                                                         |
-|                      |   - *Example: NVIDIA GeForce GTX 650 (Kepler), AMD Radeon HD 7750 (GCN 1.0)*            |
-+----------------------+-----------------------------------------------------------------------------------------+
-| **RAM**              | - **Native editor:** 8 GB                                                               |
-|                      | - **Web editor:** 12 GB                                                                 |
-+----------------------+-----------------------------------------------------------------------------------------+
-| **Storage**          | 1.5 GB (used for the executable, project files, all export templates and cache)         |
-+----------------------+-----------------------------------------------------------------------------------------+
-| **Operating system** | - **Native editor:** Windows 10, macOS 10.15,                                           |
-|                      |   Linux distribution released after 2020                                                |
-|                      | - **Web editor:** Latest version of Firefox, Chrome, Edge, Safari, Opera                |
-+----------------------+-----------------------------------------------------------------------------------------+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
++----------------------+---------------------------------------------------------------------------------------------+
+| **CPU**              | - **Windows:** x86_64 CPU with SSE4.2 instructions, with 4 physical cores or more, ARMv8 CPU|
+|                      |                                                                                             |
+|                      |   - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Snapdragon X Elite*                    |
+|                      |                                                                                             |
+|                      | - **macOS:** x86_64 or ARM CPU (Apple Silicon)                                              |
+|                      |                                                                                             |
+|                      |   - *Example: Intel Core i5-8500, Apple M1*                                                 |
+|                      |                                                                                             |
+|                      | - **Linux:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv7 or ARMv8 CPU              |
+|                      |                                                                                             |
+|                      |   - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Raspberry Pi 5 with overclocking*      |
++----------------------+---------------------------------------------------------------------------------------------+
+| **GPU**              | - **Forward+ renderer:** Dedicated graphics with full Vulkan 1.2 support                    |
+|                      |                                                                                             |
+|                      |   - *Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*                |
+|                      |                                                                                             |
+|                      | - **Mobile renderer:** Dedicated graphics with full Vulkan 1.2 support                      |
+|                      |                                                                                             |
+|                      |   - *Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*                |
+|                      |                                                                                             |
+|                      | - **Compatibility renderer:** Dedicated graphics with full OpenGL 4.6 support               |
+|                      |                                                                                             |
+|                      |   - *Example: NVIDIA GeForce GTX 650 (Kepler), AMD Radeon HD 7750 (GCN 1.0)*                |
++----------------------+---------------------------------------------------------------------------------------------+
+| **RAM**              | - **Native editor:** 8 GB                                                                   |
+|                      | - **Web editor:** 12 GB                                                                     |
++----------------------+---------------------------------------------------------------------------------------------+
+| **Storage**          | 1.5 GB (used for the executable, project files, all export templates and cache)             |
++----------------------+---------------------------------------------------------------------------------------------+
+| **Operating system** | - **Native editor:** Windows 10, macOS 10.15,                                               |
+|                      |   Linux distribution released after 2020                                                    |
+|                      | - **Web editor:** Latest version of Firefox, Chrome, Edge, Safari, Opera                    |
++----------------------+---------------------------------------------------------------------------------------------+
 
 Mobile device (smartphone/tablet) - Recommended
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 +----------------------+-----------------------------------------------------------------------------------------+
 | **CPU**              | - **Android:** SoC with 64-bit ARM or x86 CPU, with 3 "performance" cores or more       |
@@ -157,15 +156,15 @@ Mobile device (smartphone/tablet) - Recommended
 |                      |                                                                                         |
 |                      | - **iOS:** *Cannot run the editor*                                                      |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **GPU**              | - **Forward+ rendering method:** SoC featuring GPU with full Vulkan 1.2 support         |
+| **GPU**              | - **Forward+ renderer:** SoC featuring GPU with full Vulkan 1.2 support                 |
 |                      |                                                                                         |
 |                      |   - *Example: Qualcomm Adreno 630, Mali-G72 MP18*                                       |
 |                      |                                                                                         |
-|                      | - **Mobile rendering method:** SoC featuring GPU with full Vulkan 1.2 support           |
+|                      | - **Mobile renderer:** SoC featuring GPU with full Vulkan 1.2 support                   |
 |                      |                                                                                         |
 |                      |   - *Example: Qualcomm Adreno 630, Mali-G72 MP18*                                       |
 |                      |                                                                                         |
-|                      | - **Compatibility rendering method:** SoC featuring GPU with full OpenGL ES 3.2 support |
+|                      | - **Compatibility renderer:** SoC featuring GPU with full OpenGL ES 3.2 support         |
 |                      |                                                                                         |
 |                      |   - *Example: Qualcomm Adreno 630, Mali-G72 MP18*                                       |
 +----------------------+-----------------------------------------------------------------------------------------+
@@ -174,7 +173,7 @@ Mobile device (smartphone/tablet) - Recommended
 +----------------------+-----------------------------------------------------------------------------------------+
 | **Storage**          | 1.5 GB (used for the executable, project files, all export templates and cache)         |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **Operating system** | - **Native editor:** Android 9.0 or iOS 11.0                                            |
+| **Operating system** | - **Native editor:** Android 9.0                                                        |
 |                      | - **Web editor:** Latest version of Firefox, Chrome, Edge, Safari, Opera,               |
 |                      |   Samsung Internet                                                                      |
 +----------------------+-----------------------------------------------------------------------------------------+
@@ -187,7 +186,7 @@ Exported Godot project
     The requirements below are a baseline for a **simple** 2D or 3D project,
     with basic scripting and few visual flourishes. CPU, GPU, RAM and
     storage requirements will heavily vary depending on your project's scope,
-    its rendering method, viewport resolution and graphics settings chosen.
+    its renderer, viewport resolution and graphics settings chosen.
     Other programs running on the system while the project is running
     will also compete for resources, including RAM and video RAM.
 
@@ -201,34 +200,37 @@ These are the **minimum** specifications required to run a simple 2D or 3D
 project exported with Godot:
 
 Desktop or laptop PC - Minimum
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. When adjusting specifications, make sure to only mention hardware that can run the required OS version.
 .. For example, the x86 CPU requirement for macOS is set after the MacBook Air 11" (late 2010 model),
 .. which can run up to macOS 10.13.
 
 +----------------------+-----------------------------------------------------------------------------------------+
-| **CPU**              | - **Windows:** x86_32 CPU with SSE2 instructions, or any x86_64 CPU                     |
+| **CPU**              | - **Windows:** x86_32 CPU with SSE2 instructions, any x86_64 CPU, ARMv8 CPU             |
 |                      |                                                                                         |
-|                      |  - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300*                             |
+|                      |   - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Snapdragon X Elite*        |
 |                      |                                                                                         |
 |                      | - **macOS:** x86_64 or ARM CPU (Apple Silicon)                                          |
 |                      |                                                                                         |
-|                      |  - *Example: Intel Core 2 Duo SU9400, Apple M1*                                         |
+|                      |   - *Example: Intel Core 2 Duo SU9400, Apple M1*                                        |
 |                      |                                                                                         |
 |                      | - **Linux:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv7 or ARMv8 CPU          |
 |                      |                                                                                         |
-|                      |  - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Raspberry Pi 4*             |
+|                      |   - *Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Raspberry Pi 4*            |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **GPU**              | - **Forward+ rendering method:** Integrated graphics with full Vulkan 1.0 support       |
+| **GPU**              | - **Forward+ renderer:** Integrated graphics with full Vulkan 1.0 support,              |
+|                      |   Metal 3 support (macOS) or Direct3D 12 (12_0 feature level) support (Windows)         |
 |                      |                                                                                         |
 |                      |   - *Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics (Kaveri)*      |
 |                      |                                                                                         |
-|                      | - **Mobile rendering method:** Integrated graphics with full Vulkan 1.0 support         |
+|                      | - **Mobile renderer:** Integrated graphics with full Vulkan 1.0 support,                |
+|                      |   Metal 3 support (macOS) or Direct3D 12 (12_0 feature level) support (Windows)         |
 |                      |                                                                                         |
 |                      |   - *Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics (Kaveri)*      |
 |                      |                                                                                         |
-|                      | - **Compatibility rendering method:** Integrated graphics with full OpenGL 3.3 support  |
+|                      | - **Compatibility renderer:** Integrated graphics with full OpenGL 3.3 support          |
+|                      |   or Direct3D 11 support (Windows).                                                     |
 |                      |                                                                                         |
 |                      |   - *Example: Intel HD Graphics 2500 (Ivy Bridge), AMD Radeon R5 Graphics (Kaveri)*     |
 +----------------------+-----------------------------------------------------------------------------------------+
@@ -237,8 +239,10 @@ Desktop or laptop PC - Minimum
 +----------------------+-----------------------------------------------------------------------------------------+
 | **Storage**          | 150 MB (used for the executable, project files and cache)                               |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **Operating system** | - **For native exports:** Windows 7, macOS 10.13 (Compatibility) or                     |
-|                      |   macOS 10.15 (Forward+/Mobile), Linux distribution released after 2016                 |
+| **Operating system** | - **For native exports:** Windows 7 (Compatibility and Forward+/Mobile, Vulkan),        |
+|                      |   Windows 10 (Forward+/Mobile, Direct3D 12), macOS 10.13 (Compatibility), macOS 10.15   |
+|                      |   (Forward+/Mobile, Vulkan), macOS 13.0 (Forward+/Mobile, Metal), Linux distribution    |
+|                      |   released after 2016                                                                   |
 |                      | - **For web exports:** Firefox 79, Chrome 68, Edge 79, Safari 15.2, Opera 64            |
 +----------------------+-----------------------------------------------------------------------------------------+
 
@@ -252,10 +256,10 @@ Desktop or laptop PC - Minimum
 
     Vulkan drivers for these Windows versions are known to have issues with
     memory leaks. As a result, it's recommended to stick to the Compatibility
-    rendering method when running Godot on a Windows version older than 10.
+    renderer when running Godot on a Windows version older than 10.
 
 Mobile device (smartphone/tablet) - Minimum
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 +----------------------+-----------------------------------------------------------------------------------------+
 | **CPU**              | - **Android:** SoC with any 32-bit or 64-bit ARM or x86 CPU                             |
@@ -266,25 +270,29 @@ Mobile device (smartphone/tablet) - Minimum
 |                      |                                                                                         |
 |                      |   - *Example: Apple A7 (iPhone 5S)*                                                     |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **GPU**              | - **Forward+ rendering method:** SoC featuring GPU with full Vulkan 1.0 support         |
+| **GPU**              | - **Forward+ renderer:** SoC featuring GPU with full Vulkan 1.0 support, or             |
+|                      |   Metal 3 support (iOS/iPadOS)                                                          |
 |                      |                                                                                         |
-|                      |   - *Example: Qualcomm Adreno 505, Mali-G71 MP2, PowerVR G6430 (iPhone 6S/iPhone SE 1)* |
+|                      |   - *Example (Vulkan): Qualcomm Adreno 505, Mali-G71 MP2, Apple A12 (iPhone XR/XS)*     |
+|                      |   - *Example (Metal): Apple A11 (iPhone 8/X)*                                           |
 |                      |                                                                                         |
-|                      | - **Mobile rendering method:** SoC featuring GPU with full Vulkan 1.0 support           |
+|                      | - **Mobile renderer:** SoC featuring GPU with full Vulkan 1.0 support, or               |
+|                      |   Metal 3 support (iOS/iPadOS)                                                          |
 |                      |                                                                                         |
-|                      |   - *Example: Qualcomm Adreno 505, Mali-G71 MP2, PowerVR G6430 (iPhone 6S/iPhone SE 1)* |
+|                      |   - *Example (Vulkan): Qualcomm Adreno 505, Mali-G71 MP2, Apple A12 (iPhone XR/XS)*     |
+|                      |   - *Example (Metal): Apple A11 (iPhone 8/X)*                                           |
 |                      |                                                                                         |
-|                      | - **Compatibility rendering method:** SoC featuring GPU with full OpenGL ES 3.0 support |
+|                      | - **Compatibility renderer:** SoC featuring GPU with full OpenGL ES 3.0 support         |
 |                      |                                                                                         |
-|                      |   - *Example: Qualcomm Adreno 306, Mali-T628 MP6, PowerVR G6430 (iPhone 5S)*            |
+|                      |   - *Example: Qualcomm Adreno 306, Mali-T628 MP6, Apple A7 (iPhone 5S)*                 |
 +----------------------+-----------------------------------------------------------------------------------------+
 | **RAM**              | - **For native exports:** 1 GB                                                          |
 |                      | - **For web exports:** 2 GB                                                             |
 +----------------------+-----------------------------------------------------------------------------------------+
 | **Storage**          | 150 MB (used for the executable, project files and cache)                               |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **Operating system** | - **For native exports:** Android 6.0 (Compatibility) or Android 9.0 (Forward+/Mobile), |
-|                      |   iOS 11.0                                                                              |
+| **Operating system** | - **For native exports:** Android 6.0 (Compatibility), Android 9.0 (Forward+/Mobile),   |
+|                      |   iOS 12.0 (Forward+/Mobile, Vulkan), iOS 16.0 (Forward+/Mobile, Metal)                 |
 |                      | - **For web exports:** Firefox 79, Chrome 88, Edge 79, Safari 15.2, Opera 64,           |
 |                      |   Samsung Internet 15                                                                   |
 +----------------------+-----------------------------------------------------------------------------------------+
@@ -293,45 +301,47 @@ These are the **recommended** specifications to get a smooth experience with a
 simple 2D or 3D project exported with Godot:
 
 Desktop or laptop PC - Recommended
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-+----------------------+-----------------------------------------------------------------------------------------+
-| **CPU**              | - **Windows:** x86_64 CPU with SSE4.2 instructions, with 4 physical cores or more       |
-|                      |                                                                                         |
-|                      |  - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600*                                     |
-|                      |                                                                                         |
-|                      | - **macOS:** x86_64 or ARM CPU (Apple Silicon)                                          |
-|                      |                                                                                         |
-|                      |  - *Example: Intel Core i5-8500, Apple M1*                                              |
-|                      |                                                                                         |
-|                      | - **Linux:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv7 or ARMv8 CPU          |
-|                      |                                                                                         |
-|                      |  - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Raspberry Pi 5 with overclocking*   |
-+----------------------+-----------------------------------------------------------------------------------------+
-| **GPU**              | - **Forward+ rendering method:** Dedicated graphics with full Vulkan 1.2 support        |
-|                      |                                                                                         |
-|                      |   - *Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*            |
-|                      |                                                                                         |
-|                      | - **Mobile rendering method:** Dedicated graphics with full Vulkan 1.2 support          |
-|                      |                                                                                         |
-|                      |   - *Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*            |
-|                      |                                                                                         |
-|                      | - **Compatibility rendering method:** Dedicated graphics with full OpenGL 4.6 support   |
-|                      |                                                                                         |
-|                      |   - *Example: NVIDIA GeForce GTX 650 (Kepler), AMD Radeon HD 7750 (GCN 1.0)*            |
-+----------------------+-----------------------------------------------------------------------------------------+
-| **RAM**              | - **For native exports:** 4 GB                                                          |
-|                      | - **For web exports:** 8 GB                                                             |
-+----------------------+-----------------------------------------------------------------------------------------+
-| **Storage**          | 150 MB (used for the executable, project files and cache)                               |
-+----------------------+-----------------------------------------------------------------------------------------+
-| **Operating system** | - **For native exports:** Windows 10, macOS 10.15,                                      |
-|                      |   Linux distribution released after 2020                                                |
-|                      | - **For web exports:** Latest version of Firefox, Chrome, Edge, Safari, Opera           |
-+----------------------+-----------------------------------------------------------------------------------------+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
++----------------------+----------------------------------------------------------------------------------------------+
+| **CPU**              | - **Windows:** x86_64 CPU with SSE4.2 instructions, with 4 physical cores or more, ARMv8 CPU |
+|                      |                                                                                              |
+|                      |   - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Snapdragon X Elite*                     |
+|                      |                                                                                              |
+|                      | - **macOS:** x86_64 or ARM CPU (Apple Silicon)                                               |
+|                      |                                                                                              |
+|                      |   - *Example: Intel Core i5-8500, Apple M1*                                                  |
+|                      |                                                                                              |
+|                      | - **Linux:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv7 or ARMv8 CPU               |
+|                      |                                                                                              |
+|                      |   - *Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Raspberry Pi 5 with overclocking*       |
++----------------------+----------------------------------------------------------------------------------------------+
+| **GPU**              | - **Forward+ renderer:** Dedicated graphics with full Vulkan 1.2 support,                    |
+|                      |   Metal 3 support (macOS), or Direct3D 12 (12_0 feature level) support (Windows)             |
+|                      |                                                                                              |
+|                      |   - *Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*                 |
+|                      |                                                                                              |
+|                      | - **Mobile renderer:** Dedicated graphics with full Vulkan 1.2 support,                      |
+|                      |   Metal 3 support (macOS), or Direct3D 12 (12_0 feature level) support (Windows)             |
+|                      |                                                                                              |
+|                      |   - *Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*                 |
+|                      |                                                                                              |
+|                      | - **Compatibility renderer:** Dedicated graphics with full OpenGL 4.6 support                |
+|                      |                                                                                              |
+|                      |   - *Example: NVIDIA GeForce GTX 650 (Kepler), AMD Radeon HD 7750 (GCN 1.0)*                 |
++----------------------+----------------------------------------------------------------------------------------------+
+| **RAM**              | - **For native exports:** 4 GB                                                               |
+|                      | - **For web exports:** 8 GB                                                                  |
++----------------------+----------------------------------------------------------------------------------------------+
+| **Storage**          | 150 MB (used for the executable, project files and cache)                                    |
++----------------------+----------------------------------------------------------------------------------------------+
+| **Operating system** | - **For native exports:** Windows 10, macOS 10.15 (Forward+/Mobile, Vulkan), macOS 13.0      |
+|                      |   (Forward+/Mobile, Metal), Linux distribution released after 2020                           |
+|                      | - **For web exports:** Latest version of Firefox, Chrome, Edge, Safari, Opera                |
++----------------------+----------------------------------------------------------------------------------------------+
 
 Mobile device (smartphone/tablet) - Recommended
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 +----------------------+-----------------------------------------------------------------------------------------+
 | **CPU**              | - **Android:** SoC with 64-bit ARM or x86 CPU, with 3 "performance" cores or more       |
@@ -340,26 +350,29 @@ Mobile device (smartphone/tablet) - Recommended
 |                      |                                                                                         |
 |                      | - **iOS:** SoC with 64-bit ARM CPU                                                      |
 |                      |                                                                                         |
-|                      |   - *Example: Apple A11 (iPhone XS/XR)*                                                 |
+|                      |   - *Example: Apple A14 (iPhone 12)*                                                    |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **GPU**              | - **Forward+ rendering method:** SoC featuring GPU with full Vulkan 1.2 support         |
+| **GPU**              | - **Forward+ renderer:** SoC featuring GPU with full Vulkan 1.2 support, or             |
+|                      |   Metal 3 support (iOS/iPadOS)                                                          |
 |                      |                                                                                         |
-|                      |   - *Example: Qualcomm Adreno 630, Mali-G72 MP18, Apple G11P (iPhone XR/XS)*            |
+|                      |   - *Example: Qualcomm Adreno 630, Mali-G72 MP18, Apple A14 (iPhone 12)*                |
 |                      |                                                                                         |
-|                      | - **Mobile rendering method:** SoC featuring GPU with full Vulkan 1.2 support           |
+|                      | - **Mobile renderer:** SoC featuring GPU with full Vulkan 1.2 support, or               |
+|                      |   Metal 3 support (iOS/iPadOS)                                                          |
 |                      |                                                                                         |
-|                      |   - *Example: Qualcomm Adreno 630, Mali-G72 MP18, Apple G11P (iPhone XR/XS)*            |
+|                      |   - *Example: Qualcomm Adreno 630, Mali-G72 MP18, Apple A14 (iPhone 12)*                |
 |                      |                                                                                         |
-|                      | - **Compatibility rendering method:** SoC featuring GPU with full OpenGL ES 3.2 support |
+|                      | - **Compatibility renderer:** SoC featuring GPU with full OpenGL ES 3.2 support         |
 |                      |                                                                                         |
-|                      |   - *Example: Qualcomm Adreno 630, Mali-G72 MP18, Apple G11P (iPhone XR/XS)*            |
+|                      |   - *Example: Qualcomm Adreno 630, Mali-G72 MP18, Apple A14 (iPhone 12)*                |
 +----------------------+-----------------------------------------------------------------------------------------+
 | **RAM**              | - **For native exports:** 2 GB                                                          |
 |                      | - **For web exports:** 4 GB                                                             |
 +----------------------+-----------------------------------------------------------------------------------------+
 | **Storage**          | 150 MB (used for the executable, project files and cache)                               |
 +----------------------+-----------------------------------------------------------------------------------------+
-| **Operating system** | - **For native exports:** Android 9.0 or iOS 11.0                                       |
+| **Operating system** | - **For native exports:** Android 9.0, iOS 14.1 (Forward+/Mobile, Vulkan), iOS 16.0     |
+|                      |   (Forward+/Mobile, Metal)                                                              |
 |                      | - **For web exports:** Latest version of Firefox, Chrome, Edge, Safari, Opera,          |
 |                      |   Samsung Internet                                                                      |
 +----------------------+-----------------------------------------------------------------------------------------+

+ 206 - 94
classes/[email protected]

@@ -17,9 +17,9 @@ Built-in GDScript constants, functions, and annotations.
 Description
 -----------
 
-A list of GDScript-specific utility functions and annotations accessible from any script.
+A list of utility functions and annotations accessible from any script written in GDScript.
 
-For the list of the global functions and constants see :ref:`@GlobalScope<class_@GlobalScope>`.
+For the list of global functions and constants that can be accessed in any scripting language, see :ref:`@GlobalScope<class_@GlobalScope>`.
 
 .. rst-class:: classref-introduction-group
 
@@ -43,7 +43,7 @@ Methods
    +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`String<class_String>`         | :ref:`char<class_@GDScript_method_char>`\ (\ char\: :ref:`int<class_int>`\ )                                                                                             |
    +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Variant<class_Variant>`       | :ref:`convert<class_@GDScript_method_convert>`\ (\ what\: :ref:`Variant<class_Variant>`, type\: :ref:`int<class_int>`\ )                                                 |
+   | :ref:`Variant<class_Variant>`       | :ref:`convert<class_@GDScript_method_convert>`\ (\ what\: :ref:`Variant<class_Variant>`, type\: :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>`\ )                   |
    +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Object<class_Object>`         | :ref:`dict_to_inst<class_@GDScript_method_dict_to_inst>`\ (\ dictionary\: :ref:`Dictionary<class_Dictionary>`\ )                                                         |
    +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -81,7 +81,7 @@ Constants
 
 .. rst-class:: classref-constant
 
-**PI** = ``3.14159265358979``
+**PI** = ``3.14159265358979`` :ref:`🔗<class_@GDScript_constant_PI>`
 
 Constant that represents how many times the diameter of a circle fits around its perimeter. This is equivalent to ``TAU / 2``, or 180 degrees in rotations.
 
@@ -89,7 +89,7 @@ Constant that represents how many times the diameter of a circle fits around its
 
 .. rst-class:: classref-constant
 
-**TAU** = ``6.28318530717959``
+**TAU** = ``6.28318530717959`` :ref:`🔗<class_@GDScript_constant_TAU>`
 
 The circle constant, the circumference of the unit circle in radians. This is equivalent to ``PI * 2``, or 360 degrees in rotations.
 
@@ -97,7 +97,7 @@ The circle constant, the circumference of the unit circle in radians. This is eq
 
 .. rst-class:: classref-constant
 
-**INF** = ``inf``
+**INF** = ``inf`` :ref:`🔗<class_@GDScript_constant_INF>`
 
 Positive floating-point infinity. This is the result of floating-point division when the divisor is ``0.0``. For negative infinity, use ``-INF``. Dividing by ``-0.0`` will result in negative infinity if the numerator is positive, so dividing by ``0.0`` is not the same as dividing by ``-0.0`` (despite ``0.0 == -0.0`` returning ``true``).
 
@@ -107,7 +107,7 @@ Positive floating-point infinity. This is the result of floating-point division
 
 .. rst-class:: classref-constant
 
-**NAN** = ``nan``
+**NAN** = ``nan`` :ref:`🔗<class_@GDScript_constant_NAN>`
 
 "Not a Number", an invalid floating-point value. :ref:`NAN<class_@GDScript_constant_NAN>` has special properties, including that ``!=`` always returns ``true``, while other comparison operators always return ``false``. This is true even when comparing with itself (``NAN == NAN`` returns ``false`` and ``NAN != NAN`` returns ``true``). It is returned by some invalid operations, such as dividing floating-point ``0.0`` by ``0.0``.
 
@@ -124,7 +124,7 @@ Annotations
 
 .. rst-class:: classref-annotation
 
-**@export**\ (\ )
+**@export**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export>`
 
 Mark the following property as exported (editable in the Inspector dock and saved to disk). To control the type of the exported property, use the type hint notation.
 
@@ -158,7 +158,7 @@ Mark the following property as exported (editable in the Inspector dock and save
     @export var image_array: Array[Image]
     @export var node_array: Array[Node]
 
-\ **Note:** Custom resources and nodes must be registered as global classes using ``class_name``.
+\ **Note:** Custom resources and nodes should be registered as global classes using ``class_name``, since the Inspector currently only supports global classes. Otherwise, a less specific type will be exported instead.
 
 \ **Note:** Node export is only supported in :ref:`Node<class_Node>`-derived classes and has a number of other limitations.
 
@@ -170,7 +170,7 @@ Mark the following property as exported (editable in the Inspector dock and save
 
 .. rst-class:: classref-annotation
 
-**@export_category**\ (\ name\: :ref:`String<class_String>`\ )
+**@export_category**\ (\ name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_@GDScript_annotation_@export_category>`
 
 Define a new category for the following exported properties. This helps to organize properties in the Inspector dock.
 
@@ -192,7 +192,7 @@ See also :ref:`@GlobalScope.PROPERTY_USAGE_CATEGORY<class_@GlobalScope_constant_
 
 .. rst-class:: classref-annotation
 
-**@export_color_no_alpha**\ (\ )
+**@export_color_no_alpha**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_color_no_alpha>`
 
 Export a :ref:`Color<class_Color>`, :ref:`Array<class_Array>`\ \[:ref:`Color<class_Color>`\ \], or :ref:`PackedColorArray<class_PackedColorArray>` property without allowing its transparency (:ref:`Color.a<class_Color_property_a>`) to be edited.
 
@@ -211,14 +211,16 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_COLOR_NO_ALPHA<class_@GlobalScope_cons
 
 .. rst-class:: classref-annotation
 
-**@export_custom**\ (\ hint\: :ref:`PropertyHint<enum_@GlobalScope_PropertyHint>`, hint_string\: :ref:`String<class_String>`, usage\: |bitfield|\[:ref:`PropertyUsageFlags<enum_@GlobalScope_PropertyUsageFlags>`\] = 6\ )
+**@export_custom**\ (\ hint\: :ref:`PropertyHint<enum_@GlobalScope_PropertyHint>`, hint_string\: :ref:`String<class_String>`, usage\: |bitfield|\[:ref:`PropertyUsageFlags<enum_@GlobalScope_PropertyUsageFlags>`\] = 6\ ) :ref:`🔗<class_@GDScript_annotation_@export_custom>`
 
-Allows you to set a custom hint, hint string, and usage flags for the exported property. Note that there's no validation done in GDScript, it will just pass the hint along to the editor.
+Allows you to set a custom hint, hint string, and usage flags for the exported property. Note that there's no validation done in GDScript, it will just pass the parameters to the editor.
 
 ::
 
     @export_custom(PROPERTY_HINT_NONE, "suffix:m") var suffix: Vector3
 
+\ **Note:** Regardless of the ``usage`` value, the :ref:`@GlobalScope.PROPERTY_USAGE_SCRIPT_VARIABLE<class_@GlobalScope_constant_PROPERTY_USAGE_SCRIPT_VARIABLE>` flag is always added, as with any explicitly declared script variable.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -227,7 +229,7 @@ Allows you to set a custom hint, hint string, and usage flags for the exported p
 
 .. rst-class:: classref-annotation
 
-**@export_dir**\ (\ )
+**@export_dir**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_dir>`
 
 Export a :ref:`String<class_String>`, :ref:`Array<class_Array>`\ \[:ref:`String<class_String>`\ \], or :ref:`PackedStringArray<class_PackedStringArray>` property as a path to a directory. The path will be limited to the project folder and its subfolders. See :ref:`@export_global_dir<class_@GDScript_annotation_@export_global_dir>` to allow picking from the entire filesystem.
 
@@ -246,7 +248,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_DIR<class_@GlobalScope_constant_PROPER
 
 .. rst-class:: classref-annotation
 
-**@export_enum**\ (\ names\: :ref:`String<class_String>`, ...\ ) |vararg|
+**@export_enum**\ (\ names\: :ref:`String<class_String>`, ...\ ) |vararg| :ref:`🔗<class_@GDScript_annotation_@export_enum>`
 
 Export an :ref:`int<class_int>`, :ref:`String<class_String>`, :ref:`Array<class_Array>`\ \[:ref:`int<class_int>`\ \], :ref:`Array<class_Array>`\ \[:ref:`String<class_String>`\ \], :ref:`PackedByteArray<class_PackedByteArray>`, :ref:`PackedInt32Array<class_PackedInt32Array>`, :ref:`PackedInt64Array<class_PackedInt64Array>`, or :ref:`PackedStringArray<class_PackedStringArray>` property as an enumerated list of options (or an array of options). If the property is an :ref:`int<class_int>`, then the index of the value is stored, in the same order the values are provided. You can add explicit values using a colon. If the property is a :ref:`String<class_String>`, then the value is stored.
 
@@ -285,7 +287,7 @@ If you want to use named GDScript enums, then use :ref:`@export<class_@GDScript_
 
 .. rst-class:: classref-annotation
 
-**@export_exp_easing**\ (\ hints\: :ref:`String<class_String>` = "", ...\ ) |vararg|
+**@export_exp_easing**\ (\ hints\: :ref:`String<class_String>` = "", ...\ ) |vararg| :ref:`🔗<class_@GDScript_annotation_@export_exp_easing>`
 
 Export a floating-point property with an easing editor widget. Additional hints can be provided to adjust the behavior of the widget. ``"attenuation"`` flips the curve, which makes it more intuitive for editing attenuation properties. ``"positive_only"`` limits values to only be greater than or equal to zero.
 
@@ -306,7 +308,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_EXP_EASING<class_@GlobalScope_constant
 
 .. rst-class:: classref-annotation
 
-**@export_file**\ (\ filter\: :ref:`String<class_String>` = "", ...\ ) |vararg|
+**@export_file**\ (\ filter\: :ref:`String<class_String>` = "", ...\ ) |vararg| :ref:`🔗<class_@GDScript_annotation_@export_file>`
 
 Export a :ref:`String<class_String>`, :ref:`Array<class_Array>`\ \[:ref:`String<class_String>`\ \], or :ref:`PackedStringArray<class_PackedStringArray>` property as a path to a file. The path will be limited to the project folder and its subfolders. See :ref:`@export_global_file<class_@GDScript_annotation_@export_global_file>` to allow picking from the entire filesystem.
 
@@ -328,7 +330,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_FILE<class_@GlobalScope_constant_PROPE
 
 .. rst-class:: classref-annotation
 
-**@export_flags**\ (\ names\: :ref:`String<class_String>`, ...\ ) |vararg|
+**@export_flags**\ (\ names\: :ref:`String<class_String>`, ...\ ) |vararg| :ref:`🔗<class_@GDScript_annotation_@export_flags>`
 
 Export an integer property as a bit flag field. This allows to store several "checked" or ``true`` values with one property, and comfortably select them from the Inspector dock.
 
@@ -373,7 +375,7 @@ You can also use the annotation on :ref:`Array<class_Array>`\ \[:ref:`int<class_
 
 .. rst-class:: classref-annotation
 
-**@export_flags_2d_navigation**\ (\ )
+**@export_flags_2d_navigation**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_flags_2d_navigation>`
 
 Export an integer property as a bit flag field for 2D navigation layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/2d_navigation/layer_1<class_ProjectSettings_property_layer_names/2d_navigation/layer_1>`.
 
@@ -392,7 +394,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_NAVIGATION<class_@GlobalScop
 
 .. rst-class:: classref-annotation
 
-**@export_flags_2d_physics**\ (\ )
+**@export_flags_2d_physics**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_flags_2d_physics>`
 
 Export an integer property as a bit flag field for 2D physics layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/2d_physics/layer_1<class_ProjectSettings_property_layer_names/2d_physics/layer_1>`.
 
@@ -411,7 +413,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_PHYSICS<class_@GlobalScope_c
 
 .. rst-class:: classref-annotation
 
-**@export_flags_2d_render**\ (\ )
+**@export_flags_2d_render**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_flags_2d_render>`
 
 Export an integer property as a bit flag field for 2D render layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/2d_render/layer_1<class_ProjectSettings_property_layer_names/2d_render/layer_1>`.
 
@@ -430,7 +432,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_2D_RENDER<class_@GlobalScope_co
 
 .. rst-class:: classref-annotation
 
-**@export_flags_3d_navigation**\ (\ )
+**@export_flags_3d_navigation**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_flags_3d_navigation>`
 
 Export an integer property as a bit flag field for 3D navigation layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/3d_navigation/layer_1<class_ProjectSettings_property_layer_names/3d_navigation/layer_1>`.
 
@@ -449,7 +451,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_NAVIGATION<class_@GlobalScop
 
 .. rst-class:: classref-annotation
 
-**@export_flags_3d_physics**\ (\ )
+**@export_flags_3d_physics**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_flags_3d_physics>`
 
 Export an integer property as a bit flag field for 3D physics layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/3d_physics/layer_1<class_ProjectSettings_property_layer_names/3d_physics/layer_1>`.
 
@@ -468,7 +470,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_PHYSICS<class_@GlobalScope_c
 
 .. rst-class:: classref-annotation
 
-**@export_flags_3d_render**\ (\ )
+**@export_flags_3d_render**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_flags_3d_render>`
 
 Export an integer property as a bit flag field for 3D render layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/3d_render/layer_1<class_ProjectSettings_property_layer_names/3d_render/layer_1>`.
 
@@ -487,7 +489,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_3D_RENDER<class_@GlobalScope_co
 
 .. rst-class:: classref-annotation
 
-**@export_flags_avoidance**\ (\ )
+**@export_flags_avoidance**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_flags_avoidance>`
 
 Export an integer property as a bit flag field for navigation avoidance layers. The widget in the Inspector dock will use the layer names defined in :ref:`ProjectSettings.layer_names/avoidance/layer_1<class_ProjectSettings_property_layer_names/avoidance/layer_1>`.
 
@@ -506,7 +508,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_LAYERS_AVOIDANCE<class_@GlobalScope_co
 
 .. rst-class:: classref-annotation
 
-**@export_global_dir**\ (\ )
+**@export_global_dir**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_global_dir>`
 
 Export a :ref:`String<class_String>`, :ref:`Array<class_Array>`\ \[:ref:`String<class_String>`\ \], or :ref:`PackedStringArray<class_PackedStringArray>` property as an absolute path to a directory. The path can be picked from the entire filesystem. See :ref:`@export_dir<class_@GDScript_annotation_@export_dir>` to limit it to the project folder and its subfolders.
 
@@ -525,7 +527,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_GLOBAL_DIR<class_@GlobalScope_constant
 
 .. rst-class:: classref-annotation
 
-**@export_global_file**\ (\ filter\: :ref:`String<class_String>` = "", ...\ ) |vararg|
+**@export_global_file**\ (\ filter\: :ref:`String<class_String>` = "", ...\ ) |vararg| :ref:`🔗<class_@GDScript_annotation_@export_global_file>`
 
 Export a :ref:`String<class_String>`, :ref:`Array<class_Array>`\ \[:ref:`String<class_String>`\ \], or :ref:`PackedStringArray<class_PackedStringArray>` property as an absolute path to a file. The path can be picked from the entire filesystem. See :ref:`@export_file<class_@GDScript_annotation_@export_file>` to limit it to the project folder and its subfolders.
 
@@ -547,7 +549,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_GLOBAL_FILE<class_@GlobalScope_constan
 
 .. rst-class:: classref-annotation
 
-**@export_group**\ (\ name\: :ref:`String<class_String>`, prefix\: :ref:`String<class_String>` = ""\ )
+**@export_group**\ (\ name\: :ref:`String<class_String>`, prefix\: :ref:`String<class_String>` = ""\ ) :ref:`🔗<class_@GDScript_annotation_@export_group>`
 
 Define a new group for the following exported properties. This helps to organize properties in the Inspector dock. Groups can be added with an optional ``prefix``, which would make group to only consider properties that have this prefix. The grouping will break on the first property that doesn't have a prefix. The prefix is also removed from the property's name in the Inspector dock.
 
@@ -578,7 +580,7 @@ See also :ref:`@GlobalScope.PROPERTY_USAGE_GROUP<class_@GlobalScope_constant_PRO
 
 .. rst-class:: classref-annotation
 
-**@export_multiline**\ (\ )
+**@export_multiline**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_multiline>`
 
 Export a :ref:`String<class_String>`, :ref:`Array<class_Array>`\ \[:ref:`String<class_String>`\ \], :ref:`PackedStringArray<class_PackedStringArray>`, :ref:`Dictionary<class_Dictionary>` or :ref:`Array<class_Array>`\ \[:ref:`Dictionary<class_Dictionary>`\ \] property with a large :ref:`TextEdit<class_TextEdit>` widget instead of a :ref:`LineEdit<class_LineEdit>`. This adds support for multiline content and makes it easier to edit large amount of text stored in the property.
 
@@ -597,7 +599,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_MULTILINE_TEXT<class_@GlobalScope_cons
 
 .. rst-class:: classref-annotation
 
-**@export_node_path**\ (\ type\: :ref:`String<class_String>` = "", ...\ ) |vararg|
+**@export_node_path**\ (\ type\: :ref:`String<class_String>` = "", ...\ ) |vararg| :ref:`🔗<class_@GDScript_annotation_@export_node_path>`
 
 Export a :ref:`NodePath<class_NodePath>` or :ref:`Array<class_Array>`\ \[:ref:`NodePath<class_NodePath>`\ \] property with a filter for allowed node types.
 
@@ -618,7 +620,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_NODE_PATH_VALID_TYPES<class_@GlobalSco
 
 .. rst-class:: classref-annotation
 
-**@export_placeholder**\ (\ placeholder\: :ref:`String<class_String>`\ )
+**@export_placeholder**\ (\ placeholder\: :ref:`String<class_String>`\ ) :ref:`🔗<class_@GDScript_annotation_@export_placeholder>`
 
 Export a :ref:`String<class_String>`, :ref:`Array<class_Array>`\ \[:ref:`String<class_String>`\ \], or :ref:`PackedStringArray<class_PackedStringArray>` property with a placeholder text displayed in the editor widget when no value is present.
 
@@ -637,7 +639,7 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_PLACEHOLDER_TEXT<class_@GlobalScope_co
 
 .. rst-class:: classref-annotation
 
-**@export_range**\ (\ min\: :ref:`float<class_float>`, max\: :ref:`float<class_float>`, step\: :ref:`float<class_float>` = 1.0, extra_hints\: :ref:`String<class_String>` = "", ...\ ) |vararg|
+**@export_range**\ (\ min\: :ref:`float<class_float>`, max\: :ref:`float<class_float>`, step\: :ref:`float<class_float>` = 1.0, extra_hints\: :ref:`String<class_String>` = "", ...\ ) |vararg| :ref:`🔗<class_@GDScript_annotation_@export_range>`
 
 Export an :ref:`int<class_int>`, :ref:`float<class_float>`, :ref:`Array<class_Array>`\ \[:ref:`int<class_int>`\ \], :ref:`Array<class_Array>`\ \[:ref:`float<class_float>`\ \], :ref:`PackedByteArray<class_PackedByteArray>`, :ref:`PackedInt32Array<class_PackedInt32Array>`, :ref:`PackedInt64Array<class_PackedInt64Array>`, :ref:`PackedFloat32Array<class_PackedFloat32Array>`, or :ref:`PackedFloat64Array<class_PackedFloat64Array>` property as a range value. The range must be defined by ``min`` and ``max``, as well as an optional ``step`` and a variety of extra hints. The ``step`` defaults to ``1`` for integer properties. For floating-point numbers this value depends on your :ref:`EditorSettings.interface/inspector/default_float_step<class_EditorSettings_property_interface/inspector/default_float_step>` setting.
 
@@ -669,9 +671,9 @@ See also :ref:`@GlobalScope.PROPERTY_HINT_RANGE<class_@GlobalScope_constant_PROP
 
 .. rst-class:: classref-annotation
 
-**@export_storage**\ (\ )
+**@export_storage**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@export_storage>`
 
-Export a property with :ref:`@GlobalScope.PROPERTY_USAGE_STORAGE<class_@GlobalScope_constant_PROPERTY_USAGE_STORAGE>` flag. The property is not displayed in the editor, but it is serialized and stored in the scene or resource file. This can be useful for :ref:`@tool<class_@GDScript_annotation_@tool>` scripts. Also the property value is copied when :ref:`Resource.duplicate<class_Resource_method_duplicate>` or :ref:`Node.duplicate<class_Node_method_duplicate>` is called, unlike non-exported variables.
+Export a property with :ref:`@GlobalScope.PROPERTY_USAGE_STORAGE<class_@GlobalScope_constant_PROPERTY_USAGE_STORAGE>` flag. The property is not displayed in the editor, but it is serialized and stored in the scene or resource file. This can be useful for :ref:`@tool<class_@GDScript_annotation_@tool>` scripts. Also the property value is copied when :ref:`Resource.duplicate()<class_Resource_method_duplicate>` or :ref:`Node.duplicate()<class_Node_method_duplicate>` is called, unlike non-exported variables.
 
 ::
 
@@ -687,7 +689,7 @@ Export a property with :ref:`@GlobalScope.PROPERTY_USAGE_STORAGE<class_@GlobalSc
 
 .. rst-class:: classref-annotation
 
-**@export_subgroup**\ (\ name\: :ref:`String<class_String>`, prefix\: :ref:`String<class_String>` = ""\ )
+**@export_subgroup**\ (\ name\: :ref:`String<class_String>`, prefix\: :ref:`String<class_String>` = ""\ ) :ref:`🔗<class_@GDScript_annotation_@export_subgroup>`
 
 Define a new subgroup for the following exported properties. This helps to organize properties in the Inspector dock. Subgroups work exactly like groups, except they need a parent group to exist. See :ref:`@export_group<class_@GDScript_annotation_@export_group>`.
 
@@ -703,7 +705,67 @@ See also :ref:`@GlobalScope.PROPERTY_USAGE_SUBGROUP<class_@GlobalScope_constant_
     @export var car_label = "Speedy"
     @export var car_number = 3
 
-\ **Note:** Subgroups cannot be nested, they only provide one extra level of depth. Just like the next group ends the previous group, so do the subsequent subgroups.
+\ **Note:** Subgroups cannot be nested, but you can use the slash separator (``/``) to achieve the desired effect:
+
+::
+
+    @export_group("Car Properties")
+    @export_subgroup("Wheels", "wheel_")
+    @export_subgroup("Wheels/Front", "front_wheel_")
+    @export var front_wheel_strength = 10
+    @export var front_wheel_mobility = 5
+    @export_subgroup("Wheels/Rear", "rear_wheel_")
+    @export var rear_wheel_strength = 8
+    @export var rear_wheel_mobility = 3
+    @export_subgroup("Wheels", "wheel_")
+    @export var wheel_material: PhysicsMaterial
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_@GDScript_annotation_@export_tool_button:
+
+.. rst-class:: classref-annotation
+
+**@export_tool_button**\ (\ text\: :ref:`String<class_String>`, icon\: :ref:`String<class_String>` = ""\ ) :ref:`🔗<class_@GDScript_annotation_@export_tool_button>`
+
+Export a :ref:`Callable<class_Callable>` property as a clickable button with the label ``text``. When the button is pressed, the callable is called.
+
+If ``icon`` is specified, it is used to fetch an icon for the button via :ref:`Control.get_theme_icon()<class_Control_method_get_theme_icon>`, from the ``"EditorIcons"`` theme type. If ``icon`` is omitted, the default ``"Callable"`` icon is used instead.
+
+Consider using the :ref:`EditorUndoRedoManager<class_EditorUndoRedoManager>` to allow the action to be reverted safely.
+
+See also :ref:`@GlobalScope.PROPERTY_HINT_TOOL_BUTTON<class_@GlobalScope_constant_PROPERTY_HINT_TOOL_BUTTON>`.
+
+::
+
+    @tool
+    extends Sprite2D
+    
+    @export_tool_button("Hello") var hello_action = hello
+    @export_tool_button("Randomize the color!", "ColorRect")
+    var randomize_color_action = randomize_color
+    
+    func hello():
+        print("Hello world!")
+    
+    func randomize_color():
+        var undo_redo = EditorInterface.get_editor_undo_redo()
+        undo_redo.create_action("Randomized Sprite2D Color")
+        undo_redo.add_do_property(self, &"self_modulate", Color(randf(), randf(), randf()))
+        undo_redo.add_undo_property(self, &"self_modulate", self_modulate)
+        undo_redo.commit_action()
+
+\ **Note:** The property is exported without the :ref:`@GlobalScope.PROPERTY_USAGE_STORAGE<class_@GlobalScope_constant_PROPERTY_USAGE_STORAGE>` flag because a :ref:`Callable<class_Callable>` cannot be properly serialized and stored in a file.
+
+\ **Note:** In an exported project neither :ref:`EditorInterface<class_EditorInterface>` nor :ref:`EditorUndoRedoManager<class_EditorUndoRedoManager>` exist, which may cause some scripts to break. To prevent this, you can use :ref:`Engine.get_singleton()<class_Engine_method_get_singleton>` and omit the static type from the variable declaration:
+
+::
+
+    var undo_redo = Engine.get_singleton(&"EditorInterface").get_editor_undo_redo()
+
+\ **Note:** Avoid storing lambda callables in member variables of :ref:`RefCounted<class_RefCounted>`-based classes (e.g. resources), as this can lead to memory leaks. Use only method callables and optionally :ref:`Callable.bind()<class_Callable_method_bind>` or :ref:`Callable.unbind()<class_Callable_method_unbind>`.
 
 .. rst-class:: classref-item-separator
 
@@ -713,7 +775,7 @@ See also :ref:`@GlobalScope.PROPERTY_USAGE_SUBGROUP<class_@GlobalScope_constant_
 
 .. rst-class:: classref-annotation
 
-**@icon**\ (\ icon_path\: :ref:`String<class_String>`\ )
+**@icon**\ (\ icon_path\: :ref:`String<class_String>`\ ) :ref:`🔗<class_@GDScript_annotation_@icon>`
 
 Add a custom icon to the current script. The icon specified at ``icon_path`` is displayed in the Scene dock for every node of that class, as well as in various editor dialogs.
 
@@ -725,7 +787,7 @@ Add a custom icon to the current script. The icon specified at ``icon_path`` is
 
 \ **Note:** As annotations describe their subject, the :ref:`@icon<class_@GDScript_annotation_@icon>` annotation must be placed before the class definition and inheritance.
 
-\ **Note:** Unlike other annotations, the argument of the :ref:`@icon<class_@GDScript_annotation_@icon>` annotation must be a string literal (constant expressions are not supported).
+\ **Note:** Unlike most other annotations, the argument of the :ref:`@icon<class_@GDScript_annotation_@icon>` annotation must be a string literal (constant expressions are not supported).
 
 .. rst-class:: classref-item-separator
 
@@ -735,13 +797,13 @@ Add a custom icon to the current script. The icon specified at ``icon_path`` is
 
 .. rst-class:: classref-annotation
 
-**@onready**\ (\ )
+**@onready**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@onready>`
 
-Mark the following property as assigned when the :ref:`Node<class_Node>` is ready. Values for these properties are not assigned immediately when the node is initialized (:ref:`Object._init<class_Object_private_method__init>`), and instead are computed and stored right before :ref:`Node._ready<class_Node_private_method__ready>`.
+Mark the following property as assigned when the :ref:`Node<class_Node>` is ready. Values for these properties are not assigned immediately when the node is initialized (:ref:`Object._init()<class_Object_private_method__init>`), and instead are computed and stored right before :ref:`Node._ready()<class_Node_private_method__ready>`.
 
 ::
 
-    @onready var character_name: Label = $Label
+    @onready var character_name = $Label
 
 .. rst-class:: classref-item-separator
 
@@ -751,13 +813,13 @@ Mark the following property as assigned when the :ref:`Node<class_Node>` is read
 
 .. rst-class:: classref-annotation
 
-**@rpc**\ (\ mode\: :ref:`String<class_String>` = "authority", sync\: :ref:`String<class_String>` = "call_remote", transfer_mode\: :ref:`String<class_String>` = "unreliable", transfer_channel\: :ref:`int<class_int>` = 0\ )
+**@rpc**\ (\ mode\: :ref:`String<class_String>` = "authority", sync\: :ref:`String<class_String>` = "call_remote", transfer_mode\: :ref:`String<class_String>` = "unreliable", transfer_channel\: :ref:`int<class_int>` = 0\ ) :ref:`🔗<class_@GDScript_annotation_@rpc>`
 
 Mark the following method for remote procedure calls. See :doc:`High-level multiplayer <../tutorials/networking/high_level_multiplayer>`.
 
-If ``mode`` is set as ``"any_peer"``, allows any peer to call this RPC function. Otherwise, only the authority peer is allowed to call it and ``mode`` should be kept as ``"authority"``. When configuring functions as RPCs with :ref:`Node.rpc_config<class_Node_method_rpc_config>`, each of these modes respectively corresponds to the :ref:`MultiplayerAPI.RPC_MODE_AUTHORITY<class_MultiplayerAPI_constant_RPC_MODE_AUTHORITY>` and :ref:`MultiplayerAPI.RPC_MODE_ANY_PEER<class_MultiplayerAPI_constant_RPC_MODE_ANY_PEER>` RPC modes. See :ref:`RPCMode<enum_MultiplayerAPI_RPCMode>`. If a peer that is not the authority tries to call a function that is only allowed for the authority, the function will not be executed. If the error can be detected locally (when the RPC configuration is consistent between the local and the remote peer), an error message will be displayed on the sender peer. Otherwise, the remote peer will detect the error and print an error there.
+If ``mode`` is set as ``"any_peer"``, allows any peer to call this RPC function. Otherwise, only the authority peer is allowed to call it and ``mode`` should be kept as ``"authority"``. When configuring functions as RPCs with :ref:`Node.rpc_config()<class_Node_method_rpc_config>`, each of these modes respectively corresponds to the :ref:`MultiplayerAPI.RPC_MODE_AUTHORITY<class_MultiplayerAPI_constant_RPC_MODE_AUTHORITY>` and :ref:`MultiplayerAPI.RPC_MODE_ANY_PEER<class_MultiplayerAPI_constant_RPC_MODE_ANY_PEER>` RPC modes. See :ref:`RPCMode<enum_MultiplayerAPI_RPCMode>`. If a peer that is not the authority tries to call a function that is only allowed for the authority, the function will not be executed. If the error can be detected locally (when the RPC configuration is consistent between the local and the remote peer), an error message will be displayed on the sender peer. Otherwise, the remote peer will detect the error and print an error there.
 
-If ``sync`` is set as ``"call_remote"``, the function will only be executed on the remote peer, but not locally. To run this function locally too, set ``sync`` to ``"call_local"``. When configuring functions as RPCs with :ref:`Node.rpc_config<class_Node_method_rpc_config>`, this is equivalent to setting ``call_local`` to ``true``.
+If ``sync`` is set as ``"call_remote"``, the function will only be executed on the remote peer, but not locally. To run this function locally too, set ``sync`` to ``"call_local"``. When configuring functions as RPCs with :ref:`Node.rpc_config()<class_Node_method_rpc_config>`, this is equivalent to setting ``call_local`` to ``true``.
 
 The ``transfer_mode`` accepted values are ``"unreliable"``, ``"unreliable_ordered"``, or ``"reliable"``. It sets the transfer mode of the underlying :ref:`MultiplayerPeer<class_MultiplayerPeer>`. See :ref:`MultiplayerPeer.transfer_mode<class_MultiplayerPeer_property_transfer_mode>`.
 
@@ -784,7 +846,7 @@ The order of ``mode``, ``sync`` and ``transfer_mode`` does not matter, but value
 
 .. rst-class:: classref-annotation
 
-**@static_unload**\ (\ )
+**@static_unload**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@static_unload>`
 
 Make a script with static variables to not persist after all references are lost. If the script is loaded again the static variables will revert to their default values.
 
@@ -800,7 +862,7 @@ Make a script with static variables to not persist after all references are lost
 
 .. rst-class:: classref-annotation
 
-**@tool**\ (\ )
+**@tool**\ (\ ) :ref:`🔗<class_@GDScript_annotation_@tool>`
 
 Mark the current script as a tool script, allowing it to be loaded and executed by the editor. See :doc:`Running code in the editor <../tutorials/plugins/running_code_in_the_editor>`.
 
@@ -819,7 +881,7 @@ Mark the current script as a tool script, allowing it to be loaded and executed
 
 .. rst-class:: classref-annotation
 
-**@warning_ignore**\ (\ warning\: :ref:`String<class_String>`, ...\ ) |vararg|
+**@warning_ignore**\ (\ warning\: :ref:`String<class_String>`, ...\ ) |vararg| :ref:`🔗<class_@GDScript_annotation_@warning_ignore>`
 
 Mark the following statement to ignore the specified ``warning``. See :doc:`GDScript warning system <../tutorials/scripting/gdscript/warning_system>`.
 
@@ -831,6 +893,48 @@ Mark the following statement to ignore the specified ``warning``. See :doc:`GDSc
         @warning_ignore("unreachable_code")
         print("unreachable")
 
+See also :ref:`@warning_ignore_start<class_@GDScript_annotation_@warning_ignore_start>` and :ref:`@warning_ignore_restore<class_@GDScript_annotation_@warning_ignore_restore>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_@GDScript_annotation_@warning_ignore_restore:
+
+.. rst-class:: classref-annotation
+
+**@warning_ignore_restore**\ (\ warning\: :ref:`String<class_String>`, ...\ ) |vararg| :ref:`🔗<class_@GDScript_annotation_@warning_ignore_restore>`
+
+Stops ignoring the listed warning types after :ref:`@warning_ignore_start<class_@GDScript_annotation_@warning_ignore_start>`. Ignoring the specified warning types will be reset to Project Settings. This annotation can be omitted to ignore the warning types until the end of the file.
+
+\ **Note:** Unlike most other annotations, arguments of the :ref:`@warning_ignore_restore<class_@GDScript_annotation_@warning_ignore_restore>` annotation must be string literals (constant expressions are not supported).
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_@GDScript_annotation_@warning_ignore_start:
+
+.. rst-class:: classref-annotation
+
+**@warning_ignore_start**\ (\ warning\: :ref:`String<class_String>`, ...\ ) |vararg| :ref:`🔗<class_@GDScript_annotation_@warning_ignore_start>`
+
+Starts ignoring the listed warning types until the end of the file or the :ref:`@warning_ignore_restore<class_@GDScript_annotation_@warning_ignore_restore>` annotation with the given warning type.
+
+::
+
+    func test():
+        var a = 1 # Warning (if enabled in the Project Settings).
+        @warning_ignore_start("unused_variable")
+        var b = 2 # No warning.
+        var c = 3 # No warning.
+        @warning_ignore_restore("unused_variable")
+        var d = 4 # Warning (if enabled in the Project Settings).
+
+\ **Note:** To suppress a single warning, use :ref:`@warning_ignore<class_@GDScript_annotation_@warning_ignore>` instead.
+
+\ **Note:** Unlike most other annotations, arguments of the :ref:`@warning_ignore_start<class_@GDScript_annotation_@warning_ignore_start>` annotation must be string literals (constant expressions are not supported).
+
 .. rst-class:: classref-section-separator
 
 ----
@@ -844,9 +948,11 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`Color<class_Color>` **Color8**\ (\ r8\: :ref:`int<class_int>`, g8\: :ref:`int<class_int>`, b8\: :ref:`int<class_int>`, a8\: :ref:`int<class_int>` = 255\ )
+:ref:`Color<class_Color>` **Color8**\ (\ r8\: :ref:`int<class_int>`, g8\: :ref:`int<class_int>`, b8\: :ref:`int<class_int>`, a8\: :ref:`int<class_int>` = 255\ ) :ref:`🔗<class_@GDScript_method_Color8>`
+
+**Deprecated:** Use :ref:`Color.from_rgba8()<class_Color_method_from_rgba8>` instead.
 
-Returns a :ref:`Color<class_Color>` constructed from red (``r8``), green (``g8``), blue (``b8``), and optionally alpha (``a8``) integer channels, each divided by ``255.0`` for their final value. Using :ref:`Color8<class_@GDScript_method_Color8>` instead of the standard :ref:`Color<class_Color>` constructor is useful when you need to match exact color values in an :ref:`Image<class_Image>`.
+Returns a :ref:`Color<class_Color>` constructed from red (``r8``), green (``g8``), blue (``b8``), and optionally alpha (``a8``) integer channels, each divided by ``255.0`` for their final value. Using :ref:`Color8()<class_@GDScript_method_Color8>` instead of the standard :ref:`Color<class_Color>` constructor is useful when you need to match exact color values in an :ref:`Image<class_Image>`.
 
 ::
 
@@ -854,7 +960,7 @@ Returns a :ref:`Color<class_Color>` constructed from red (``r8``), green (``g8``
     var dark_blue = Color8(0, 0, 51)        # Same as Color(0, 0, 0.2).
     var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).
 
-\ **Note:** Due to the lower precision of :ref:`Color8<class_@GDScript_method_Color8>` compared to the standard :ref:`Color<class_Color>` constructor, a color created with :ref:`Color8<class_@GDScript_method_Color8>` will generally not be equal to the same color created with the standard :ref:`Color<class_Color>` constructor. Use :ref:`Color.is_equal_approx<class_Color_method_is_equal_approx>` for comparisons to avoid issues with floating-point precision error.
+\ **Note:** Due to the lower precision of :ref:`Color8()<class_@GDScript_method_Color8>` compared to the standard :ref:`Color<class_Color>` constructor, a color created with :ref:`Color8()<class_@GDScript_method_Color8>` will generally not be equal to the same color created with the standard :ref:`Color<class_Color>` constructor. Use :ref:`Color.is_equal_approx()<class_Color_method_is_equal_approx>` for comparisons to avoid issues with floating-point precision error.
 
 .. rst-class:: classref-item-separator
 
@@ -864,13 +970,13 @@ Returns a :ref:`Color<class_Color>` constructed from red (``r8``), green (``g8``
 
 .. rst-class:: classref-method
 
-|void| **assert**\ (\ condition\: :ref:`bool<class_bool>`, message\: :ref:`String<class_String>` = ""\ )
+|void| **assert**\ (\ condition\: :ref:`bool<class_bool>`, message\: :ref:`String<class_String>` = ""\ ) :ref:`🔗<class_@GDScript_method_assert>`
 
-Asserts that the ``condition`` is ``true``. If the ``condition`` is ``false``, an error is generated. When running from the editor, the running project will also be paused until you resume it. This can be used as a stronger form of :ref:`@GlobalScope.push_error<class_@GlobalScope_method_push_error>` for reporting errors to project developers or add-on users.
+Asserts that the ``condition`` is ``true``. If the ``condition`` is ``false``, an error is generated. When running from the editor, the running project will also be paused until you resume it. This can be used as a stronger form of :ref:`@GlobalScope.push_error()<class_@GlobalScope_method_push_error>` for reporting errors to project developers or add-on users.
 
 An optional ``message`` can be shown in addition to the generic "Assertion failed" message. You can use this to provide additional details about why the assertion failed.
 
-\ **Warning:** For performance reasons, the code inside :ref:`assert<class_@GDScript_method_assert>` is only executed in debug builds or when running the project from the editor. Don't include code that has side effects in an :ref:`assert<class_@GDScript_method_assert>` call. Otherwise, the project will behave differently when exported in release mode.
+\ **Warning:** For performance reasons, the code inside :ref:`assert()<class_@GDScript_method_assert>` is only executed in debug builds or when running the project from the editor. Don't include code that has side effects in an :ref:`assert()<class_@GDScript_method_assert>` call. Otherwise, the project will behave differently when exported in release mode.
 
 ::
 
@@ -881,7 +987,7 @@ An optional ``message`` can be shown in addition to the generic "Assertion faile
     assert(speed >= 0 and speed < 20) # You can also combine the two conditional statements in one check.
     assert(speed < 20, "the speed limit is 20") # Show a message.
 
-\ **Note:** :ref:`assert<class_@GDScript_method_assert>` is a keyword, not a function. So you cannot access it as a :ref:`Callable<class_Callable>` or use it inside expressions.
+\ **Note:** :ref:`assert()<class_@GDScript_method_assert>` is a keyword, not a function. So you cannot access it as a :ref:`Callable<class_Callable>` or use it inside expressions.
 
 .. rst-class:: classref-item-separator
 
@@ -891,15 +997,15 @@ An optional ``message`` can be shown in addition to the generic "Assertion faile
 
 .. rst-class:: classref-method
 
-:ref:`String<class_String>` **char**\ (\ char\: :ref:`int<class_int>`\ )
+:ref:`String<class_String>` **char**\ (\ char\: :ref:`int<class_int>`\ ) :ref:`🔗<class_@GDScript_method_char>`
 
 Returns a single character (as a :ref:`String<class_String>`) of the given Unicode code point (which is compatible with ASCII code).
 
 ::
 
-    a = char(65)      # a is "A"
-    a = char(65 + 32) # a is "a"
-    a = char(8364)    # a is "€"
+    var upper = char(65)      # upper is "A"
+    var lower = char(65 + 32) # lower is "a"
+    var euro = char(8364)     # euro is "€"
 
 .. rst-class:: classref-item-separator
 
@@ -909,9 +1015,9 @@ Returns a single character (as a :ref:`String<class_String>`) of the given Unico
 
 .. rst-class:: classref-method
 
-:ref:`Variant<class_Variant>` **convert**\ (\ what\: :ref:`Variant<class_Variant>`, type\: :ref:`int<class_int>`\ )
+:ref:`Variant<class_Variant>` **convert**\ (\ what\: :ref:`Variant<class_Variant>`, type\: :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>`\ ) :ref:`🔗<class_@GDScript_method_convert>`
 
-**Deprecated:** Use :ref:`@GlobalScope.type_convert<class_@GlobalScope_method_type_convert>` instead.
+**Deprecated:** Use :ref:`@GlobalScope.type_convert()<class_@GlobalScope_method_type_convert>` instead.
 
 Converts ``what`` to ``type`` in the best way possible. The ``type`` uses the :ref:`Variant.Type<enum_@GlobalScope_Variant.Type>` values.
 
@@ -932,9 +1038,11 @@ Converts ``what`` to ``type`` in the best way possible. The ``type`` uses the :r
 
 .. rst-class:: classref-method
 
-:ref:`Object<class_Object>` **dict_to_inst**\ (\ dictionary\: :ref:`Dictionary<class_Dictionary>`\ )
+:ref:`Object<class_Object>` **dict_to_inst**\ (\ dictionary\: :ref:`Dictionary<class_Dictionary>`\ ) :ref:`🔗<class_@GDScript_method_dict_to_inst>`
 
-Converts a ``dictionary`` (created with :ref:`inst_to_dict<class_@GDScript_method_inst_to_dict>`) back to an Object instance. Can be useful for deserializing.
+**Deprecated:** Consider using :ref:`JSON.to_native()<class_JSON_method_to_native>` or :ref:`Object.get_property_list()<class_Object_method_get_property_list>` instead.
+
+Converts a ``dictionary`` (created with :ref:`inst_to_dict()<class_@GDScript_method_inst_to_dict>`) back to an Object instance. Can be useful for deserializing.
 
 .. rst-class:: classref-item-separator
 
@@ -944,9 +1052,9 @@ Converts a ``dictionary`` (created with :ref:`inst_to_dict<class_@GDScript_metho
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>` **get_stack**\ (\ )
+:ref:`Array<class_Array>` **get_stack**\ (\ ) :ref:`🔗<class_@GDScript_method_get_stack>`
 
-Returns an array of dictionaries representing the current call stack. See also :ref:`print_stack<class_@GDScript_method_print_stack>`.
+Returns an array of dictionaries representing the current call stack. See also :ref:`print_stack()<class_@GDScript_method_print_stack>`.
 
 ::
 
@@ -965,7 +1073,7 @@ Starting from ``_ready()``, ``bar()`` would print:
 
     [{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]
 
-\ **Note:** This function only works if the running instance is connected to a debugging server (i.e. an editor instance). :ref:`get_stack<class_@GDScript_method_get_stack>` will not work in projects exported in release mode, or in projects exported in debug mode if not connected to a debugging server.
+\ **Note:** This function only works if the running instance is connected to a debugging server (i.e. an editor instance). :ref:`get_stack()<class_@GDScript_method_get_stack>` will not work in projects exported in release mode, or in projects exported in debug mode if not connected to a debugging server.
 
 \ **Note:** Calling this function from a :ref:`Thread<class_Thread>` is not supported. Doing so will return an empty array.
 
@@ -977,11 +1085,11 @@ Starting from ``_ready()``, ``bar()`` would print:
 
 .. rst-class:: classref-method
 
-:ref:`Dictionary<class_Dictionary>` **inst_to_dict**\ (\ instance\: :ref:`Object<class_Object>`\ )
+:ref:`Dictionary<class_Dictionary>` **inst_to_dict**\ (\ instance\: :ref:`Object<class_Object>`\ ) :ref:`🔗<class_@GDScript_method_inst_to_dict>`
 
-Returns the passed ``instance`` converted to a Dictionary. Can be useful for serializing.
+**Deprecated:** Consider using :ref:`JSON.from_native()<class_JSON_method_from_native>` or :ref:`Object.get_property_list()<class_Object_method_get_property_list>` instead.
 
-\ **Note:** Cannot be used to serialize objects with built-in scripts attached or objects allocated within built-in scripts.
+Returns the passed ``instance`` converted to a Dictionary. Can be useful for serializing.
 
 ::
 
@@ -998,6 +1106,10 @@ Prints out:
     [@subpath, @path, foo]
     [, res://test.gd, bar]
 
+\ **Note:** This function can only be used to serialize objects with an attached :ref:`GDScript<class_GDScript>` stored in a separate file. Objects without an attached script, with a script written in another language, or with a built-in script are not supported.
+
+\ **Note:** This function is not recursive, which means that nested objects will not be represented as dictionaries. Also, properties passed by reference (:ref:`Object<class_Object>`, :ref:`Dictionary<class_Dictionary>`, :ref:`Array<class_Array>`, and packed arrays) are copied by reference, not duplicated.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -1006,7 +1118,7 @@ Prints out:
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_instance_of**\ (\ value\: :ref:`Variant<class_Variant>`, type\: :ref:`Variant<class_Variant>`\ )
+:ref:`bool<class_bool>` **is_instance_of**\ (\ value\: :ref:`Variant<class_Variant>`, type\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_@GDScript_method_is_instance_of>`
 
 Returns ``true`` if ``value`` is an instance of ``type``. The ``type`` value must be one of the following:
 
@@ -1018,7 +1130,7 @@ Returns ``true`` if ``value`` is an instance of ``type``. The ``type`` value mus
 
 Unlike the right operand of the ``is`` operator, ``type`` can be a non-constant value. The ``is`` operator supports more features (such as typed arrays). Use the operator instead of this method if you do not need dynamic type checking.
 
-Examples:
+\ **Examples:**\ 
 
 ::
 
@@ -1027,9 +1139,9 @@ Examples:
     print(is_instance_of(a, MyClass))
     print(is_instance_of(a, MyClass.InnerClass))
 
-\ **Note:** If ``value`` and/or ``type`` are freed objects (see :ref:`@GlobalScope.is_instance_valid<class_@GlobalScope_method_is_instance_valid>`), or ``type`` is not one of the above options, this method will raise a runtime error.
+\ **Note:** If ``value`` and/or ``type`` are freed objects (see :ref:`@GlobalScope.is_instance_valid()<class_@GlobalScope_method_is_instance_valid>`), or ``type`` is not one of the above options, this method will raise a runtime error.
 
-See also :ref:`@GlobalScope.typeof<class_@GlobalScope_method_typeof>`, :ref:`type_exists<class_@GDScript_method_type_exists>`, :ref:`Array.is_same_typed<class_Array_method_is_same_typed>` (and other :ref:`Array<class_Array>` methods).
+See also :ref:`@GlobalScope.typeof()<class_@GlobalScope_method_typeof>`, :ref:`type_exists()<class_@GDScript_method_type_exists>`, :ref:`Array.is_same_typed()<class_Array_method_is_same_typed>` (and other :ref:`Array<class_Array>` methods).
 
 .. rst-class:: classref-item-separator
 
@@ -1039,16 +1151,16 @@ See also :ref:`@GlobalScope.typeof<class_@GlobalScope_method_typeof>`, :ref:`typ
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **len**\ (\ var\: :ref:`Variant<class_Variant>`\ )
+:ref:`int<class_int>` **len**\ (\ var\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_@GDScript_method_len>`
 
 Returns the length of the given Variant ``var``. The length can be the character count of a :ref:`String<class_String>` or :ref:`StringName<class_StringName>`, the element count of any array type, or the size of a :ref:`Dictionary<class_Dictionary>`. For every other Variant type, a run-time error is generated and execution is stopped.
 
 ::
 
-    a = [1, 2, 3, 4]
+    var a = [1, 2, 3, 4]
     len(a) # Returns 4
     
-    b = "Hello!"
+    var b = "Hello!"
     len(b) # Returns 6
 
 .. rst-class:: classref-item-separator
@@ -1059,9 +1171,9 @@ Returns the length of the given Variant ``var``. The length can be the character
 
 .. rst-class:: classref-method
 
-:ref:`Resource<class_Resource>` **load**\ (\ path\: :ref:`String<class_String>`\ )
+:ref:`Resource<class_Resource>` **load**\ (\ path\: :ref:`String<class_String>`\ ) :ref:`🔗<class_@GDScript_method_load>`
 
-Returns a :ref:`Resource<class_Resource>` from the filesystem located at the absolute ``path``. Unless it's already referenced elsewhere (such as in another script or in the scene), the resource is loaded from disk on function call, which might cause a slight delay, especially when loading large scenes. To avoid unnecessary delays when loading something multiple times, either store the resource in a variable or use :ref:`preload<class_@GDScript_method_preload>`. This method is equivalent of using :ref:`ResourceLoader.load<class_ResourceLoader_method_load>` with :ref:`ResourceLoader.CACHE_MODE_REUSE<class_ResourceLoader_constant_CACHE_MODE_REUSE>`.
+Returns a :ref:`Resource<class_Resource>` from the filesystem located at the absolute ``path``. Unless it's already referenced elsewhere (such as in another script or in the scene), the resource is loaded from disk on function call, which might cause a slight delay, especially when loading large scenes. To avoid unnecessary delays when loading something multiple times, either store the resource in a variable or use :ref:`preload()<class_@GDScript_method_preload>`. This method is equivalent of using :ref:`ResourceLoader.load()<class_ResourceLoader_method_load>` with :ref:`ResourceLoader.CACHE_MODE_REUSE<class_ResourceLoader_constant_CACHE_MODE_REUSE>`.
 
 \ **Note:** Resource paths can be obtained by right-clicking on a resource in the FileSystem dock and choosing "Copy Path", or by dragging the file from the FileSystem dock into the current script.
 
@@ -1070,13 +1182,13 @@ Returns a :ref:`Resource<class_Resource>` from the filesystem located at the abs
     # Load a scene called "main" located in the root of the project directory and cache it in a variable.
     var main = load("res://main.tscn") # main will contain a PackedScene resource.
 
-\ **Important:** The path must be absolute. A relative path will always return ``null``.
+\ **Important:** Relative paths are *not* relative to the script calling this method, instead it is prefixed with ``"res://"``. Loading from relative paths might not work as expected.
 
-This function is a simplified version of :ref:`ResourceLoader.load<class_ResourceLoader_method_load>`, which can be used for more advanced scenarios.
+This function is a simplified version of :ref:`ResourceLoader.load()<class_ResourceLoader_method_load>`, which can be used for more advanced scenarios.
 
-\ **Note:** Files have to be imported into the engine first to load them using this function. If you want to load :ref:`Image<class_Image>`\ s at run-time, you may use :ref:`Image.load<class_Image_method_load>`. If you want to import audio files, you can use the snippet described in :ref:`AudioStreamMP3.data<class_AudioStreamMP3_property_data>`.
+\ **Note:** Files have to be imported into the engine first to load them using this function. If you want to load :ref:`Image<class_Image>`\ s at run-time, you may use :ref:`Image.load()<class_Image_method_load>`. If you want to import audio files, you can use the snippet described in :ref:`AudioStreamMP3.data<class_AudioStreamMP3_property_data>`.
 
-\ **Note:** If :ref:`ProjectSettings.editor/export/convert_text_resources_to_binary<class_ProjectSettings_property_editor/export/convert_text_resources_to_binary>` is ``true``, :ref:`load<class_@GDScript_method_load>` will not be able to read converted files in an exported project. If you rely on run-time loading of files present within the PCK, set :ref:`ProjectSettings.editor/export/convert_text_resources_to_binary<class_ProjectSettings_property_editor/export/convert_text_resources_to_binary>` to ``false``.
+\ **Note:** If :ref:`ProjectSettings.editor/export/convert_text_resources_to_binary<class_ProjectSettings_property_editor/export/convert_text_resources_to_binary>` is ``true``, :ref:`load()<class_@GDScript_method_load>` will not be able to read converted files in an exported project. If you rely on run-time loading of files present within the PCK, set :ref:`ProjectSettings.editor/export/convert_text_resources_to_binary<class_ProjectSettings_property_editor/export/convert_text_resources_to_binary>` to ``false``.
 
 .. rst-class:: classref-item-separator
 
@@ -1086,9 +1198,9 @@ This function is a simplified version of :ref:`ResourceLoader.load<class_Resourc
 
 .. rst-class:: classref-method
 
-:ref:`Resource<class_Resource>` **preload**\ (\ path\: :ref:`String<class_String>`\ )
+:ref:`Resource<class_Resource>` **preload**\ (\ path\: :ref:`String<class_String>`\ ) :ref:`🔗<class_@GDScript_method_preload>`
 
-Returns a :ref:`Resource<class_Resource>` from the filesystem located at ``path``. During run-time, the resource is loaded when the script is being parsed. This function effectively acts as a reference to that resource. Note that this function requires ``path`` to be a constant :ref:`String<class_String>`. If you want to load a resource from a dynamic/variable path, use :ref:`load<class_@GDScript_method_load>`.
+Returns a :ref:`Resource<class_Resource>` from the filesystem located at ``path``. During run-time, the resource is loaded when the script is being parsed. This function effectively acts as a reference to that resource. Note that this function requires ``path`` to be a constant :ref:`String<class_String>`. If you want to load a resource from a dynamic/variable path, use :ref:`load()<class_@GDScript_method_load>`.
 
 \ **Note:** Resource paths can be obtained by right-clicking on a resource in the Assets Panel and choosing "Copy Path", or by dragging the file from the FileSystem dock into the current script.
 
@@ -1097,7 +1209,7 @@ Returns a :ref:`Resource<class_Resource>` from the filesystem located at ``path`
     # Create instance of a scene.
     var diamond = preload("res://diamond.tscn").instantiate()
 
-\ **Note:** :ref:`preload<class_@GDScript_method_preload>` is a keyword, not a function. So you cannot access it as a :ref:`Callable<class_Callable>`.
+\ **Note:** :ref:`preload()<class_@GDScript_method_preload>` is a keyword, not a function. So you cannot access it as a :ref:`Callable<class_Callable>`.
 
 .. rst-class:: classref-item-separator
 
@@ -1107,9 +1219,9 @@ Returns a :ref:`Resource<class_Resource>` from the filesystem located at ``path`
 
 .. rst-class:: classref-method
 
-|void| **print_debug**\ (\ ...\ ) |vararg|
+|void| **print_debug**\ (\ ...\ ) |vararg| :ref:`🔗<class_@GDScript_method_print_debug>`
 
-Like :ref:`@GlobalScope.print<class_@GlobalScope_method_print>`, but includes the current stack frame when running with the debugger turned on.
+Like :ref:`@GlobalScope.print()<class_@GlobalScope_method_print>`, but includes the current stack frame when running with the debugger turned on.
 
 The output in the console may look like the following:
 
@@ -1128,9 +1240,9 @@ The output in the console may look like the following:
 
 .. rst-class:: classref-method
 
-|void| **print_stack**\ (\ )
+|void| **print_stack**\ (\ ) :ref:`🔗<class_@GDScript_method_print_stack>`
 
-Prints a stack trace at the current code location. See also :ref:`get_stack<class_@GDScript_method_get_stack>`.
+Prints a stack trace at the current code location. See also :ref:`get_stack()<class_@GDScript_method_get_stack>`.
 
 The output in the console may look like the following:
 
@@ -1138,7 +1250,7 @@ The output in the console may look like the following:
 
     Frame 0 - res://test.gd:16 in function '_process'
 
-\ **Note:** This function only works if the running instance is connected to a debugging server (i.e. an editor instance). :ref:`print_stack<class_@GDScript_method_print_stack>` will not work in projects exported in release mode, or in projects exported in debug mode if not connected to a debugging server.
+\ **Note:** This function only works if the running instance is connected to a debugging server (i.e. an editor instance). :ref:`print_stack()<class_@GDScript_method_print_stack>` will not work in projects exported in release mode, or in projects exported in debug mode if not connected to a debugging server.
 
 \ **Note:** Calling this function from a :ref:`Thread<class_Thread>` is not supported. Doing so will instead print the thread ID.
 
@@ -1150,9 +1262,9 @@ The output in the console may look like the following:
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>` **range**\ (\ ...\ ) |vararg|
+:ref:`Array<class_Array>` **range**\ (\ ...\ ) |vararg| :ref:`🔗<class_@GDScript_method_range>`
 
-Returns an array with the given range. :ref:`range<class_@GDScript_method_range>` can be called in three ways:
+Returns an array with the given range. :ref:`range()<class_@GDScript_method_range>` can be called in three ways:
 
 \ ``range(n: int)``: Starts from 0, increases by steps of 1, and stops *before* ``n``. The argument ``n`` is **exclusive**.
 
@@ -1160,11 +1272,11 @@ Returns an array with the given range. :ref:`range<class_@GDScript_method_range>
 
 \ ``range(b: int, n: int, s: int)``: Starts from ``b``, increases/decreases by steps of ``s``, and stops *before* ``n``. The arguments ``b`` and ``n`` are **inclusive** and **exclusive**, respectively. The argument ``s`` **can** be negative, but not ``0``. If ``s`` is ``0``, an error message is printed.
 
-\ :ref:`range<class_@GDScript_method_range>` converts all arguments to :ref:`int<class_int>` before processing.
+\ :ref:`range()<class_@GDScript_method_range>` converts all arguments to :ref:`int<class_int>` before processing.
 
 \ **Note:** Returns an empty array if no value meets the value constraint (e.g. ``range(2, 5, -1)`` or ``range(5, 5, 1)``).
 
-Examples:
+\ **Examples:**\ 
 
 ::
 
@@ -1212,7 +1324,7 @@ Output:
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **type_exists**\ (\ type\: :ref:`StringName<class_StringName>`\ )
+:ref:`bool<class_bool>` **type_exists**\ (\ type\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_@GDScript_method_type_exists>`
 
 Returns ``true`` if the given :ref:`Object<class_Object>`-derived class exists in :ref:`ClassDB<class_ClassDB>`. Note that :ref:`Variant<class_Variant>` data types are not registered in :ref:`ClassDB<class_ClassDB>`.
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 149 - 118
classes/[email protected]


+ 75 - 75
classes/class_aabb.rst

@@ -17,11 +17,11 @@ A 3D axis-aligned bounding box.
 Description
 -----------
 
-The **AABB** built-in :ref:`Variant<class_Variant>` type represents an axis-aligned bounding box in a 3D space. It is defined by its :ref:`position<class_AABB_property_position>` and :ref:`size<class_AABB_property_size>`, which are :ref:`Vector3<class_Vector3>`. It is frequently used for fast overlap tests (see :ref:`intersects<class_AABB_method_intersects>`). Although **AABB** itself is axis-aligned, it can be combined with :ref:`Transform3D<class_Transform3D>` to represent a rotated or skewed bounding box.
+The **AABB** built-in :ref:`Variant<class_Variant>` type represents an axis-aligned bounding box in a 3D space. It is defined by its :ref:`position<class_AABB_property_position>` and :ref:`size<class_AABB_property_size>`, which are :ref:`Vector3<class_Vector3>`. It is frequently used for fast overlap tests (see :ref:`intersects()<class_AABB_method_intersects>`). Although **AABB** itself is axis-aligned, it can be combined with :ref:`Transform3D<class_Transform3D>` to represent a rotated or skewed bounding box.
 
 It uses floating-point coordinates. The 2D counterpart to **AABB** is :ref:`Rect2<class_Rect2>`. There is no version of **AABB** that uses integer coordinates.
 
-\ **Note:** Negative values for :ref:`size<class_AABB_property_size>` are not supported. With negative size, most **AABB** methods do not work correctly. Use :ref:`abs<class_AABB_method_abs>` to get an equivalent **AABB** with a non-negative size.
+\ **Note:** Negative values for :ref:`size<class_AABB_property_size>` are not supported. With negative size, most **AABB** methods do not work correctly. Use :ref:`abs()<class_AABB_method_abs>` to get an equivalent **AABB** with a non-negative size.
 
 \ **Note:** In a boolean context, a **AABB** evaluates to ``false`` if both :ref:`position<class_AABB_property_position>` and :ref:`size<class_AABB_property_size>` are zero (equal to :ref:`Vector3.ZERO<class_Vector3_constant_ZERO>`). Otherwise, it always evaluates to ``true``.
 
@@ -103,7 +103,7 @@ Methods
    +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`     | :ref:`get_shortest_axis_size<class_AABB_method_get_shortest_axis_size>`\ (\ ) |const|                                                                   |
    +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Vector3<class_Vector3>` | :ref:`get_support<class_AABB_method_get_support>`\ (\ dir\: :ref:`Vector3<class_Vector3>`\ ) |const|                                                    |
+   | :ref:`Vector3<class_Vector3>` | :ref:`get_support<class_AABB_method_get_support>`\ (\ direction\: :ref:`Vector3<class_Vector3>`\ ) |const|                                              |
    +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`     | :ref:`get_volume<class_AABB_method_get_volume>`\ (\ ) |const|                                                                                           |
    +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -161,9 +161,9 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`Vector3<class_Vector3>` **end** = ``Vector3(0, 0, 0)``
+:ref:`Vector3<class_Vector3>` **end** = ``Vector3(0, 0, 0)`` :ref:`🔗<class_AABB_property_end>`
 
-The ending point. This is usually the corner on the top-right and forward of the bounding box, and is equivalent to ``position + size``. Setting this point affects the :ref:`size<class_AABB_property_size>`.
+The ending point. This is usually the corner on the top-right and back of the bounding box, and is equivalent to ``position + size``. Setting this point affects the :ref:`size<class_AABB_property_size>`.
 
 .. rst-class:: classref-item-separator
 
@@ -173,9 +173,9 @@ The ending point. This is usually the corner on the top-right and forward of the
 
 .. rst-class:: classref-property
 
-:ref:`Vector3<class_Vector3>` **position** = ``Vector3(0, 0, 0)``
+:ref:`Vector3<class_Vector3>` **position** = ``Vector3(0, 0, 0)`` :ref:`🔗<class_AABB_property_position>`
 
-The origin point. This is usually the corner on the bottom-left and back of the bounding box.
+The origin point. This is usually the corner on the bottom-left and forward of the bounding box.
 
 .. rst-class:: classref-item-separator
 
@@ -185,11 +185,11 @@ The origin point. This is usually the corner on the bottom-left and back of the
 
 .. rst-class:: classref-property
 
-:ref:`Vector3<class_Vector3>` **size** = ``Vector3(0, 0, 0)``
+:ref:`Vector3<class_Vector3>` **size** = ``Vector3(0, 0, 0)`` :ref:`🔗<class_AABB_property_size>`
 
 The bounding box's width, height, and depth starting from :ref:`position<class_AABB_property_position>`. Setting this value also affects the :ref:`end<class_AABB_property_end>` point.
 
-\ **Note:** It's recommended setting the width, height, and depth to non-negative values. This is because most methods in Godot assume that the :ref:`position<class_AABB_property_position>` is the bottom-left-back corner, and the :ref:`end<class_AABB_property_end>` is the top-right-forward corner. To get an equivalent bounding box with non-negative size, use :ref:`abs<class_AABB_method_abs>`.
+\ **Note:** It's recommended setting the width, height, and depth to non-negative values. This is because most methods in Godot assume that the :ref:`position<class_AABB_property_position>` is the bottom-left-forward corner, and the :ref:`end<class_AABB_property_end>` is the top-right-back corner. To get an equivalent bounding box with non-negative size, use :ref:`abs()<class_AABB_method_abs>`.
 
 .. rst-class:: classref-section-separator
 
@@ -204,7 +204,7 @@ Constructor Descriptions
 
 .. rst-class:: classref-constructor
 
-:ref:`AABB<class_AABB>` **AABB**\ (\ )
+:ref:`AABB<class_AABB>` **AABB**\ (\ ) :ref:`🔗<class_AABB_constructor_AABB>`
 
 Constructs an **AABB** with its :ref:`position<class_AABB_property_position>` and :ref:`size<class_AABB_property_size>` set to :ref:`Vector3.ZERO<class_Vector3_constant_ZERO>`.
 
@@ -241,7 +241,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`AABB<class_AABB>` **abs**\ (\ ) |const|
+:ref:`AABB<class_AABB>` **abs**\ (\ ) |const| :ref:`🔗<class_AABB_method_abs>`
 
 Returns an **AABB** equivalent to this bounding box, with its width, height, and depth modified to be non-negative values.
 
@@ -252,8 +252,8 @@ Returns an **AABB** equivalent to this bounding box, with its width, height, and
 
     var box = AABB(Vector3(5, 0, 5), Vector3(-20, -10, -5))
     var absolute = box.abs()
-    print(absolute.position) # Prints (-15, -10, 0)
-    print(absolute.size)     # Prints (20, 10, 5)
+    print(absolute.position) # Prints (-15.0, -10.0, 0.0)
+    print(absolute.size)     # Prints (20.0, 10.0, 5.0)
 
  .. code-tab:: csharp
 
@@ -274,7 +274,7 @@ Returns an **AABB** equivalent to this bounding box, with its width, height, and
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **encloses**\ (\ with\: :ref:`AABB<class_AABB>`\ ) |const|
+:ref:`bool<class_bool>` **encloses**\ (\ with\: :ref:`AABB<class_AABB>`\ ) |const| :ref:`🔗<class_AABB_method_encloses>`
 
 Returns ``true`` if this bounding box *completely* encloses the ``with`` box. The edges of both boxes are included.
 
@@ -311,7 +311,7 @@ Returns ``true`` if this bounding box *completely* encloses the ``with`` box. Th
 
 .. rst-class:: classref-method
 
-:ref:`AABB<class_AABB>` **expand**\ (\ to_point\: :ref:`Vector3<class_Vector3>`\ ) |const|
+:ref:`AABB<class_AABB>` **expand**\ (\ to_point\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_AABB_method_expand>`
 
 Returns a copy of this bounding box expanded to align the edges with the given ``to_point``, if necessary.
 
@@ -323,12 +323,12 @@ Returns a copy of this bounding box expanded to align the edges with the given `
     var box = AABB(Vector3(0, 0, 0), Vector3(5, 2, 5))
     
     box = box.expand(Vector3(10, 0, 0))
-    print(box.position) # Prints (0, 0, 0)
-    print(box.size)     # Prints (10, 2, 5)
+    print(box.position) # Prints (0.0, 0.0, 0.0)
+    print(box.size)     # Prints (10.0, 2.0, 5.0)
     
     box = box.expand(Vector3(-5, 0, 5))
-    print(box.position) # Prints (-5, 0, 0)
-    print(box.size)     # Prints (15, 2, 5)
+    print(box.position) # Prints (-5.0, 0.0, 0.0)
+    print(box.size)     # Prints (15.0, 2.0, 5.0)
 
  .. code-tab:: csharp
 
@@ -352,7 +352,7 @@ Returns a copy of this bounding box expanded to align the edges with the given `
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_center**\ (\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_center**\ (\ ) |const| :ref:`🔗<class_AABB_method_get_center>`
 
 Returns the center point of the bounding box. This is the same as ``position + (size / 2.0)``.
 
@@ -364,7 +364,7 @@ Returns the center point of the bounding box. This is the same as ``position + (
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_endpoint**\ (\ idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_endpoint**\ (\ idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AABB_method_get_endpoint>`
 
 Returns the position of one of the 8 vertices that compose this bounding box. With a ``idx`` of ``0`` this is the same as :ref:`position<class_AABB_property_position>`, and a ``idx`` of ``7`` is the same as :ref:`end<class_AABB_property_end>`.
 
@@ -376,7 +376,7 @@ Returns the position of one of the 8 vertices that compose this bounding box. Wi
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_longest_axis**\ (\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_longest_axis**\ (\ ) |const| :ref:`🔗<class_AABB_method_get_longest_axis>`
 
 Returns the longest normalized axis of this bounding box's :ref:`size<class_AABB_property_size>`, as a :ref:`Vector3<class_Vector3>` (:ref:`Vector3.RIGHT<class_Vector3_constant_RIGHT>`, :ref:`Vector3.UP<class_Vector3_constant_UP>`, or :ref:`Vector3.BACK<class_Vector3_constant_BACK>`).
 
@@ -387,21 +387,21 @@ Returns the longest normalized axis of this bounding box's :ref:`size<class_AABB
 
     var box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))
     
-    print(box.get_longest_axis())       # Prints (0, 0, 1)
+    print(box.get_longest_axis())       # Prints (0.0, 0.0, 1.0)
     print(box.get_longest_axis_index()) # Prints 2
-    print(box.get_longest_axis_size())  # Prints 8
+    print(box.get_longest_axis_size())  # Prints 8.0
 
  .. code-tab:: csharp
 
     var box = new Aabb(new Vector3(0, 0, 0), new Vector3(2, 4, 8));
     
     GD.Print(box.GetLongestAxis());      // Prints (0, 0, 1)
-    GD.Print(box.GetLongestAxisIndex()); // Prints 2
+    GD.Print(box.GetLongestAxisIndex()); // Prints Z
     GD.Print(box.GetLongestAxisSize());  // Prints 8
 
 
 
-See also :ref:`get_longest_axis_index<class_AABB_method_get_longest_axis_index>` and :ref:`get_longest_axis_size<class_AABB_method_get_longest_axis_size>`.
+See also :ref:`get_longest_axis_index()<class_AABB_method_get_longest_axis_index>` and :ref:`get_longest_axis_size()<class_AABB_method_get_longest_axis_size>`.
 
 .. rst-class:: classref-item-separator
 
@@ -411,11 +411,11 @@ See also :ref:`get_longest_axis_index<class_AABB_method_get_longest_axis_index>`
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_longest_axis_index**\ (\ ) |const|
+:ref:`int<class_int>` **get_longest_axis_index**\ (\ ) |const| :ref:`🔗<class_AABB_method_get_longest_axis_index>`
 
 Returns the index to the longest axis of this bounding box's :ref:`size<class_AABB_property_size>` (see :ref:`Vector3.AXIS_X<class_Vector3_constant_AXIS_X>`, :ref:`Vector3.AXIS_Y<class_Vector3_constant_AXIS_Y>`, and :ref:`Vector3.AXIS_Z<class_Vector3_constant_AXIS_Z>`).
 
-For an example, see :ref:`get_longest_axis<class_AABB_method_get_longest_axis>`.
+For an example, see :ref:`get_longest_axis()<class_AABB_method_get_longest_axis>`.
 
 .. rst-class:: classref-item-separator
 
@@ -425,11 +425,11 @@ For an example, see :ref:`get_longest_axis<class_AABB_method_get_longest_axis>`.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_longest_axis_size**\ (\ ) |const|
+:ref:`float<class_float>` **get_longest_axis_size**\ (\ ) |const| :ref:`🔗<class_AABB_method_get_longest_axis_size>`
 
 Returns the longest dimension of this bounding box's :ref:`size<class_AABB_property_size>`.
 
-For an example, see :ref:`get_longest_axis<class_AABB_method_get_longest_axis>`.
+For an example, see :ref:`get_longest_axis()<class_AABB_method_get_longest_axis>`.
 
 .. rst-class:: classref-item-separator
 
@@ -439,9 +439,9 @@ For an example, see :ref:`get_longest_axis<class_AABB_method_get_longest_axis>`.
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_shortest_axis**\ (\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_shortest_axis**\ (\ ) |const| :ref:`🔗<class_AABB_method_get_shortest_axis>`
 
-Returns the shortest normaalized axis of this bounding box's :ref:`size<class_AABB_property_size>`, as a :ref:`Vector3<class_Vector3>` (:ref:`Vector3.RIGHT<class_Vector3_constant_RIGHT>`, :ref:`Vector3.UP<class_Vector3_constant_UP>`, or :ref:`Vector3.BACK<class_Vector3_constant_BACK>`).
+Returns the shortest normalized axis of this bounding box's :ref:`size<class_AABB_property_size>`, as a :ref:`Vector3<class_Vector3>` (:ref:`Vector3.RIGHT<class_Vector3_constant_RIGHT>`, :ref:`Vector3.UP<class_Vector3_constant_UP>`, or :ref:`Vector3.BACK<class_Vector3_constant_BACK>`).
 
 
 .. tabs::
@@ -450,21 +450,21 @@ Returns the shortest normaalized axis of this bounding box's :ref:`size<class_AA
 
     var box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))
     
-    print(box.get_shortest_axis())       # Prints (1, 0, 0)
+    print(box.get_shortest_axis())       # Prints (1.0, 0.0, 0.0)
     print(box.get_shortest_axis_index()) # Prints 0
-    print(box.get_shortest_axis_size())  # Prints 2
+    print(box.get_shortest_axis_size())  # Prints 2.0
 
  .. code-tab:: csharp
 
     var box = new Aabb(new Vector3(0, 0, 0), new Vector3(2, 4, 8));
     
     GD.Print(box.GetShortestAxis());      // Prints (1, 0, 0)
-    GD.Print(box.GetShortestAxisIndex()); // Prints 0
+    GD.Print(box.GetShortestAxisIndex()); // Prints X
     GD.Print(box.GetShortestAxisSize());  // Prints 2
 
 
 
-See also :ref:`get_shortest_axis_index<class_AABB_method_get_shortest_axis_index>` and :ref:`get_shortest_axis_size<class_AABB_method_get_shortest_axis_size>`.
+See also :ref:`get_shortest_axis_index()<class_AABB_method_get_shortest_axis_index>` and :ref:`get_shortest_axis_size()<class_AABB_method_get_shortest_axis_size>`.
 
 .. rst-class:: classref-item-separator
 
@@ -474,11 +474,11 @@ See also :ref:`get_shortest_axis_index<class_AABB_method_get_shortest_axis_index
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_shortest_axis_index**\ (\ ) |const|
+:ref:`int<class_int>` **get_shortest_axis_index**\ (\ ) |const| :ref:`🔗<class_AABB_method_get_shortest_axis_index>`
 
 Returns the index to the shortest axis of this bounding box's :ref:`size<class_AABB_property_size>` (see :ref:`Vector3.AXIS_X<class_Vector3_constant_AXIS_X>`, :ref:`Vector3.AXIS_Y<class_Vector3_constant_AXIS_Y>`, and :ref:`Vector3.AXIS_Z<class_Vector3_constant_AXIS_Z>`).
 
-For an example, see :ref:`get_shortest_axis<class_AABB_method_get_shortest_axis>`.
+For an example, see :ref:`get_shortest_axis()<class_AABB_method_get_shortest_axis>`.
 
 .. rst-class:: classref-item-separator
 
@@ -488,11 +488,11 @@ For an example, see :ref:`get_shortest_axis<class_AABB_method_get_shortest_axis>
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_shortest_axis_size**\ (\ ) |const|
+:ref:`float<class_float>` **get_shortest_axis_size**\ (\ ) |const| :ref:`🔗<class_AABB_method_get_shortest_axis_size>`
 
 Returns the shortest dimension of this bounding box's :ref:`size<class_AABB_property_size>`.
 
-For an example, see :ref:`get_shortest_axis<class_AABB_method_get_shortest_axis>`.
+For an example, see :ref:`get_shortest_axis()<class_AABB_method_get_shortest_axis>`.
 
 .. rst-class:: classref-item-separator
 
@@ -502,7 +502,7 @@ For an example, see :ref:`get_shortest_axis<class_AABB_method_get_shortest_axis>
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_support**\ (\ dir\: :ref:`Vector3<class_Vector3>`\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_support**\ (\ direction\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_AABB_method_get_support>`
 
 Returns the vertex's position of this bounding box that's the farthest in the given direction. This point is commonly known as the support point in collision detection algorithms.
 
@@ -514,9 +514,9 @@ Returns the vertex's position of this bounding box that's the farthest in the gi
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_volume**\ (\ ) |const|
+:ref:`float<class_float>` **get_volume**\ (\ ) |const| :ref:`🔗<class_AABB_method_get_volume>`
 
-Returns the bounding box's volume. This is equivalent to ``size.x * size.y * size.z``. See also :ref:`has_volume<class_AABB_method_has_volume>`.
+Returns the bounding box's volume. This is equivalent to ``size.x * size.y * size.z``. See also :ref:`has_volume()<class_AABB_method_has_volume>`.
 
 .. rst-class:: classref-item-separator
 
@@ -526,7 +526,7 @@ Returns the bounding box's volume. This is equivalent to ``size.x * size.y * siz
 
 .. rst-class:: classref-method
 
-:ref:`AABB<class_AABB>` **grow**\ (\ by\: :ref:`float<class_float>`\ ) |const|
+:ref:`AABB<class_AABB>` **grow**\ (\ by\: :ref:`float<class_float>`\ ) |const| :ref:`🔗<class_AABB_method_grow>`
 
 Returns a copy of this bounding box extended on all sides by the given amount ``by``. A negative amount shrinks the box instead.
 
@@ -536,12 +536,12 @@ Returns a copy of this bounding box extended on all sides by the given amount ``
  .. code-tab:: gdscript
 
     var a = AABB(Vector3(4, 4, 4), Vector3(8, 8, 8)).grow(4)
-    print(a.position) # Prints (0, 0, 0)
-    print(a.size)     # Prints (16, 16, 16)
+    print(a.position) # Prints (0.0, 0.0, 0.0)
+    print(a.size)     # Prints (16.0, 16.0, 16.0)
     
     var b = AABB(Vector3(0, 0, 0), Vector3(8, 4, 2)).grow(2)
-    print(b.position) # Prints (-2, -2, -2)
-    print(b.size)     # Prints (12, 8, 6)
+    print(b.position) # Prints (-2.0, -2.0, -2.0)
+    print(b.size)     # Prints (12.0, 8.0, 6.0)
 
  .. code-tab:: csharp
 
@@ -563,11 +563,11 @@ Returns a copy of this bounding box extended on all sides by the given amount ``
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_point**\ (\ point\: :ref:`Vector3<class_Vector3>`\ ) |const|
+:ref:`bool<class_bool>` **has_point**\ (\ point\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_AABB_method_has_point>`
 
 Returns ``true`` if the bounding box contains the given ``point``. By convention, points exactly on the right, top, and front sides are **not** included.
 
-\ **Note:** This method is not reliable for **AABB** with a *negative* :ref:`size<class_AABB_property_size>`. Use :ref:`abs<class_AABB_method_abs>` first to get a valid bounding box.
+\ **Note:** This method is not reliable for **AABB** with a *negative* :ref:`size<class_AABB_property_size>`. Use :ref:`abs()<class_AABB_method_abs>` first to get a valid bounding box.
 
 .. rst-class:: classref-item-separator
 
@@ -577,7 +577,7 @@ Returns ``true`` if the bounding box contains the given ``point``. By convention
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_surface**\ (\ ) |const|
+:ref:`bool<class_bool>` **has_surface**\ (\ ) |const| :ref:`🔗<class_AABB_method_has_surface>`
 
 Returns ``true`` if this bounding box has a surface or a length, that is, at least one component of :ref:`size<class_AABB_property_size>` is greater than ``0``. Otherwise, returns ``false``.
 
@@ -589,9 +589,9 @@ Returns ``true`` if this bounding box has a surface or a length, that is, at lea
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_volume**\ (\ ) |const|
+:ref:`bool<class_bool>` **has_volume**\ (\ ) |const| :ref:`🔗<class_AABB_method_has_volume>`
 
-Returns ``true`` if this bounding box's width, height, and depth are all positive. See also :ref:`get_volume<class_AABB_method_get_volume>`.
+Returns ``true`` if this bounding box's width, height, and depth are all positive. See also :ref:`get_volume()<class_AABB_method_get_volume>`.
 
 .. rst-class:: classref-item-separator
 
@@ -601,9 +601,9 @@ Returns ``true`` if this bounding box's width, height, and depth are all positiv
 
 .. rst-class:: classref-method
 
-:ref:`AABB<class_AABB>` **intersection**\ (\ with\: :ref:`AABB<class_AABB>`\ ) |const|
+:ref:`AABB<class_AABB>` **intersection**\ (\ with\: :ref:`AABB<class_AABB>`\ ) |const| :ref:`🔗<class_AABB_method_intersection>`
 
-Returns the intersection between this bounding box and ``with``. If the boxes do not intersect, returns an empty **AABB**. If the boxes intersect at the edge, returns a flat **AABB** with no volume (see :ref:`has_surface<class_AABB_method_has_surface>` and :ref:`has_volume<class_AABB_method_has_volume>`).
+Returns the intersection between this bounding box and ``with``. If the boxes do not intersect, returns an empty **AABB**. If the boxes intersect at the edge, returns a flat **AABB** with no volume (see :ref:`has_surface()<class_AABB_method_has_surface>` and :ref:`has_volume()<class_AABB_method_has_volume>`).
 
 
 .. tabs::
@@ -614,8 +614,8 @@ Returns the intersection between this bounding box and ``with``. If the boxes do
     var box2 = AABB(Vector3(2, 0, 2), Vector3(8, 4, 4))
     
     var intersection = box1.intersection(box2)
-    print(intersection.position) # Prints (2, 0, 2)
-    print(intersection.size)     # Prints (3, 2, 4)
+    print(intersection.position) # Prints (2.0, 0.0, 2.0)
+    print(intersection.size)     # Prints (3.0, 2.0, 4.0)
 
  .. code-tab:: csharp
 
@@ -628,7 +628,7 @@ Returns the intersection between this bounding box and ``with``. If the boxes do
 
 
 
-\ **Note:** If you only need to know whether two bounding boxes are intersecting, use :ref:`intersects<class_AABB_method_intersects>`, instead.
+\ **Note:** If you only need to know whether two bounding boxes are intersecting, use :ref:`intersects()<class_AABB_method_intersects>`, instead.
 
 .. rst-class:: classref-item-separator
 
@@ -638,7 +638,7 @@ Returns the intersection between this bounding box and ``with``. If the boxes do
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **intersects**\ (\ with\: :ref:`AABB<class_AABB>`\ ) |const|
+:ref:`bool<class_bool>` **intersects**\ (\ with\: :ref:`AABB<class_AABB>`\ ) |const| :ref:`🔗<class_AABB_method_intersects>`
 
 Returns ``true`` if this bounding box overlaps with the box ``with``. The edges of both boxes are *always* excluded.
 
@@ -650,7 +650,7 @@ Returns ``true`` if this bounding box overlaps with the box ``with``. The edges
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **intersects_plane**\ (\ plane\: :ref:`Plane<class_Plane>`\ ) |const|
+:ref:`bool<class_bool>` **intersects_plane**\ (\ plane\: :ref:`Plane<class_Plane>`\ ) |const| :ref:`🔗<class_AABB_method_intersects_plane>`
 
 Returns ``true`` if this bounding box is on both sides of the given ``plane``.
 
@@ -662,7 +662,7 @@ Returns ``true`` if this bounding box is on both sides of the given ``plane``.
 
 .. rst-class:: classref-method
 
-:ref:`Variant<class_Variant>` **intersects_ray**\ (\ from\: :ref:`Vector3<class_Vector3>`, dir\: :ref:`Vector3<class_Vector3>`\ ) |const|
+:ref:`Variant<class_Variant>` **intersects_ray**\ (\ from\: :ref:`Vector3<class_Vector3>`, dir\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_AABB_method_intersects_ray>`
 
 Returns the first point where this bounding box and the given ray intersect, as a :ref:`Vector3<class_Vector3>`. If no intersection occurs, returns ``null``.
 
@@ -676,7 +676,7 @@ The ray begin at ``from``, faces ``dir`` and extends towards infinity.
 
 .. rst-class:: classref-method
 
-:ref:`Variant<class_Variant>` **intersects_segment**\ (\ from\: :ref:`Vector3<class_Vector3>`, to\: :ref:`Vector3<class_Vector3>`\ ) |const|
+:ref:`Variant<class_Variant>` **intersects_segment**\ (\ from\: :ref:`Vector3<class_Vector3>`, to\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_AABB_method_intersects_segment>`
 
 Returns the first point where this bounding box and the given segment intersect, as a :ref:`Vector3<class_Vector3>`. If no intersection occurs, returns ``null``.
 
@@ -690,9 +690,9 @@ The segment begins at ``from`` and ends at ``to``.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_equal_approx**\ (\ aabb\: :ref:`AABB<class_AABB>`\ ) |const|
+:ref:`bool<class_bool>` **is_equal_approx**\ (\ aabb\: :ref:`AABB<class_AABB>`\ ) |const| :ref:`🔗<class_AABB_method_is_equal_approx>`
 
-Returns ``true`` if this bounding box and ``aabb`` are approximately equal, by calling :ref:`Vector2.is_equal_approx<class_Vector2_method_is_equal_approx>` on the :ref:`position<class_AABB_property_position>` and the :ref:`size<class_AABB_property_size>`.
+Returns ``true`` if this bounding box and ``aabb`` are approximately equal, by calling :ref:`Vector3.is_equal_approx()<class_Vector3_method_is_equal_approx>` on the :ref:`position<class_AABB_property_position>` and the :ref:`size<class_AABB_property_size>`.
 
 .. rst-class:: classref-item-separator
 
@@ -702,9 +702,9 @@ Returns ``true`` if this bounding box and ``aabb`` are approximately equal, by c
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_finite**\ (\ ) |const|
+:ref:`bool<class_bool>` **is_finite**\ (\ ) |const| :ref:`🔗<class_AABB_method_is_finite>`
 
-Returns ``true`` if this bounding box's values are finite, by calling :ref:`Vector2.is_finite<class_Vector2_method_is_finite>` on the :ref:`position<class_AABB_property_position>` and the :ref:`size<class_AABB_property_size>`.
+Returns ``true`` if this bounding box's values are finite, by calling :ref:`Vector3.is_finite()<class_Vector3_method_is_finite>` on the :ref:`position<class_AABB_property_position>` and the :ref:`size<class_AABB_property_size>`.
 
 .. rst-class:: classref-item-separator
 
@@ -714,9 +714,9 @@ Returns ``true`` if this bounding box's values are finite, by calling :ref:`Vect
 
 .. rst-class:: classref-method
 
-:ref:`AABB<class_AABB>` **merge**\ (\ with\: :ref:`AABB<class_AABB>`\ ) |const|
+:ref:`AABB<class_AABB>` **merge**\ (\ with\: :ref:`AABB<class_AABB>`\ ) |const| :ref:`🔗<class_AABB_method_merge>`
 
-Returns an **AABB** that encloses both this bounding box and ``with`` around the edges. See also :ref:`encloses<class_AABB_method_encloses>`.
+Returns an **AABB** that encloses both this bounding box and ``with`` around the edges. See also :ref:`encloses()<class_AABB_method_encloses>`.
 
 .. rst-class:: classref-section-separator
 
@@ -731,11 +731,11 @@ Operator Descriptions
 
 .. rst-class:: classref-operator
 
-:ref:`bool<class_bool>` **operator !=**\ (\ right\: :ref:`AABB<class_AABB>`\ )
+:ref:`bool<class_bool>` **operator !=**\ (\ right\: :ref:`AABB<class_AABB>`\ ) :ref:`🔗<class_AABB_operator_neq_AABB>`
 
 Returns ``true`` if the :ref:`position<class_AABB_property_position>` or :ref:`size<class_AABB_property_size>` of both bounding boxes are not equal.
 
-\ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx<class_AABB_method_is_equal_approx>` instead, which is more reliable.
+\ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx()<class_AABB_method_is_equal_approx>` instead, which is more reliable.
 
 .. rst-class:: classref-item-separator
 
@@ -745,13 +745,13 @@ Returns ``true`` if the :ref:`position<class_AABB_property_position>` or :ref:`s
 
 .. rst-class:: classref-operator
 
-:ref:`AABB<class_AABB>` **operator ***\ (\ right\: :ref:`Transform3D<class_Transform3D>`\ )
+:ref:`AABB<class_AABB>` **operator ***\ (\ right\: :ref:`Transform3D<class_Transform3D>`\ ) :ref:`🔗<class_AABB_operator_mul_Transform3D>`
 
 Inversely transforms (multiplies) the **AABB** by the given :ref:`Transform3D<class_Transform3D>` transformation matrix, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not).
 
-\ ``aabb * transform`` is equivalent to ``transform.inverse() * aabb``. See :ref:`Transform3D.inverse<class_Transform3D_method_inverse>`.
+\ ``aabb * transform`` is equivalent to ``transform.inverse() * aabb``. See :ref:`Transform3D.inverse()<class_Transform3D_method_inverse>`.
 
-For transforming by inverse of an affine transformation (e.g. with scaling) ``transform.affine_inverse() * aabb`` can be used instead. See :ref:`Transform3D.affine_inverse<class_Transform3D_method_affine_inverse>`.
+For transforming by inverse of an affine transformation (e.g. with scaling) ``transform.affine_inverse() * aabb`` can be used instead. See :ref:`Transform3D.affine_inverse()<class_Transform3D_method_affine_inverse>`.
 
 .. rst-class:: classref-item-separator
 
@@ -761,11 +761,11 @@ For transforming by inverse of an affine transformation (e.g. with scaling) ``tr
 
 .. rst-class:: classref-operator
 
-:ref:`bool<class_bool>` **operator ==**\ (\ right\: :ref:`AABB<class_AABB>`\ )
+:ref:`bool<class_bool>` **operator ==**\ (\ right\: :ref:`AABB<class_AABB>`\ ) :ref:`🔗<class_AABB_operator_eq_AABB>`
 
 Returns ``true`` if both :ref:`position<class_AABB_property_position>` and :ref:`size<class_AABB_property_size>` of the bounding boxes are exactly equal, respectively.
 
-\ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx<class_AABB_method_is_equal_approx>` instead, which is more reliable.
+\ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx()<class_AABB_method_is_equal_approx>` instead, which is more reliable.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 51 - 23
classes/class_acceptdialog.rst

@@ -21,7 +21,7 @@ A base dialog used for user notification.
 Description
 -----------
 
-The default use of **AcceptDialog** is to allow it to only be accepted or closed, with the same result. However, the :ref:`confirmed<class_AcceptDialog_signal_confirmed>` and :ref:`canceled<class_AcceptDialog_signal_canceled>` signals allow to make the two actions different, and the :ref:`add_button<class_AcceptDialog_method_add_button>` method allows to add custom buttons and actions.
+The default use of **AcceptDialog** is to allow it to only be accepted or closed, with the same result. However, the :ref:`confirmed<class_AcceptDialog_signal_confirmed>` and :ref:`canceled<class_AcceptDialog_signal_canceled>` signals allow to make the two actions different, and the :ref:`add_button()<class_AcceptDialog_method_add_button>` method allows to add custom buttons and actions.
 
 .. rst-class:: classref-reftable-group
 
@@ -85,6 +85,10 @@ Theme Properties
 .. table::
    :widths: auto
 
+   +---------------------------------+---------------------------------------------------------------------------------+--------+
+   | :ref:`int<class_int>`           | :ref:`buttons_min_height<class_AcceptDialog_theme_constant_buttons_min_height>` | ``0``  |
+   +---------------------------------+---------------------------------------------------------------------------------+--------+
+   | :ref:`int<class_int>`           | :ref:`buttons_min_width<class_AcceptDialog_theme_constant_buttons_min_width>`   | ``0``  |
    +---------------------------------+---------------------------------------------------------------------------------+--------+
    | :ref:`int<class_int>`           | :ref:`buttons_separation<class_AcceptDialog_theme_constant_buttons_separation>` | ``10`` |
    +---------------------------------+---------------------------------------------------------------------------------+--------+
@@ -104,9 +108,9 @@ Signals
 
 .. rst-class:: classref-signal
 
-**canceled**\ (\ )
+**canceled**\ (\ ) :ref:`🔗<class_AcceptDialog_signal_canceled>`
 
-Emitted when the dialog is closed or the button created with :ref:`add_cancel_button<class_AcceptDialog_method_add_cancel_button>` is pressed.
+Emitted when the dialog is closed or the button created with :ref:`add_cancel_button()<class_AcceptDialog_method_add_cancel_button>` is pressed.
 
 .. rst-class:: classref-item-separator
 
@@ -116,7 +120,7 @@ Emitted when the dialog is closed or the button created with :ref:`add_cancel_bu
 
 .. rst-class:: classref-signal
 
-**confirmed**\ (\ )
+**confirmed**\ (\ ) :ref:`🔗<class_AcceptDialog_signal_confirmed>`
 
 Emitted when the dialog is accepted, i.e. the OK button is pressed.
 
@@ -128,9 +132,9 @@ Emitted when the dialog is accepted, i.e. the OK button is pressed.
 
 .. rst-class:: classref-signal
 
-**custom_action**\ (\ action\: :ref:`StringName<class_StringName>`\ )
+**custom_action**\ (\ action\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AcceptDialog_signal_custom_action>`
 
-Emitted when a custom button is pressed. See :ref:`add_button<class_AcceptDialog_method_add_button>`.
+Emitted when a custom button is pressed. See :ref:`add_button()<class_AcceptDialog_method_add_button>`.
 
 .. rst-class:: classref-section-separator
 
@@ -145,7 +149,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **dialog_autowrap** = ``false``
+:ref:`bool<class_bool>` **dialog_autowrap** = ``false`` :ref:`🔗<class_AcceptDialog_property_dialog_autowrap>`
 
 .. rst-class:: classref-property-setget
 
@@ -162,7 +166,7 @@ Sets autowrapping for the text in the dialog.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **dialog_close_on_escape** = ``true``
+:ref:`bool<class_bool>` **dialog_close_on_escape** = ``true`` :ref:`🔗<class_AcceptDialog_property_dialog_close_on_escape>`
 
 .. rst-class:: classref-property-setget
 
@@ -179,7 +183,7 @@ If ``true``, the dialog will be hidden when the escape key (:ref:`@GlobalScope.K
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **dialog_hide_on_ok** = ``true``
+:ref:`bool<class_bool>` **dialog_hide_on_ok** = ``true`` :ref:`🔗<class_AcceptDialog_property_dialog_hide_on_ok>`
 
 .. rst-class:: classref-property-setget
 
@@ -198,7 +202,7 @@ If ``true``, the dialog is hidden when the OK button is pressed. You can set it
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **dialog_text** = ``""``
+:ref:`String<class_String>` **dialog_text** = ``""`` :ref:`🔗<class_AcceptDialog_property_dialog_text>`
 
 .. rst-class:: classref-property-setget
 
@@ -215,14 +219,14 @@ The text displayed by the dialog.
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **ok_button_text** = ``"OK"``
+:ref:`String<class_String>` **ok_button_text** = ``"OK"`` :ref:`🔗<class_AcceptDialog_property_ok_button_text>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_ok_button_text**\ (\ value\: :ref:`String<class_String>`\ )
 - :ref:`String<class_String>` **get_ok_button_text**\ (\ )
 
-The text displayed by the OK button (see :ref:`get_ok_button<class_AcceptDialog_method_get_ok_button>`).
+The text displayed by the OK button (see :ref:`get_ok_button()<class_AcceptDialog_method_get_ok_button>`).
 
 .. rst-class:: classref-section-separator
 
@@ -237,13 +241,13 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`Button<class_Button>` **add_button**\ (\ text\: :ref:`String<class_String>`, right\: :ref:`bool<class_bool>` = false, action\: :ref:`String<class_String>` = ""\ )
+:ref:`Button<class_Button>` **add_button**\ (\ text\: :ref:`String<class_String>`, right\: :ref:`bool<class_bool>` = false, action\: :ref:`String<class_String>` = ""\ ) :ref:`🔗<class_AcceptDialog_method_add_button>`
 
 Adds a button with label ``text`` and a custom ``action`` to the dialog and returns the created button. ``action`` will be passed to the :ref:`custom_action<class_AcceptDialog_signal_custom_action>` signal when pressed.
 
 If ``true``, ``right`` will place the button to the right of any sibling buttons.
 
-You can use :ref:`remove_button<class_AcceptDialog_method_remove_button>` method to remove a button created with this method from the dialog.
+You can use :ref:`remove_button()<class_AcceptDialog_method_remove_button>` method to remove a button created with this method from the dialog.
 
 .. rst-class:: classref-item-separator
 
@@ -253,11 +257,11 @@ You can use :ref:`remove_button<class_AcceptDialog_method_remove_button>` method
 
 .. rst-class:: classref-method
 
-:ref:`Button<class_Button>` **add_cancel_button**\ (\ name\: :ref:`String<class_String>`\ )
+:ref:`Button<class_Button>` **add_cancel_button**\ (\ name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_AcceptDialog_method_add_cancel_button>`
 
 Adds a button with label ``name`` and a cancel action to the dialog and returns the created button.
 
-You can use :ref:`remove_button<class_AcceptDialog_method_remove_button>` method to remove a button created with this method from the dialog.
+You can use :ref:`remove_button()<class_AcceptDialog_method_remove_button>` method to remove a button created with this method from the dialog.
 
 .. rst-class:: classref-item-separator
 
@@ -267,7 +271,7 @@ You can use :ref:`remove_button<class_AcceptDialog_method_remove_button>` method
 
 .. rst-class:: classref-method
 
-:ref:`Label<class_Label>` **get_label**\ (\ )
+:ref:`Label<class_Label>` **get_label**\ (\ ) :ref:`🔗<class_AcceptDialog_method_get_label>`
 
 Returns the label used for built-in text.
 
@@ -281,7 +285,7 @@ Returns the label used for built-in text.
 
 .. rst-class:: classref-method
 
-:ref:`Button<class_Button>` **get_ok_button**\ (\ )
+:ref:`Button<class_Button>` **get_ok_button**\ (\ ) :ref:`🔗<class_AcceptDialog_method_get_ok_button>`
 
 Returns the OK :ref:`Button<class_Button>` instance.
 
@@ -295,7 +299,7 @@ Returns the OK :ref:`Button<class_Button>` instance.
 
 .. rst-class:: classref-method
 
-|void| **register_text_enter**\ (\ line_edit\: :ref:`LineEdit<class_LineEdit>`\ )
+|void| **register_text_enter**\ (\ line_edit\: :ref:`LineEdit<class_LineEdit>`\ ) :ref:`🔗<class_AcceptDialog_method_register_text_enter>`
 
 Registers a :ref:`LineEdit<class_LineEdit>` in the dialog. When the enter key is pressed, the dialog will be accepted.
 
@@ -307,9 +311,9 @@ Registers a :ref:`LineEdit<class_LineEdit>` in the dialog. When the enter key is
 
 .. rst-class:: classref-method
 
-|void| **remove_button**\ (\ button\: :ref:`Button<class_Button>`\ )
+|void| **remove_button**\ (\ button\: :ref:`Button<class_Button>`\ ) :ref:`🔗<class_AcceptDialog_method_remove_button>`
 
-Removes the ``button`` from the dialog. Does NOT free the ``button``. The ``button`` must be a :ref:`Button<class_Button>` added with :ref:`add_button<class_AcceptDialog_method_add_button>` or :ref:`add_cancel_button<class_AcceptDialog_method_add_cancel_button>` method. After removal, pressing the ``button`` will no longer emit this dialog's :ref:`custom_action<class_AcceptDialog_signal_custom_action>` or :ref:`canceled<class_AcceptDialog_signal_canceled>` signals.
+Removes the ``button`` from the dialog. Does NOT free the ``button``. The ``button`` must be a :ref:`Button<class_Button>` added with :ref:`add_button()<class_AcceptDialog_method_add_button>` or :ref:`add_cancel_button()<class_AcceptDialog_method_add_cancel_button>` method. After removal, pressing the ``button`` will no longer emit this dialog's :ref:`custom_action<class_AcceptDialog_signal_custom_action>` or :ref:`canceled<class_AcceptDialog_signal_canceled>` signals.
 
 .. rst-class:: classref-section-separator
 
@@ -320,11 +324,35 @@ Removes the ``button`` from the dialog. Does NOT free the ``button``. The ``butt
 Theme Property Descriptions
 ---------------------------
 
+.. _class_AcceptDialog_theme_constant_buttons_min_height:
+
+.. rst-class:: classref-themeproperty
+
+:ref:`int<class_int>` **buttons_min_height** = ``0`` :ref:`🔗<class_AcceptDialog_theme_constant_buttons_min_height>`
+
+The minimum height of each button in the bottom row (such as OK/Cancel) in pixels. This can be increased to make buttons with short texts easier to click/tap.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AcceptDialog_theme_constant_buttons_min_width:
+
+.. rst-class:: classref-themeproperty
+
+:ref:`int<class_int>` **buttons_min_width** = ``0`` :ref:`🔗<class_AcceptDialog_theme_constant_buttons_min_width>`
+
+The minimum width of each button in the bottom row (such as OK/Cancel) in pixels. This can be increased to make buttons with short texts easier to click/tap.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AcceptDialog_theme_constant_buttons_separation:
 
 .. rst-class:: classref-themeproperty
 
-:ref:`int<class_int>` **buttons_separation** = ``10``
+:ref:`int<class_int>` **buttons_separation** = ``10`` :ref:`🔗<class_AcceptDialog_theme_constant_buttons_separation>`
 
 The size of the vertical space between the dialog's content and the button row.
 
@@ -336,7 +364,7 @@ The size of the vertical space between the dialog's content and the button row.
 
 .. rst-class:: classref-themeproperty
 
-:ref:`StyleBox<class_StyleBox>` **panel**
+:ref:`StyleBox<class_StyleBox>` **panel** :ref:`🔗<class_AcceptDialog_theme_style_panel>`
 
 The panel that fills the background of the window.
 

+ 8 - 8
classes/class_aescontext.rst

@@ -127,7 +127,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **Mode**:
+enum **Mode**: :ref:`🔗<enum_AESContext_Mode>`
 
 .. _class_AESContext_constant_MODE_ECB_ENCRYPT:
 
@@ -182,9 +182,9 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **finish**\ (\ )
+|void| **finish**\ (\ ) :ref:`🔗<class_AESContext_method_finish>`
 
-Close this AES context so it can be started again. See :ref:`start<class_AESContext_method_start>`.
+Close this AES context so it can be started again. See :ref:`start()<class_AESContext_method_start>`.
 
 .. rst-class:: classref-item-separator
 
@@ -194,9 +194,9 @@ Close this AES context so it can be started again. See :ref:`start<class_AESCont
 
 .. rst-class:: classref-method
 
-:ref:`PackedByteArray<class_PackedByteArray>` **get_iv_state**\ (\ )
+:ref:`PackedByteArray<class_PackedByteArray>` **get_iv_state**\ (\ ) :ref:`🔗<class_AESContext_method_get_iv_state>`
 
-Get the current IV state for this context (IV gets updated when calling :ref:`update<class_AESContext_method_update>`). You normally don't need this function.
+Get the current IV state for this context (IV gets updated when calling :ref:`update()<class_AESContext_method_update>`). You normally don't need this function.
 
 \ **Note:** This function only makes sense when the context is started with :ref:`MODE_CBC_ENCRYPT<class_AESContext_constant_MODE_CBC_ENCRYPT>` or :ref:`MODE_CBC_DECRYPT<class_AESContext_constant_MODE_CBC_DECRYPT>`.
 
@@ -208,7 +208,7 @@ Get the current IV state for this context (IV gets updated when calling :ref:`up
 
 .. rst-class:: classref-method
 
-:ref:`Error<enum_@GlobalScope_Error>` **start**\ (\ mode\: :ref:`Mode<enum_AESContext_Mode>`, key\: :ref:`PackedByteArray<class_PackedByteArray>`, iv\: :ref:`PackedByteArray<class_PackedByteArray>` = PackedByteArray()\ )
+:ref:`Error<enum_@GlobalScope_Error>` **start**\ (\ mode\: :ref:`Mode<enum_AESContext_Mode>`, key\: :ref:`PackedByteArray<class_PackedByteArray>`, iv\: :ref:`PackedByteArray<class_PackedByteArray>` = PackedByteArray()\ ) :ref:`🔗<class_AESContext_method_start>`
 
 Start the AES context in the given ``mode``. A ``key`` of either 16 or 32 bytes must always be provided, while an ``iv`` (initialization vector) of exactly 16 bytes, is only needed when ``mode`` is either :ref:`MODE_CBC_ENCRYPT<class_AESContext_constant_MODE_CBC_ENCRYPT>` or :ref:`MODE_CBC_DECRYPT<class_AESContext_constant_MODE_CBC_DECRYPT>`.
 
@@ -220,9 +220,9 @@ Start the AES context in the given ``mode``. A ``key`` of either 16 or 32 bytes
 
 .. rst-class:: classref-method
 
-:ref:`PackedByteArray<class_PackedByteArray>` **update**\ (\ src\: :ref:`PackedByteArray<class_PackedByteArray>`\ )
+:ref:`PackedByteArray<class_PackedByteArray>` **update**\ (\ src\: :ref:`PackedByteArray<class_PackedByteArray>`\ ) :ref:`🔗<class_AESContext_method_update>`
 
-Run the desired operation for this AES context. Will return a :ref:`PackedByteArray<class_PackedByteArray>` containing the result of encrypting (or decrypting) the given ``src``. See :ref:`start<class_AESContext_method_start>` for mode of operation.
+Run the desired operation for this AES context. Will return a :ref:`PackedByteArray<class_PackedByteArray>` containing the result of encrypting (or decrypting) the given ``src``. See :ref:`start()<class_AESContext_method_start>` for mode of operation.
 
 \ **Note:** The size of ``src`` must be a multiple of 16. Apply some padding if needed.
 

+ 2 - 2
classes/class_animatablebody2d.rst

@@ -48,14 +48,14 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **sync_to_physics** = ``true``
+:ref:`bool<class_bool>` **sync_to_physics** = ``true`` :ref:`🔗<class_AnimatableBody2D_property_sync_to_physics>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_sync_to_physics**\ (\ value\: :ref:`bool<class_bool>`\ )
 - :ref:`bool<class_bool>` **is_sync_to_physics_enabled**\ (\ )
 
-If ``true``, the body's movement will be synchronized to the physics frame. This is useful when animating movement via :ref:`AnimationPlayer<class_AnimationPlayer>`, for example on moving platforms. Do **not** use together with :ref:`PhysicsBody2D.move_and_collide<class_PhysicsBody2D_method_move_and_collide>`.
+If ``true``, the body's movement will be synchronized to the physics frame. This is useful when animating movement via :ref:`AnimationPlayer<class_AnimationPlayer>`, for example on moving platforms. Do **not** use together with :ref:`PhysicsBody2D.move_and_collide()<class_PhysicsBody2D_method_move_and_collide>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 5 - 5
classes/class_animatablebody3d.rst

@@ -28,11 +28,11 @@ When **AnimatableBody3D** is moved, its linear and angular velocity are estimate
 Tutorials
 ---------
 
-- `3D Physics Tests Demo <https://godotengine.org/asset-library/asset/675>`__
+- `3D Physics Tests Demo <https://godotengine.org/asset-library/asset/2747>`__
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
-- `3D Voxel Demo <https://godotengine.org/asset-library/asset/676>`__
+- `3D Voxel Demo <https://godotengine.org/asset-library/asset/2755>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -59,14 +59,14 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **sync_to_physics** = ``true``
+:ref:`bool<class_bool>` **sync_to_physics** = ``true`` :ref:`🔗<class_AnimatableBody3D_property_sync_to_physics>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_sync_to_physics**\ (\ value\: :ref:`bool<class_bool>`\ )
 - :ref:`bool<class_bool>` **is_sync_to_physics_enabled**\ (\ )
 
-If ``true``, the body's movement will be synchronized to the physics frame. This is useful when animating movement via :ref:`AnimationPlayer<class_AnimationPlayer>`, for example on moving platforms. Do **not** use together with :ref:`PhysicsBody3D.move_and_collide<class_PhysicsBody3D_method_move_and_collide>`.
+If ``true``, the body's movement will be synchronized to the physics frame. This is useful when animating movement via :ref:`AnimationPlayer<class_AnimationPlayer>`, for example on moving platforms. Do **not** use together with :ref:`PhysicsBody3D.move_and_collide()<class_PhysicsBody3D_method_move_and_collide>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 32 - 35
classes/class_animatedsprite2d.rst

@@ -28,7 +28,7 @@ Tutorials
 
 - :doc:`2D Sprite animation <../tutorials/2d/2d_sprite_animation>`
 
-- `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
+- `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/2712>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -97,7 +97,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**animation_changed**\ (\ )
+**animation_changed**\ (\ ) :ref:`🔗<class_AnimatedSprite2D_signal_animation_changed>`
 
 Emitted when :ref:`animation<class_AnimatedSprite2D_property_animation>` changes.
 
@@ -109,7 +109,7 @@ Emitted when :ref:`animation<class_AnimatedSprite2D_property_animation>` changes
 
 .. rst-class:: classref-signal
 
-**animation_finished**\ (\ )
+**animation_finished**\ (\ ) :ref:`🔗<class_AnimatedSprite2D_signal_animation_finished>`
 
 Emitted when the animation reaches the end, or the start if it is played in reverse. When the animation finishes, it pauses the playback.
 
@@ -123,7 +123,7 @@ Emitted when the animation reaches the end, or the start if it is played in reve
 
 .. rst-class:: classref-signal
 
-**animation_looped**\ (\ )
+**animation_looped**\ (\ ) :ref:`🔗<class_AnimatedSprite2D_signal_animation_looped>`
 
 Emitted when the animation loops.
 
@@ -135,7 +135,7 @@ Emitted when the animation loops.
 
 .. rst-class:: classref-signal
 
-**frame_changed**\ (\ )
+**frame_changed**\ (\ ) :ref:`🔗<class_AnimatedSprite2D_signal_frame_changed>`
 
 Emitted when :ref:`frame<class_AnimatedSprite2D_property_frame>` changes.
 
@@ -147,7 +147,7 @@ Emitted when :ref:`frame<class_AnimatedSprite2D_property_frame>` changes.
 
 .. rst-class:: classref-signal
 
-**sprite_frames_changed**\ (\ )
+**sprite_frames_changed**\ (\ ) :ref:`🔗<class_AnimatedSprite2D_signal_sprite_frames_changed>`
 
 Emitted when :ref:`sprite_frames<class_AnimatedSprite2D_property_sprite_frames>` changes.
 
@@ -164,7 +164,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **animation** = ``&"default"``
+:ref:`StringName<class_StringName>` **animation** = ``&"default"`` :ref:`🔗<class_AnimatedSprite2D_property_animation>`
 
 .. rst-class:: classref-property-setget
 
@@ -181,7 +181,7 @@ The current animation from the :ref:`sprite_frames<class_AnimatedSprite2D_proper
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **autoplay** = ``""``
+:ref:`String<class_String>` **autoplay** = ``""`` :ref:`🔗<class_AnimatedSprite2D_property_autoplay>`
 
 .. rst-class:: classref-property-setget
 
@@ -198,7 +198,7 @@ The key of the animation to play when the scene loads.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **centered** = ``true``
+:ref:`bool<class_bool>` **centered** = ``true`` :ref:`🔗<class_AnimatedSprite2D_property_centered>`
 
 .. rst-class:: classref-property-setget
 
@@ -217,7 +217,7 @@ If ``true``, texture will be centered.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **flip_h** = ``false``
+:ref:`bool<class_bool>` **flip_h** = ``false`` :ref:`🔗<class_AnimatedSprite2D_property_flip_h>`
 
 .. rst-class:: classref-property-setget
 
@@ -234,7 +234,7 @@ If ``true``, texture is flipped horizontally.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **flip_v** = ``false``
+:ref:`bool<class_bool>` **flip_v** = ``false`` :ref:`🔗<class_AnimatedSprite2D_property_flip_v>`
 
 .. rst-class:: classref-property-setget
 
@@ -251,14 +251,14 @@ If ``true``, texture is flipped vertically.
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **frame** = ``0``
+:ref:`int<class_int>` **frame** = ``0`` :ref:`🔗<class_AnimatedSprite2D_property_frame>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_frame**\ (\ value\: :ref:`int<class_int>`\ )
 - :ref:`int<class_int>` **get_frame**\ (\ )
 
-The displayed animation frame's index. Setting this property also resets :ref:`frame_progress<class_AnimatedSprite2D_property_frame_progress>`. If this is not desired, use :ref:`set_frame_and_progress<class_AnimatedSprite2D_method_set_frame_and_progress>`.
+The displayed animation frame's index. Setting this property also resets :ref:`frame_progress<class_AnimatedSprite2D_property_frame_progress>`. If this is not desired, use :ref:`set_frame_and_progress()<class_AnimatedSprite2D_method_set_frame_and_progress>`.
 
 .. rst-class:: classref-item-separator
 
@@ -268,7 +268,7 @@ The displayed animation frame's index. Setting this property also resets :ref:`f
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **frame_progress** = ``0.0``
+:ref:`float<class_float>` **frame_progress** = ``0.0`` :ref:`🔗<class_AnimatedSprite2D_property_frame_progress>`
 
 .. rst-class:: classref-property-setget
 
@@ -285,7 +285,7 @@ The progress value between ``0.0`` and ``1.0`` until the current frame transitio
 
 .. rst-class:: classref-property
 
-:ref:`Vector2<class_Vector2>` **offset** = ``Vector2(0, 0)``
+:ref:`Vector2<class_Vector2>` **offset** = ``Vector2(0, 0)`` :ref:`🔗<class_AnimatedSprite2D_property_offset>`
 
 .. rst-class:: classref-property-setget
 
@@ -302,7 +302,7 @@ The texture's drawing offset.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **speed_scale** = ``1.0``
+:ref:`float<class_float>` **speed_scale** = ``1.0`` :ref:`🔗<class_AnimatedSprite2D_property_speed_scale>`
 
 .. rst-class:: classref-property-setget
 
@@ -321,7 +321,7 @@ If set to a negative value, the animation is played in reverse. If set to ``0``,
 
 .. rst-class:: classref-property
 
-:ref:`SpriteFrames<class_SpriteFrames>` **sprite_frames**
+:ref:`SpriteFrames<class_SpriteFrames>` **sprite_frames** :ref:`🔗<class_AnimatedSprite2D_property_sprite_frames>`
 
 .. rst-class:: classref-property-setget
 
@@ -343,9 +343,9 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_playing_speed**\ (\ ) |const|
+:ref:`float<class_float>` **get_playing_speed**\ (\ ) |const| :ref:`🔗<class_AnimatedSprite2D_method_get_playing_speed>`
 
-Returns the actual playing speed of current animation or ``0`` if not playing. This speed is the :ref:`speed_scale<class_AnimatedSprite2D_property_speed_scale>` property multiplied by ``custom_speed`` argument specified when calling the :ref:`play<class_AnimatedSprite2D_method_play>` method.
+Returns the actual playing speed of current animation or ``0`` if not playing. This speed is the :ref:`speed_scale<class_AnimatedSprite2D_property_speed_scale>` property multiplied by ``custom_speed`` argument specified when calling the :ref:`play()<class_AnimatedSprite2D_method_play>` method.
 
 Returns a negative value if the current animation is playing backwards.
 
@@ -357,7 +357,7 @@ Returns a negative value if the current animation is playing backwards.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_playing**\ (\ ) |const|
+:ref:`bool<class_bool>` **is_playing**\ (\ ) |const| :ref:`🔗<class_AnimatedSprite2D_method_is_playing>`
 
 Returns ``true`` if an animation is currently playing (even if :ref:`speed_scale<class_AnimatedSprite2D_property_speed_scale>` and/or ``custom_speed`` are ``0``).
 
@@ -369,11 +369,11 @@ Returns ``true`` if an animation is currently playing (even if :ref:`speed_scale
 
 .. rst-class:: classref-method
 
-|void| **pause**\ (\ )
+|void| **pause**\ (\ ) :ref:`🔗<class_AnimatedSprite2D_method_pause>`
 
-Pauses the currently playing animation. The :ref:`frame<class_AnimatedSprite2D_property_frame>` and :ref:`frame_progress<class_AnimatedSprite2D_property_frame_progress>` will be kept and calling :ref:`play<class_AnimatedSprite2D_method_play>` or :ref:`play_backwards<class_AnimatedSprite2D_method_play_backwards>` without arguments will resume the animation from the current playback position.
+Pauses the currently playing animation. The :ref:`frame<class_AnimatedSprite2D_property_frame>` and :ref:`frame_progress<class_AnimatedSprite2D_property_frame_progress>` will be kept and calling :ref:`play()<class_AnimatedSprite2D_method_play>` or :ref:`play_backwards()<class_AnimatedSprite2D_method_play_backwards>` without arguments will resume the animation from the current playback position.
 
-See also :ref:`stop<class_AnimatedSprite2D_method_stop>`.
+See also :ref:`stop()<class_AnimatedSprite2D_method_stop>`.
 
 .. rst-class:: classref-item-separator
 
@@ -383,9 +383,9 @@ See also :ref:`stop<class_AnimatedSprite2D_method_stop>`.
 
 .. rst-class:: classref-method
 
-|void| **play**\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ )
+|void| **play**\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AnimatedSprite2D_method_play>`
 
-Plays the animation with key ``name``. If ``custom_speed`` is negative and ``from_end`` is ``true``, the animation will play backwards (which is equivalent to calling :ref:`play_backwards<class_AnimatedSprite2D_method_play_backwards>`).
+Plays the animation with key ``name``. If ``custom_speed`` is negative and ``from_end`` is ``true``, the animation will play backwards (which is equivalent to calling :ref:`play_backwards()<class_AnimatedSprite2D_method_play_backwards>`).
 
 If this method is called with that same animation ``name``, or with no ``name`` parameter, the assigned animation will resume playing if it was paused.
 
@@ -397,11 +397,11 @@ If this method is called with that same animation ``name``, or with no ``name``
 
 .. rst-class:: classref-method
 
-|void| **play_backwards**\ (\ name\: :ref:`StringName<class_StringName>` = &""\ )
+|void| **play_backwards**\ (\ name\: :ref:`StringName<class_StringName>` = &""\ ) :ref:`🔗<class_AnimatedSprite2D_method_play_backwards>`
 
 Plays the animation with key ``name`` in reverse.
 
-This method is a shorthand for :ref:`play<class_AnimatedSprite2D_method_play>` with ``custom_speed = -1.0`` and ``from_end = true``, so see its description for more information.
+This method is a shorthand for :ref:`play()<class_AnimatedSprite2D_method_play>` with ``custom_speed = -1.0`` and ``from_end = true``, so see its description for more information.
 
 .. rst-class:: classref-item-separator
 
@@ -411,20 +411,17 @@ This method is a shorthand for :ref:`play<class_AnimatedSprite2D_method_play>` w
 
 .. rst-class:: classref-method
 
-|void| **set_frame_and_progress**\ (\ frame\: :ref:`int<class_int>`, progress\: :ref:`float<class_float>`\ )
+|void| **set_frame_and_progress**\ (\ frame\: :ref:`int<class_int>`, progress\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AnimatedSprite2D_method_set_frame_and_progress>`
 
-The setter of :ref:`frame<class_AnimatedSprite2D_property_frame>` resets the :ref:`frame_progress<class_AnimatedSprite2D_property_frame_progress>` to ``0.0`` implicitly, but this method avoids that.
+Sets :ref:`frame<class_AnimatedSprite2D_property_frame>` the :ref:`frame_progress<class_AnimatedSprite2D_property_frame_progress>` to the given values. Unlike setting :ref:`frame<class_AnimatedSprite2D_property_frame>`, this method does not reset the :ref:`frame_progress<class_AnimatedSprite2D_property_frame_progress>` to ``0.0`` implicitly.
 
-This is useful when you want to carry over the current :ref:`frame_progress<class_AnimatedSprite2D_property_frame_progress>` to another :ref:`frame<class_AnimatedSprite2D_property_frame>`.
-
-\ **Example:**\ 
+\ **Example:** Change the animation while keeping the same :ref:`frame<class_AnimatedSprite2D_property_frame>` and :ref:`frame_progress<class_AnimatedSprite2D_property_frame_progress>`:
 
 
 .. tabs::
 
  .. code-tab:: gdscript
 
-    # Change the animation with keeping the frame index and progress.
     var current_frame = animated_sprite.get_frame()
     var current_progress = animated_sprite.get_frame_progress()
     animated_sprite.play("walk_another_skin")
@@ -440,9 +437,9 @@ This is useful when you want to carry over the current :ref:`frame_progress<clas
 
 .. rst-class:: classref-method
 
-|void| **stop**\ (\ )
+|void| **stop**\ (\ ) :ref:`🔗<class_AnimatedSprite2D_method_stop>`
 
-Stops the currently playing animation. The animation position is reset to ``0`` and the ``custom_speed`` is reset to ``1.0``. See also :ref:`pause<class_AnimatedSprite2D_method_pause>`.
+Stops the currently playing animation. The animation position is reset to ``0`` and the ``custom_speed`` is reset to ``1.0``. See also :ref:`pause()<class_AnimatedSprite2D_method_pause>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 27 - 30
classes/class_animatedsprite3d.rst

@@ -87,7 +87,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**animation_changed**\ (\ )
+**animation_changed**\ (\ ) :ref:`🔗<class_AnimatedSprite3D_signal_animation_changed>`
 
 Emitted when :ref:`animation<class_AnimatedSprite3D_property_animation>` changes.
 
@@ -99,7 +99,7 @@ Emitted when :ref:`animation<class_AnimatedSprite3D_property_animation>` changes
 
 .. rst-class:: classref-signal
 
-**animation_finished**\ (\ )
+**animation_finished**\ (\ ) :ref:`🔗<class_AnimatedSprite3D_signal_animation_finished>`
 
 Emitted when the animation reaches the end, or the start if it is played in reverse. When the animation finishes, it pauses the playback.
 
@@ -113,7 +113,7 @@ Emitted when the animation reaches the end, or the start if it is played in reve
 
 .. rst-class:: classref-signal
 
-**animation_looped**\ (\ )
+**animation_looped**\ (\ ) :ref:`🔗<class_AnimatedSprite3D_signal_animation_looped>`
 
 Emitted when the animation loops.
 
@@ -125,7 +125,7 @@ Emitted when the animation loops.
 
 .. rst-class:: classref-signal
 
-**frame_changed**\ (\ )
+**frame_changed**\ (\ ) :ref:`🔗<class_AnimatedSprite3D_signal_frame_changed>`
 
 Emitted when :ref:`frame<class_AnimatedSprite3D_property_frame>` changes.
 
@@ -137,7 +137,7 @@ Emitted when :ref:`frame<class_AnimatedSprite3D_property_frame>` changes.
 
 .. rst-class:: classref-signal
 
-**sprite_frames_changed**\ (\ )
+**sprite_frames_changed**\ (\ ) :ref:`🔗<class_AnimatedSprite3D_signal_sprite_frames_changed>`
 
 Emitted when :ref:`sprite_frames<class_AnimatedSprite3D_property_sprite_frames>` changes.
 
@@ -154,7 +154,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **animation** = ``&"default"``
+:ref:`StringName<class_StringName>` **animation** = ``&"default"`` :ref:`🔗<class_AnimatedSprite3D_property_animation>`
 
 .. rst-class:: classref-property-setget
 
@@ -171,7 +171,7 @@ The current animation from the :ref:`sprite_frames<class_AnimatedSprite3D_proper
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **autoplay** = ``""``
+:ref:`String<class_String>` **autoplay** = ``""`` :ref:`🔗<class_AnimatedSprite3D_property_autoplay>`
 
 .. rst-class:: classref-property-setget
 
@@ -188,14 +188,14 @@ The key of the animation to play when the scene loads.
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **frame** = ``0``
+:ref:`int<class_int>` **frame** = ``0`` :ref:`🔗<class_AnimatedSprite3D_property_frame>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_frame**\ (\ value\: :ref:`int<class_int>`\ )
 - :ref:`int<class_int>` **get_frame**\ (\ )
 
-The displayed animation frame's index. Setting this property also resets :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>`. If this is not desired, use :ref:`set_frame_and_progress<class_AnimatedSprite3D_method_set_frame_and_progress>`.
+The displayed animation frame's index. Setting this property also resets :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>`. If this is not desired, use :ref:`set_frame_and_progress()<class_AnimatedSprite3D_method_set_frame_and_progress>`.
 
 .. rst-class:: classref-item-separator
 
@@ -205,7 +205,7 @@ The displayed animation frame's index. Setting this property also resets :ref:`f
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **frame_progress** = ``0.0``
+:ref:`float<class_float>` **frame_progress** = ``0.0`` :ref:`🔗<class_AnimatedSprite3D_property_frame_progress>`
 
 .. rst-class:: classref-property-setget
 
@@ -222,7 +222,7 @@ The progress value between ``0.0`` and ``1.0`` until the current frame transitio
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **speed_scale** = ``1.0``
+:ref:`float<class_float>` **speed_scale** = ``1.0`` :ref:`🔗<class_AnimatedSprite3D_property_speed_scale>`
 
 .. rst-class:: classref-property-setget
 
@@ -241,7 +241,7 @@ If set to a negative value, the animation is played in reverse. If set to ``0``,
 
 .. rst-class:: classref-property
 
-:ref:`SpriteFrames<class_SpriteFrames>` **sprite_frames**
+:ref:`SpriteFrames<class_SpriteFrames>` **sprite_frames** :ref:`🔗<class_AnimatedSprite3D_property_sprite_frames>`
 
 .. rst-class:: classref-property-setget
 
@@ -263,9 +263,9 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_playing_speed**\ (\ ) |const|
+:ref:`float<class_float>` **get_playing_speed**\ (\ ) |const| :ref:`🔗<class_AnimatedSprite3D_method_get_playing_speed>`
 
-Returns the actual playing speed of current animation or ``0`` if not playing. This speed is the :ref:`speed_scale<class_AnimatedSprite3D_property_speed_scale>` property multiplied by ``custom_speed`` argument specified when calling the :ref:`play<class_AnimatedSprite3D_method_play>` method.
+Returns the actual playing speed of current animation or ``0`` if not playing. This speed is the :ref:`speed_scale<class_AnimatedSprite3D_property_speed_scale>` property multiplied by ``custom_speed`` argument specified when calling the :ref:`play()<class_AnimatedSprite3D_method_play>` method.
 
 Returns a negative value if the current animation is playing backwards.
 
@@ -277,7 +277,7 @@ Returns a negative value if the current animation is playing backwards.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_playing**\ (\ ) |const|
+:ref:`bool<class_bool>` **is_playing**\ (\ ) |const| :ref:`🔗<class_AnimatedSprite3D_method_is_playing>`
 
 Returns ``true`` if an animation is currently playing (even if :ref:`speed_scale<class_AnimatedSprite3D_property_speed_scale>` and/or ``custom_speed`` are ``0``).
 
@@ -289,11 +289,11 @@ Returns ``true`` if an animation is currently playing (even if :ref:`speed_scale
 
 .. rst-class:: classref-method
 
-|void| **pause**\ (\ )
+|void| **pause**\ (\ ) :ref:`🔗<class_AnimatedSprite3D_method_pause>`
 
-Pauses the currently playing animation. The :ref:`frame<class_AnimatedSprite3D_property_frame>` and :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` will be kept and calling :ref:`play<class_AnimatedSprite3D_method_play>` or :ref:`play_backwards<class_AnimatedSprite3D_method_play_backwards>` without arguments will resume the animation from the current playback position.
+Pauses the currently playing animation. The :ref:`frame<class_AnimatedSprite3D_property_frame>` and :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` will be kept and calling :ref:`play()<class_AnimatedSprite3D_method_play>` or :ref:`play_backwards()<class_AnimatedSprite3D_method_play_backwards>` without arguments will resume the animation from the current playback position.
 
-See also :ref:`stop<class_AnimatedSprite3D_method_stop>`.
+See also :ref:`stop()<class_AnimatedSprite3D_method_stop>`.
 
 .. rst-class:: classref-item-separator
 
@@ -303,9 +303,9 @@ See also :ref:`stop<class_AnimatedSprite3D_method_stop>`.
 
 .. rst-class:: classref-method
 
-|void| **play**\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ )
+|void| **play**\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AnimatedSprite3D_method_play>`
 
-Plays the animation with key ``name``. If ``custom_speed`` is negative and ``from_end`` is ``true``, the animation will play backwards (which is equivalent to calling :ref:`play_backwards<class_AnimatedSprite3D_method_play_backwards>`).
+Plays the animation with key ``name``. If ``custom_speed`` is negative and ``from_end`` is ``true``, the animation will play backwards (which is equivalent to calling :ref:`play_backwards()<class_AnimatedSprite3D_method_play_backwards>`).
 
 If this method is called with that same animation ``name``, or with no ``name`` parameter, the assigned animation will resume playing if it was paused.
 
@@ -317,11 +317,11 @@ If this method is called with that same animation ``name``, or with no ``name``
 
 .. rst-class:: classref-method
 
-|void| **play_backwards**\ (\ name\: :ref:`StringName<class_StringName>` = &""\ )
+|void| **play_backwards**\ (\ name\: :ref:`StringName<class_StringName>` = &""\ ) :ref:`🔗<class_AnimatedSprite3D_method_play_backwards>`
 
 Plays the animation with key ``name`` in reverse.
 
-This method is a shorthand for :ref:`play<class_AnimatedSprite3D_method_play>` with ``custom_speed = -1.0`` and ``from_end = true``, so see its description for more information.
+This method is a shorthand for :ref:`play()<class_AnimatedSprite3D_method_play>` with ``custom_speed = -1.0`` and ``from_end = true``, so see its description for more information.
 
 .. rst-class:: classref-item-separator
 
@@ -331,20 +331,17 @@ This method is a shorthand for :ref:`play<class_AnimatedSprite3D_method_play>` w
 
 .. rst-class:: classref-method
 
-|void| **set_frame_and_progress**\ (\ frame\: :ref:`int<class_int>`, progress\: :ref:`float<class_float>`\ )
+|void| **set_frame_and_progress**\ (\ frame\: :ref:`int<class_int>`, progress\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AnimatedSprite3D_method_set_frame_and_progress>`
 
-The setter of :ref:`frame<class_AnimatedSprite3D_property_frame>` resets the :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` to ``0.0`` implicitly, but this method avoids that.
+Sets :ref:`frame<class_AnimatedSprite3D_property_frame>` the :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` to the given values. Unlike setting :ref:`frame<class_AnimatedSprite3D_property_frame>`, this method does not reset the :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` to ``0.0`` implicitly.
 
-This is useful when you want to carry over the current :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` to another :ref:`frame<class_AnimatedSprite3D_property_frame>`.
-
-\ **Example:**\ 
+\ **Example:** Change the animation while keeping the same :ref:`frame<class_AnimatedSprite3D_property_frame>` and :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>`:
 
 
 .. tabs::
 
  .. code-tab:: gdscript
 
-    # Change the animation with keeping the frame index and progress.
     var current_frame = animated_sprite.get_frame()
     var current_progress = animated_sprite.get_frame_progress()
     animated_sprite.play("walk_another_skin")
@@ -360,9 +357,9 @@ This is useful when you want to carry over the current :ref:`frame_progress<clas
 
 .. rst-class:: classref-method
 
-|void| **stop**\ (\ )
+|void| **stop**\ (\ ) :ref:`🔗<class_AnimatedSprite3D_method_stop>`
 
-Stops the currently playing animation. The animation position is reset to ``0`` and the ``custom_speed`` is reset to ``1.0``. See also :ref:`pause<class_AnimatedSprite3D_method_pause>`.
+Stops the currently playing animation. The animation position is reset to ``0`` and the ``custom_speed`` is reset to ``1.0``. See also :ref:`pause()<class_AnimatedSprite3D_method_pause>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 12 - 12
classes/class_animatedtexture.rst

@@ -23,7 +23,7 @@ Description
 
 **AnimatedTexture** is a resource format for frame-based animations, where multiple textures can be chained automatically with a predefined delay for each frame. Unlike :ref:`AnimationPlayer<class_AnimationPlayer>` or :ref:`AnimatedSprite2D<class_AnimatedSprite2D>`, it isn't a :ref:`Node<class_Node>`, but has the advantage of being usable anywhere a :ref:`Texture2D<class_Texture2D>` resource can be used, e.g. in a :ref:`TileSet<class_TileSet>`.
 
-The playback of the animation is controlled by the :ref:`speed_scale<class_AnimatedTexture_property_speed_scale>` property, as well as each frame's duration (see :ref:`set_frame_duration<class_AnimatedTexture_method_set_frame_duration>`). The animation loops, i.e. it will restart at frame 0 automatically after playing the last frame.
+The playback of the animation is controlled by the :ref:`speed_scale<class_AnimatedTexture_property_speed_scale>` property, as well as each frame's duration (see :ref:`set_frame_duration()<class_AnimatedTexture_method_set_frame_duration>`). The animation loops, i.e. it will restart at frame 0 automatically after playing the last frame.
 
 \ **AnimatedTexture** currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
 
@@ -84,7 +84,7 @@ Constants
 
 .. rst-class:: classref-constant
 
-**MAX_FRAMES** = ``256``
+**MAX_FRAMES** = ``256`` :ref:`🔗<class_AnimatedTexture_constant_MAX_FRAMES>`
 
 The maximum number of frames supported by **AnimatedTexture**. If you need more frames in your animation, use :ref:`AnimationPlayer<class_AnimationPlayer>` or :ref:`AnimatedSprite2D<class_AnimatedSprite2D>`.
 
@@ -101,7 +101,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **current_frame**
+:ref:`int<class_int>` **current_frame** :ref:`🔗<class_AnimatedTexture_property_current_frame>`
 
 .. rst-class:: classref-property-setget
 
@@ -118,14 +118,14 @@ Sets the currently visible frame of the texture. Setting this frame while playin
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **frames** = ``1``
+:ref:`int<class_int>` **frames** = ``1`` :ref:`🔗<class_AnimatedTexture_property_frames>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_frames**\ (\ value\: :ref:`int<class_int>`\ )
 - :ref:`int<class_int>` **get_frames**\ (\ )
 
-Number of frames to use in the animation. While you can create the frames independently with :ref:`set_frame_texture<class_AnimatedTexture_method_set_frame_texture>`, you need to set this value for the animation to take new frames into account. The maximum number of frames is :ref:`MAX_FRAMES<class_AnimatedTexture_constant_MAX_FRAMES>`.
+Number of frames to use in the animation. While you can create the frames independently with :ref:`set_frame_texture()<class_AnimatedTexture_method_set_frame_texture>`, you need to set this value for the animation to take new frames into account. The maximum number of frames is :ref:`MAX_FRAMES<class_AnimatedTexture_constant_MAX_FRAMES>`.
 
 .. rst-class:: classref-item-separator
 
@@ -135,7 +135,7 @@ Number of frames to use in the animation. While you can create the frames indepe
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **one_shot** = ``false``
+:ref:`bool<class_bool>` **one_shot** = ``false`` :ref:`🔗<class_AnimatedTexture_property_one_shot>`
 
 .. rst-class:: classref-property-setget
 
@@ -152,7 +152,7 @@ If ``true``, the animation will only play once and will not loop back to the fir
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **pause** = ``false``
+:ref:`bool<class_bool>` **pause** = ``false`` :ref:`🔗<class_AnimatedTexture_property_pause>`
 
 .. rst-class:: classref-property-setget
 
@@ -169,7 +169,7 @@ If ``true``, the animation will pause where it currently is (i.e. at :ref:`curre
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **speed_scale** = ``1.0``
+:ref:`float<class_float>` **speed_scale** = ``1.0`` :ref:`🔗<class_AnimatedTexture_property_speed_scale>`
 
 .. rst-class:: classref-property-setget
 
@@ -191,7 +191,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_frame_duration**\ (\ frame\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_frame_duration**\ (\ frame\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimatedTexture_method_get_frame_duration>`
 
 Returns the given ``frame``'s duration, in seconds.
 
@@ -203,7 +203,7 @@ Returns the given ``frame``'s duration, in seconds.
 
 .. rst-class:: classref-method
 
-:ref:`Texture2D<class_Texture2D>` **get_frame_texture**\ (\ frame\: :ref:`int<class_int>`\ ) |const|
+:ref:`Texture2D<class_Texture2D>` **get_frame_texture**\ (\ frame\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimatedTexture_method_get_frame_texture>`
 
 Returns the given frame's :ref:`Texture2D<class_Texture2D>`.
 
@@ -215,7 +215,7 @@ Returns the given frame's :ref:`Texture2D<class_Texture2D>`.
 
 .. rst-class:: classref-method
 
-|void| **set_frame_duration**\ (\ frame\: :ref:`int<class_int>`, duration\: :ref:`float<class_float>`\ )
+|void| **set_frame_duration**\ (\ frame\: :ref:`int<class_int>`, duration\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AnimatedTexture_method_set_frame_duration>`
 
 Sets the duration of any given ``frame``. The final duration is affected by the :ref:`speed_scale<class_AnimatedTexture_property_speed_scale>`. If set to ``0``, the frame is skipped during playback.
 
@@ -227,7 +227,7 @@ Sets the duration of any given ``frame``. The final duration is affected by the
 
 .. rst-class:: classref-method
 
-|void| **set_frame_texture**\ (\ frame\: :ref:`int<class_int>`, texture\: :ref:`Texture2D<class_Texture2D>`\ )
+|void| **set_frame_texture**\ (\ frame\: :ref:`int<class_int>`, texture\: :ref:`Texture2D<class_Texture2D>`\ ) :ref:`🔗<class_AnimatedTexture_method_set_frame_texture>`
 
 Assigns a :ref:`Texture2D<class_Texture2D>` to the given frame. Frame IDs start at 0, so the first frame has ID 0, and the last frame of the animation has ID :ref:`frames<class_AnimatedTexture_property_frames>` - 1.
 

+ 269 - 91
classes/class_animation.rst

@@ -67,13 +67,15 @@ Properties
 .. table::
    :widths: auto
 
-   +------------------------------------------+------------------------------------------------------+---------+
-   | :ref:`float<class_float>`                | :ref:`length<class_Animation_property_length>`       | ``1.0`` |
-   +------------------------------------------+------------------------------------------------------+---------+
-   | :ref:`LoopMode<enum_Animation_LoopMode>` | :ref:`loop_mode<class_Animation_property_loop_mode>` | ``0``   |
-   +------------------------------------------+------------------------------------------------------+---------+
-   | :ref:`float<class_float>`                | :ref:`step<class_Animation_property_step>`           | ``0.1`` |
-   +------------------------------------------+------------------------------------------------------+---------+
+   +------------------------------------------+--------------------------------------------------------------------+---------------+
+   | :ref:`bool<class_bool>`                  | :ref:`capture_included<class_Animation_property_capture_included>` | ``false``     |
+   +------------------------------------------+--------------------------------------------------------------------+---------------+
+   | :ref:`float<class_float>`                | :ref:`length<class_Animation_property_length>`                     | ``1.0``       |
+   +------------------------------------------+--------------------------------------------------------------------+---------------+
+   | :ref:`LoopMode<enum_Animation_LoopMode>` | :ref:`loop_mode<class_Animation_property_loop_mode>`               | ``0``         |
+   +------------------------------------------+--------------------------------------------------------------------+---------------+
+   | :ref:`float<class_float>`                | :ref:`step<class_Animation_property_step>`                         | ``0.0333333`` |
+   +------------------------------------------+--------------------------------------------------------------------+---------------+
 
 .. rst-class:: classref-reftable-group
 
@@ -83,6 +85,8 @@ Methods
 .. table::
    :widths: auto
 
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                     | :ref:`add_marker<class_Animation_method_add_marker>`\ (\ name\: :ref:`StringName<class_StringName>`, time\: :ref:`float<class_float>`\ )                                                                                                                                                                            |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                                      | :ref:`add_track<class_Animation_method_add_track>`\ (\ type\: :ref:`TrackType<enum_Animation_TrackType>`, at_position\: :ref:`int<class_int>` = -1\ )                                                                                                                                                               |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -138,16 +142,34 @@ Methods
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                                      | :ref:`find_track<class_Animation_method_find_track>`\ (\ path\: :ref:`NodePath<class_NodePath>`, type\: :ref:`TrackType<enum_Animation_TrackType>`\ ) |const|                                                                                                                                                       |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`StringName<class_StringName>`                        | :ref:`get_marker_at_time<class_Animation_method_get_marker_at_time>`\ (\ time\: :ref:`float<class_float>`\ ) |const|                                                                                                                                                                                                |
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Color<class_Color>`                                  | :ref:`get_marker_color<class_Animation_method_get_marker_color>`\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                          |
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PackedStringArray<class_PackedStringArray>`          | :ref:`get_marker_names<class_Animation_method_get_marker_names>`\ (\ ) |const|                                                                                                                                                                                                                                      |
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                  | :ref:`get_marker_time<class_Animation_method_get_marker_time>`\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                            |
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`StringName<class_StringName>`                        | :ref:`get_next_marker<class_Animation_method_get_next_marker>`\ (\ time\: :ref:`float<class_float>`\ ) |const|                                                                                                                                                                                                      |
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`StringName<class_StringName>`                        | :ref:`get_prev_marker<class_Animation_method_get_prev_marker>`\ (\ time\: :ref:`float<class_float>`\ ) |const|                                                                                                                                                                                                      |
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                                      | :ref:`get_track_count<class_Animation_method_get_track_count>`\ (\ ) |const|                                                                                                                                                                                                                                        |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                    | :ref:`has_marker<class_Animation_method_has_marker>`\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                                      |
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`StringName<class_StringName>`                        | :ref:`method_track_get_name<class_Animation_method_method_track_get_name>`\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|                                                                                                                                                        |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Array<class_Array>`                                  | :ref:`method_track_get_params<class_Animation_method_method_track_get_params>`\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|                                                                                                                                                    |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                     | :ref:`optimize<class_Animation_method_optimize>`\ (\ allowed_velocity_err\: :ref:`float<class_float>` = 0.01, allowed_angular_err\: :ref:`float<class_float>` = 0.01, precision\: :ref:`int<class_int>` = 3\ )                                                                                                      |
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                                      | :ref:`position_track_insert_key<class_Animation_method_position_track_insert_key>`\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, position\: :ref:`Vector3<class_Vector3>`\ )                                                                                                             |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Vector3<class_Vector3>`                              | :ref:`position_track_interpolate<class_Animation_method_position_track_interpolate>`\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const|                                                                                             |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                     | :ref:`remove_marker<class_Animation_method_remove_marker>`\ (\ name\: :ref:`StringName<class_StringName>`\ )                                                                                                                                                                                                        |
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                     | :ref:`remove_track<class_Animation_method_remove_track>`\ (\ track_idx\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                   |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                                      | :ref:`rotation_track_insert_key<class_Animation_method_rotation_track_insert_key>`\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, rotation\: :ref:`Quaternion<class_Quaternion>`\ )                                                                                                       |
@@ -158,7 +180,9 @@ Methods
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Vector3<class_Vector3>`                              | :ref:`scale_track_interpolate<class_Animation_method_scale_track_interpolate>`\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const|                                                                                                   |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`int<class_int>`                                      | :ref:`track_find_key<class_Animation_method_track_find_key>`\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, find_mode\: :ref:`FindMode<enum_Animation_FindMode>` = 0, limit\: :ref:`bool<class_bool>` = false\ ) |const|                                                                  |
+   | |void|                                                     | :ref:`set_marker_color<class_Animation_method_set_marker_color>`\ (\ name\: :ref:`StringName<class_StringName>`, color\: :ref:`Color<class_Color>`\ )                                                                                                                                                               |
+   +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                                      | :ref:`track_find_key<class_Animation_method_track_find_key>`\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, find_mode\: :ref:`FindMode<enum_Animation_FindMode>` = 0, limit\: :ref:`bool<class_bool>` = false, backward\: :ref:`bool<class_bool>` = false\ ) |const|                      |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                    | :ref:`track_get_interpolation_loop_wrap<class_Animation_method_track_get_interpolation_loop_wrap>`\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|                                                                                                                                                                 |
    +------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -232,7 +256,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **TrackType**:
+enum **TrackType**: :ref:`🔗<enum_Animation_TrackType>`
 
 .. _class_Animation_constant_TYPE_VALUE:
 
@@ -314,7 +338,7 @@ Animation tracks play animations in other :ref:`AnimationPlayer<class_AnimationP
 
 .. rst-class:: classref-enumeration
 
-enum **InterpolationType**:
+enum **InterpolationType**: :ref:`🔗<enum_Animation_InterpolationType>`
 
 .. _class_Animation_constant_INTERPOLATION_NEAREST:
 
@@ -368,7 +392,7 @@ Cubic interpolation with shortest path rotation.
 
 .. rst-class:: classref-enumeration
 
-enum **UpdateMode**:
+enum **UpdateMode**: :ref:`🔗<enum_Animation_UpdateMode>`
 
 .. _class_Animation_constant_UPDATE_CONTINUOUS:
 
@@ -392,7 +416,7 @@ Update at the keyframes.
 
 :ref:`UpdateMode<enum_Animation_UpdateMode>` **UPDATE_CAPTURE** = ``2``
 
-Same as :ref:`UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>` but works as a flag to capture the value of the current object and perform interpolation in some methods. See also :ref:`AnimationMixer.capture<class_AnimationMixer_method_capture>` and :ref:`AnimationPlayer.play_with_capture<class_AnimationPlayer_method_play_with_capture>`.
+Same as :ref:`UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>` but works as a flag to capture the value of the current object and perform interpolation in some methods. See also :ref:`AnimationMixer.capture()<class_AnimationMixer_method_capture>`, :ref:`AnimationPlayer.playback_auto_capture<class_AnimationPlayer_property_playback_auto_capture>`, and :ref:`AnimationPlayer.play_with_capture()<class_AnimationPlayer_method_play_with_capture>`.
 
 .. rst-class:: classref-item-separator
 
@@ -402,7 +426,7 @@ Same as :ref:`UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>` but
 
 .. rst-class:: classref-enumeration
 
-enum **LoopMode**:
+enum **LoopMode**: :ref:`🔗<enum_Animation_LoopMode>`
 
 .. _class_Animation_constant_LOOP_NONE:
 
@@ -436,7 +460,7 @@ Repeats playback and reverse playback at both ends of the animation.
 
 .. rst-class:: classref-enumeration
 
-enum **LoopedFlag**:
+enum **LoopedFlag**: :ref:`🔗<enum_Animation_LoopedFlag>`
 
 .. _class_Animation_constant_LOOPED_FLAG_NONE:
 
@@ -470,7 +494,7 @@ This flag indicates that the animation has reached the start of the animation an
 
 .. rst-class:: classref-enumeration
 
-enum **FindMode**:
+enum **FindMode**: :ref:`🔗<enum_Animation_FindMode>`
 
 .. _class_Animation_constant_FIND_MODE_NEAREST:
 
@@ -505,11 +529,27 @@ Finds only the key with matching the time.
 Property Descriptions
 ---------------------
 
+.. _class_Animation_property_capture_included:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **capture_included** = ``false`` :ref:`🔗<class_Animation_property_capture_included>`
+
+.. rst-class:: classref-property-setget
+
+- :ref:`bool<class_bool>` **is_capture_included**\ (\ )
+
+Returns ``true`` if the capture track is included. This is a cached readonly value for performance.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Animation_property_length:
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **length** = ``1.0``
+:ref:`float<class_float>` **length** = ``1.0`` :ref:`🔗<class_Animation_property_length>`
 
 .. rst-class:: classref-property-setget
 
@@ -528,7 +568,7 @@ The total length of the animation (in seconds).
 
 .. rst-class:: classref-property
 
-:ref:`LoopMode<enum_Animation_LoopMode>` **loop_mode** = ``0``
+:ref:`LoopMode<enum_Animation_LoopMode>` **loop_mode** = ``0`` :ref:`🔗<class_Animation_property_loop_mode>`
 
 .. rst-class:: classref-property-setget
 
@@ -545,7 +585,7 @@ Determines the behavior of both ends of the animation timeline during animation
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **step** = ``0.1``
+:ref:`float<class_float>` **step** = ``0.0333333`` :ref:`🔗<class_Animation_property_step>`
 
 .. rst-class:: classref-property-setget
 
@@ -563,11 +603,23 @@ The animation step value.
 Method Descriptions
 -------------------
 
+.. _class_Animation_method_add_marker:
+
+.. rst-class:: classref-method
+
+|void| **add_marker**\ (\ name\: :ref:`StringName<class_StringName>`, time\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Animation_method_add_marker>`
+
+Adds a marker to this Animation.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Animation_method_add_track:
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **add_track**\ (\ type\: :ref:`TrackType<enum_Animation_TrackType>`, at_position\: :ref:`int<class_int>` = -1\ )
+:ref:`int<class_int>` **add_track**\ (\ type\: :ref:`TrackType<enum_Animation_TrackType>`, at_position\: :ref:`int<class_int>` = -1\ ) :ref:`🔗<class_Animation_method_add_track>`
 
 Adds a track to the Animation.
 
@@ -579,7 +631,7 @@ Adds a track to the Animation.
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **animation_track_get_key_animation**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`StringName<class_StringName>` **animation_track_get_key_animation**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_animation_track_get_key_animation>`
 
 Returns the animation name at the key identified by ``key_idx``. The ``track_idx`` must be the index of an Animation Track.
 
@@ -591,7 +643,7 @@ Returns the animation name at the key identified by ``key_idx``. The ``track_idx
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **animation_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, animation\: :ref:`StringName<class_StringName>`\ )
+:ref:`int<class_int>` **animation_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, animation\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_Animation_method_animation_track_insert_key>`
 
 Inserts a key with value ``animation`` at the given ``time`` (in seconds). The ``track_idx`` must be the index of an Animation Track.
 
@@ -603,7 +655,7 @@ Inserts a key with value ``animation`` at the given ``time`` (in seconds). The `
 
 .. rst-class:: classref-method
 
-|void| **animation_track_set_key_animation**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, animation\: :ref:`StringName<class_StringName>`\ )
+|void| **animation_track_set_key_animation**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, animation\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_Animation_method_animation_track_set_key_animation>`
 
 Sets the key identified by ``key_idx`` to value ``animation``. The ``track_idx`` must be the index of an Animation Track.
 
@@ -615,7 +667,7 @@ Sets the key identified by ``key_idx`` to value ``animation``. The ``track_idx``
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **audio_track_get_key_end_offset**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **audio_track_get_key_end_offset**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_audio_track_get_key_end_offset>`
 
 Returns the end offset of the key identified by ``key_idx``. The ``track_idx`` must be the index of an Audio Track.
 
@@ -629,7 +681,7 @@ End offset is the number of seconds cut off at the ending of the audio stream.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **audio_track_get_key_start_offset**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **audio_track_get_key_start_offset**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_audio_track_get_key_start_offset>`
 
 Returns the start offset of the key identified by ``key_idx``. The ``track_idx`` must be the index of an Audio Track.
 
@@ -643,7 +695,7 @@ Start offset is the number of seconds cut off at the beginning of the audio stre
 
 .. rst-class:: classref-method
 
-:ref:`Resource<class_Resource>` **audio_track_get_key_stream**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`Resource<class_Resource>` **audio_track_get_key_stream**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_audio_track_get_key_stream>`
 
 Returns the audio stream of the key identified by ``key_idx``. The ``track_idx`` must be the index of an Audio Track.
 
@@ -655,7 +707,7 @@ Returns the audio stream of the key identified by ``key_idx``. The ``track_idx``
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **audio_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, stream\: :ref:`Resource<class_Resource>`, start_offset\: :ref:`float<class_float>` = 0, end_offset\: :ref:`float<class_float>` = 0\ )
+:ref:`int<class_int>` **audio_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, stream\: :ref:`Resource<class_Resource>`, start_offset\: :ref:`float<class_float>` = 0, end_offset\: :ref:`float<class_float>` = 0\ ) :ref:`🔗<class_Animation_method_audio_track_insert_key>`
 
 Inserts an Audio Track key at the given ``time`` in seconds. The ``track_idx`` must be the index of an Audio Track.
 
@@ -669,7 +721,7 @@ Inserts an Audio Track key at the given ``time`` in seconds. The ``track_idx`` m
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **audio_track_is_use_blend**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **audio_track_is_use_blend**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_audio_track_is_use_blend>`
 
 Returns ``true`` if the track at ``track_idx`` will be blended with other animations.
 
@@ -681,7 +733,7 @@ Returns ``true`` if the track at ``track_idx`` will be blended with other animat
 
 .. rst-class:: classref-method
 
-|void| **audio_track_set_key_end_offset**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, offset\: :ref:`float<class_float>`\ )
+|void| **audio_track_set_key_end_offset**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, offset\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Animation_method_audio_track_set_key_end_offset>`
 
 Sets the end offset of the key identified by ``key_idx`` to value ``offset``. The ``track_idx`` must be the index of an Audio Track.
 
@@ -693,7 +745,7 @@ Sets the end offset of the key identified by ``key_idx`` to value ``offset``. Th
 
 .. rst-class:: classref-method
 
-|void| **audio_track_set_key_start_offset**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, offset\: :ref:`float<class_float>`\ )
+|void| **audio_track_set_key_start_offset**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, offset\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Animation_method_audio_track_set_key_start_offset>`
 
 Sets the start offset of the key identified by ``key_idx`` to value ``offset``. The ``track_idx`` must be the index of an Audio Track.
 
@@ -705,7 +757,7 @@ Sets the start offset of the key identified by ``key_idx`` to value ``offset``.
 
 .. rst-class:: classref-method
 
-|void| **audio_track_set_key_stream**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, stream\: :ref:`Resource<class_Resource>`\ )
+|void| **audio_track_set_key_stream**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, stream\: :ref:`Resource<class_Resource>`\ ) :ref:`🔗<class_Animation_method_audio_track_set_key_stream>`
 
 Sets the stream of the key identified by ``key_idx`` to value ``stream``. The ``track_idx`` must be the index of an Audio Track.
 
@@ -717,7 +769,7 @@ Sets the stream of the key identified by ``key_idx`` to value ``stream``. The ``
 
 .. rst-class:: classref-method
 
-|void| **audio_track_set_use_blend**\ (\ track_idx\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ )
+|void| **audio_track_set_use_blend**\ (\ track_idx\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_Animation_method_audio_track_set_use_blend>`
 
 Sets whether the track will be blended with other animations. If ``true``, the audio playback volume changes depending on the blend value.
 
@@ -729,7 +781,7 @@ Sets whether the track will be blended with other animations. If ``true``, the a
 
 .. rst-class:: classref-method
 
-:ref:`Vector2<class_Vector2>` **bezier_track_get_key_in_handle**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`Vector2<class_Vector2>` **bezier_track_get_key_in_handle**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_bezier_track_get_key_in_handle>`
 
 Returns the in handle of the key identified by ``key_idx``. The ``track_idx`` must be the index of a Bezier Track.
 
@@ -741,7 +793,7 @@ Returns the in handle of the key identified by ``key_idx``. The ``track_idx`` mu
 
 .. rst-class:: classref-method
 
-:ref:`Vector2<class_Vector2>` **bezier_track_get_key_out_handle**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`Vector2<class_Vector2>` **bezier_track_get_key_out_handle**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_bezier_track_get_key_out_handle>`
 
 Returns the out handle of the key identified by ``key_idx``. The ``track_idx`` must be the index of a Bezier Track.
 
@@ -753,7 +805,7 @@ Returns the out handle of the key identified by ``key_idx``. The ``track_idx`` m
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **bezier_track_get_key_value**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **bezier_track_get_key_value**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_bezier_track_get_key_value>`
 
 Returns the value of the key identified by ``key_idx``. The ``track_idx`` must be the index of a Bezier Track.
 
@@ -765,7 +817,7 @@ Returns the value of the key identified by ``key_idx``. The ``track_idx`` must b
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **bezier_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, value\: :ref:`float<class_float>`, in_handle\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0), out_handle\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ )
+:ref:`int<class_int>` **bezier_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, value\: :ref:`float<class_float>`, in_handle\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0), out_handle\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ ) :ref:`🔗<class_Animation_method_bezier_track_insert_key>`
 
 Inserts a Bezier Track key at the given ``time`` in seconds. The ``track_idx`` must be the index of a Bezier Track.
 
@@ -779,7 +831,7 @@ Inserts a Bezier Track key at the given ``time`` in seconds. The ``track_idx`` m
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **bezier_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`\ ) |const|
+:ref:`float<class_float>` **bezier_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`\ ) |const| :ref:`🔗<class_Animation_method_bezier_track_interpolate>`
 
 Returns the interpolated value at the given ``time`` (in seconds). The ``track_idx`` must be the index of a Bezier Track.
 
@@ -791,7 +843,7 @@ Returns the interpolated value at the given ``time`` (in seconds). The ``track_i
 
 .. rst-class:: classref-method
 
-|void| **bezier_track_set_key_in_handle**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, in_handle\: :ref:`Vector2<class_Vector2>`, balanced_value_time_ratio\: :ref:`float<class_float>` = 1.0\ )
+|void| **bezier_track_set_key_in_handle**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, in_handle\: :ref:`Vector2<class_Vector2>`, balanced_value_time_ratio\: :ref:`float<class_float>` = 1.0\ ) :ref:`🔗<class_Animation_method_bezier_track_set_key_in_handle>`
 
 Sets the in handle of the key identified by ``key_idx`` to value ``in_handle``. The ``track_idx`` must be the index of a Bezier Track.
 
@@ -803,7 +855,7 @@ Sets the in handle of the key identified by ``key_idx`` to value ``in_handle``.
 
 .. rst-class:: classref-method
 
-|void| **bezier_track_set_key_out_handle**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, out_handle\: :ref:`Vector2<class_Vector2>`, balanced_value_time_ratio\: :ref:`float<class_float>` = 1.0\ )
+|void| **bezier_track_set_key_out_handle**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, out_handle\: :ref:`Vector2<class_Vector2>`, balanced_value_time_ratio\: :ref:`float<class_float>` = 1.0\ ) :ref:`🔗<class_Animation_method_bezier_track_set_key_out_handle>`
 
 Sets the out handle of the key identified by ``key_idx`` to value ``out_handle``. The ``track_idx`` must be the index of a Bezier Track.
 
@@ -815,7 +867,7 @@ Sets the out handle of the key identified by ``key_idx`` to value ``out_handle``
 
 .. rst-class:: classref-method
 
-|void| **bezier_track_set_key_value**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, value\: :ref:`float<class_float>`\ )
+|void| **bezier_track_set_key_value**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, value\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Animation_method_bezier_track_set_key_value>`
 
 Sets the value of the key identified by ``key_idx`` to the given value. The ``track_idx`` must be the index of a Bezier Track.
 
@@ -827,7 +879,7 @@ Sets the value of the key identified by ``key_idx`` to the given value. The ``tr
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **blend_shape_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, amount\: :ref:`float<class_float>`\ )
+:ref:`int<class_int>` **blend_shape_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, amount\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Animation_method_blend_shape_track_insert_key>`
 
 Inserts a key in a given blend shape track. Returns the key index.
 
@@ -839,7 +891,7 @@ Inserts a key in a given blend shape track. Returns the key index.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **blend_shape_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const|
+:ref:`float<class_float>` **blend_shape_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_Animation_method_blend_shape_track_interpolate>`
 
 Returns the interpolated blend shape value at the given time (in seconds). The ``track_idx`` must be the index of a blend shape track.
 
@@ -851,7 +903,7 @@ Returns the interpolated blend shape value at the given time (in seconds). The `
 
 .. rst-class:: classref-method
 
-|void| **clear**\ (\ )
+|void| **clear**\ (\ ) :ref:`🔗<class_Animation_method_clear>`
 
 Clear the animation (clear all tracks and reset all).
 
@@ -863,9 +915,9 @@ Clear the animation (clear all tracks and reset all).
 
 .. rst-class:: classref-method
 
-|void| **compress**\ (\ page_size\: :ref:`int<class_int>` = 8192, fps\: :ref:`int<class_int>` = 120, split_tolerance\: :ref:`float<class_float>` = 4.0\ )
+|void| **compress**\ (\ page_size\: :ref:`int<class_int>` = 8192, fps\: :ref:`int<class_int>` = 120, split_tolerance\: :ref:`float<class_float>` = 4.0\ ) :ref:`🔗<class_Animation_method_compress>`
 
-Compress the animation and all its tracks in-place. This will make :ref:`track_is_compressed<class_Animation_method_track_is_compressed>` return ``true`` once called on this **Animation**. Compressed tracks require less memory to be played, and are designed to be used for complex 3D animations (such as cutscenes) imported from external 3D software. Compression is lossy, but the difference is usually not noticeable in real world conditions.
+Compress the animation and all its tracks in-place. This will make :ref:`track_is_compressed()<class_Animation_method_track_is_compressed>` return ``true`` once called on this **Animation**. Compressed tracks require less memory to be played, and are designed to be used for complex 3D animations (such as cutscenes) imported from external 3D software. Compression is lossy, but the difference is usually not noticeable in real world conditions.
 
 \ **Note:** Compressed tracks have various limitations (such as not being editable from the editor), so only use compressed animations if you actually need them.
 
@@ -877,7 +929,7 @@ Compress the animation and all its tracks in-place. This will make :ref:`track_i
 
 .. rst-class:: classref-method
 
-|void| **copy_track**\ (\ track_idx\: :ref:`int<class_int>`, to_animation\: :ref:`Animation<class_Animation>`\ )
+|void| **copy_track**\ (\ track_idx\: :ref:`int<class_int>`, to_animation\: :ref:`Animation<class_Animation>`\ ) :ref:`🔗<class_Animation_method_copy_track>`
 
 Adds a new track to ``to_animation`` that is a copy of the given track from this animation.
 
@@ -889,7 +941,7 @@ Adds a new track to ``to_animation`` that is a copy of the given track from this
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **find_track**\ (\ path\: :ref:`NodePath<class_NodePath>`, type\: :ref:`TrackType<enum_Animation_TrackType>`\ ) |const|
+:ref:`int<class_int>` **find_track**\ (\ path\: :ref:`NodePath<class_NodePath>`, type\: :ref:`TrackType<enum_Animation_TrackType>`\ ) |const| :ref:`🔗<class_Animation_method_find_track>`
 
 Returns the index of the specified track. If the track is not found, return -1.
 
@@ -897,11 +949,83 @@ Returns the index of the specified track. If the track is not found, return -1.
 
 ----
 
+.. _class_Animation_method_get_marker_at_time:
+
+.. rst-class:: classref-method
+
+:ref:`StringName<class_StringName>` **get_marker_at_time**\ (\ time\: :ref:`float<class_float>`\ ) |const| :ref:`🔗<class_Animation_method_get_marker_at_time>`
+
+Returns the name of the marker located at the given time.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_Animation_method_get_marker_color:
+
+.. rst-class:: classref-method
+
+:ref:`Color<class_Color>` **get_marker_color**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_Animation_method_get_marker_color>`
+
+Returns the given marker's color.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_Animation_method_get_marker_names:
+
+.. rst-class:: classref-method
+
+:ref:`PackedStringArray<class_PackedStringArray>` **get_marker_names**\ (\ ) |const| :ref:`🔗<class_Animation_method_get_marker_names>`
+
+Returns every marker in this Animation, sorted ascending by time.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_Animation_method_get_marker_time:
+
+.. rst-class:: classref-method
+
+:ref:`float<class_float>` **get_marker_time**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_Animation_method_get_marker_time>`
+
+Returns the given marker's time.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_Animation_method_get_next_marker:
+
+.. rst-class:: classref-method
+
+:ref:`StringName<class_StringName>` **get_next_marker**\ (\ time\: :ref:`float<class_float>`\ ) |const| :ref:`🔗<class_Animation_method_get_next_marker>`
+
+Returns the closest marker that comes after the given time. If no such marker exists, an empty string is returned.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_Animation_method_get_prev_marker:
+
+.. rst-class:: classref-method
+
+:ref:`StringName<class_StringName>` **get_prev_marker**\ (\ time\: :ref:`float<class_float>`\ ) |const| :ref:`🔗<class_Animation_method_get_prev_marker>`
+
+Returns the closest marker that comes before the given time. If no such marker exists, an empty string is returned.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Animation_method_get_track_count:
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_track_count**\ (\ ) |const|
+:ref:`int<class_int>` **get_track_count**\ (\ ) |const| :ref:`🔗<class_Animation_method_get_track_count>`
 
 Returns the amount of tracks in the animation.
 
@@ -909,11 +1033,23 @@ Returns the amount of tracks in the animation.
 
 ----
 
+.. _class_Animation_method_has_marker:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **has_marker**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_Animation_method_has_marker>`
+
+Returns ``true`` if this Animation contains a marker with the given name.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Animation_method_method_track_get_name:
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **method_track_get_name**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`StringName<class_StringName>` **method_track_get_name**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_method_track_get_name>`
 
 Returns the method name of a method track.
 
@@ -925,7 +1061,7 @@ Returns the method name of a method track.
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>` **method_track_get_params**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`Array<class_Array>` **method_track_get_params**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_method_track_get_params>`
 
 Returns the arguments values to be called on a method track for a given key in a given track.
 
@@ -933,11 +1069,23 @@ Returns the arguments values to be called on a method track for a given key in a
 
 ----
 
+.. _class_Animation_method_optimize:
+
+.. rst-class:: classref-method
+
+|void| **optimize**\ (\ allowed_velocity_err\: :ref:`float<class_float>` = 0.01, allowed_angular_err\: :ref:`float<class_float>` = 0.01, precision\: :ref:`int<class_int>` = 3\ ) :ref:`🔗<class_Animation_method_optimize>`
+
+Optimize the animation and all its tracks in-place. This will preserve only as many keys as are necessary to keep the animation within the specified bounds.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Animation_method_position_track_insert_key:
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **position_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, position\: :ref:`Vector3<class_Vector3>`\ )
+:ref:`int<class_int>` **position_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, position\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Animation_method_position_track_insert_key>`
 
 Inserts a key in a given 3D position track. Returns the key index.
 
@@ -949,7 +1097,7 @@ Inserts a key in a given 3D position track. Returns the key index.
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **position_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const|
+:ref:`Vector3<class_Vector3>` **position_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_Animation_method_position_track_interpolate>`
 
 Returns the interpolated position value at the given time (in seconds). The ``track_idx`` must be the index of a 3D position track.
 
@@ -957,11 +1105,23 @@ Returns the interpolated position value at the given time (in seconds). The ``tr
 
 ----
 
+.. _class_Animation_method_remove_marker:
+
+.. rst-class:: classref-method
+
+|void| **remove_marker**\ (\ name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_Animation_method_remove_marker>`
+
+Removes the marker with the given name from this Animation.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Animation_method_remove_track:
 
 .. rst-class:: classref-method
 
-|void| **remove_track**\ (\ track_idx\: :ref:`int<class_int>`\ )
+|void| **remove_track**\ (\ track_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Animation_method_remove_track>`
 
 Removes a track by specifying the track index.
 
@@ -973,7 +1133,7 @@ Removes a track by specifying the track index.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **rotation_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, rotation\: :ref:`Quaternion<class_Quaternion>`\ )
+:ref:`int<class_int>` **rotation_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, rotation\: :ref:`Quaternion<class_Quaternion>`\ ) :ref:`🔗<class_Animation_method_rotation_track_insert_key>`
 
 Inserts a key in a given 3D rotation track. Returns the key index.
 
@@ -985,7 +1145,7 @@ Inserts a key in a given 3D rotation track. Returns the key index.
 
 .. rst-class:: classref-method
 
-:ref:`Quaternion<class_Quaternion>` **rotation_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const|
+:ref:`Quaternion<class_Quaternion>` **rotation_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_Animation_method_rotation_track_interpolate>`
 
 Returns the interpolated rotation value at the given time (in seconds). The ``track_idx`` must be the index of a 3D rotation track.
 
@@ -997,7 +1157,7 @@ Returns the interpolated rotation value at the given time (in seconds). The ``tr
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **scale_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, scale\: :ref:`Vector3<class_Vector3>`\ )
+:ref:`int<class_int>` **scale_track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, scale\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Animation_method_scale_track_insert_key>`
 
 Inserts a key in a given 3D scale track. Returns the key index.
 
@@ -1009,7 +1169,7 @@ Inserts a key in a given 3D scale track. Returns the key index.
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **scale_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const|
+:ref:`Vector3<class_Vector3>` **scale_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_Animation_method_scale_track_interpolate>`
 
 Returns the interpolated scale value at the given time (in seconds). The ``track_idx`` must be the index of a 3D scale track.
 
@@ -1017,16 +1177,32 @@ Returns the interpolated scale value at the given time (in seconds). The ``track
 
 ----
 
+.. _class_Animation_method_set_marker_color:
+
+.. rst-class:: classref-method
+
+|void| **set_marker_color**\ (\ name\: :ref:`StringName<class_StringName>`, color\: :ref:`Color<class_Color>`\ ) :ref:`🔗<class_Animation_method_set_marker_color>`
+
+Sets the given marker's color.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_Animation_method_track_find_key:
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **track_find_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, find_mode\: :ref:`FindMode<enum_Animation_FindMode>` = 0, limit\: :ref:`bool<class_bool>` = false\ ) |const|
+:ref:`int<class_int>` **track_find_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, find_mode\: :ref:`FindMode<enum_Animation_FindMode>` = 0, limit\: :ref:`bool<class_bool>` = false, backward\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_Animation_method_track_find_key>`
 
 Finds the key index by time in a given track. Optionally, only find it if the approx/exact time is given.
 
 If ``limit`` is ``true``, it does not return keys outside the animation range.
 
+If ``backward`` is ``true``, the direction is reversed in methods that rely on one directional processing.
+
+For example, in case ``find_mode`` is :ref:`FIND_MODE_NEAREST<class_Animation_constant_FIND_MODE_NEAREST>`, if there is no key in the current position just after seeked, the first key found is retrieved by searching before the position, but if ``backward`` is ``true``, the first key found is retrieved after the position.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -1035,7 +1211,7 @@ If ``limit`` is ``true``, it does not return keys outside the animation range.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **track_get_interpolation_loop_wrap**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **track_get_interpolation_loop_wrap**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_get_interpolation_loop_wrap>`
 
 Returns ``true`` if the track at ``track_idx`` wraps the interpolation loop. New tracks wrap the interpolation loop by default.
 
@@ -1047,7 +1223,7 @@ Returns ``true`` if the track at ``track_idx`` wraps the interpolation loop. New
 
 .. rst-class:: classref-method
 
-:ref:`InterpolationType<enum_Animation_InterpolationType>` **track_get_interpolation_type**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`InterpolationType<enum_Animation_InterpolationType>` **track_get_interpolation_type**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_get_interpolation_type>`
 
 Returns the interpolation type of a given track.
 
@@ -1059,7 +1235,7 @@ Returns the interpolation type of a given track.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **track_get_key_count**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`int<class_int>` **track_get_key_count**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_get_key_count>`
 
 Returns the number of keys in a given track.
 
@@ -1071,7 +1247,7 @@ Returns the number of keys in a given track.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **track_get_key_time**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **track_get_key_time**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_get_key_time>`
 
 Returns the time at which the key is located.
 
@@ -1083,9 +1259,9 @@ Returns the time at which the key is located.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **track_get_key_transition**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **track_get_key_transition**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_get_key_transition>`
 
-Returns the transition curve (easing) for a specific key (see the built-in math function :ref:`@GlobalScope.ease<class_@GlobalScope_method_ease>`).
+Returns the transition curve (easing) for a specific key (see the built-in math function :ref:`@GlobalScope.ease()<class_@GlobalScope_method_ease>`).
 
 .. rst-class:: classref-item-separator
 
@@ -1095,7 +1271,7 @@ Returns the transition curve (easing) for a specific key (see the built-in math
 
 .. rst-class:: classref-method
 
-:ref:`Variant<class_Variant>` **track_get_key_value**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`Variant<class_Variant>` **track_get_key_value**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_get_key_value>`
 
 Returns the value of a given key in a given track.
 
@@ -1107,9 +1283,9 @@ Returns the value of a given key in a given track.
 
 .. rst-class:: classref-method
 
-:ref:`NodePath<class_NodePath>` **track_get_path**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`NodePath<class_NodePath>` **track_get_path**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_get_path>`
 
-Gets the path of a track. For more information on the path format, see :ref:`track_set_path<class_Animation_method_track_set_path>`.
+Gets the path of a track. For more information on the path format, see :ref:`track_set_path()<class_Animation_method_track_set_path>`.
 
 .. rst-class:: classref-item-separator
 
@@ -1119,7 +1295,7 @@ Gets the path of a track. For more information on the path format, see :ref:`tra
 
 .. rst-class:: classref-method
 
-:ref:`TrackType<enum_Animation_TrackType>` **track_get_type**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`TrackType<enum_Animation_TrackType>` **track_get_type**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_get_type>`
 
 Gets the type of a track.
 
@@ -1131,7 +1307,7 @@ Gets the type of a track.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, key\: :ref:`Variant<class_Variant>`, transition\: :ref:`float<class_float>` = 1\ )
+:ref:`int<class_int>` **track_insert_key**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, key\: :ref:`Variant<class_Variant>`, transition\: :ref:`float<class_float>` = 1\ ) :ref:`🔗<class_Animation_method_track_insert_key>`
 
 Inserts a generic key in a given track. Returns the key index.
 
@@ -1143,9 +1319,9 @@ Inserts a generic key in a given track. Returns the key index.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **track_is_compressed**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **track_is_compressed**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_is_compressed>`
 
-Returns ``true`` if the track is compressed, ``false`` otherwise. See also :ref:`compress<class_Animation_method_compress>`.
+Returns ``true`` if the track is compressed, ``false`` otherwise. See also :ref:`compress()<class_Animation_method_compress>`.
 
 .. rst-class:: classref-item-separator
 
@@ -1155,7 +1331,7 @@ Returns ``true`` if the track is compressed, ``false`` otherwise. See also :ref:
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **track_is_enabled**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **track_is_enabled**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_is_enabled>`
 
 Returns ``true`` if the track at index ``track_idx`` is enabled.
 
@@ -1167,7 +1343,7 @@ Returns ``true`` if the track at index ``track_idx`` is enabled.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **track_is_imported**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **track_is_imported**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_track_is_imported>`
 
 Returns ``true`` if the given track is imported. Else, return ``false``.
 
@@ -1179,7 +1355,7 @@ Returns ``true`` if the given track is imported. Else, return ``false``.
 
 .. rst-class:: classref-method
 
-|void| **track_move_down**\ (\ track_idx\: :ref:`int<class_int>`\ )
+|void| **track_move_down**\ (\ track_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Animation_method_track_move_down>`
 
 Moves a track down.
 
@@ -1191,7 +1367,7 @@ Moves a track down.
 
 .. rst-class:: classref-method
 
-|void| **track_move_to**\ (\ track_idx\: :ref:`int<class_int>`, to_idx\: :ref:`int<class_int>`\ )
+|void| **track_move_to**\ (\ track_idx\: :ref:`int<class_int>`, to_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Animation_method_track_move_to>`
 
 Changes the index position of track ``track_idx`` to the one defined in ``to_idx``.
 
@@ -1203,7 +1379,7 @@ Changes the index position of track ``track_idx`` to the one defined in ``to_idx
 
 .. rst-class:: classref-method
 
-|void| **track_move_up**\ (\ track_idx\: :ref:`int<class_int>`\ )
+|void| **track_move_up**\ (\ track_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Animation_method_track_move_up>`
 
 Moves a track up.
 
@@ -1215,7 +1391,7 @@ Moves a track up.
 
 .. rst-class:: classref-method
 
-|void| **track_remove_key**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ )
+|void| **track_remove_key**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Animation_method_track_remove_key>`
 
 Removes a key by index in a given track.
 
@@ -1227,7 +1403,7 @@ Removes a key by index in a given track.
 
 .. rst-class:: classref-method
 
-|void| **track_remove_key_at_time**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`\ )
+|void| **track_remove_key_at_time**\ (\ track_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Animation_method_track_remove_key_at_time>`
 
 Removes a key at ``time`` in a given track.
 
@@ -1239,7 +1415,7 @@ Removes a key at ``time`` in a given track.
 
 .. rst-class:: classref-method
 
-|void| **track_set_enabled**\ (\ track_idx\: :ref:`int<class_int>`, enabled\: :ref:`bool<class_bool>`\ )
+|void| **track_set_enabled**\ (\ track_idx\: :ref:`int<class_int>`, enabled\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_Animation_method_track_set_enabled>`
 
 Enables/disables the given track. Tracks are enabled by default.
 
@@ -1251,7 +1427,7 @@ Enables/disables the given track. Tracks are enabled by default.
 
 .. rst-class:: classref-method
 
-|void| **track_set_imported**\ (\ track_idx\: :ref:`int<class_int>`, imported\: :ref:`bool<class_bool>`\ )
+|void| **track_set_imported**\ (\ track_idx\: :ref:`int<class_int>`, imported\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_Animation_method_track_set_imported>`
 
 Sets the given track as imported or not.
 
@@ -1263,7 +1439,7 @@ Sets the given track as imported or not.
 
 .. rst-class:: classref-method
 
-|void| **track_set_interpolation_loop_wrap**\ (\ track_idx\: :ref:`int<class_int>`, interpolation\: :ref:`bool<class_bool>`\ )
+|void| **track_set_interpolation_loop_wrap**\ (\ track_idx\: :ref:`int<class_int>`, interpolation\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_Animation_method_track_set_interpolation_loop_wrap>`
 
 If ``true``, the track at ``track_idx`` wraps the interpolation loop.
 
@@ -1275,7 +1451,7 @@ If ``true``, the track at ``track_idx`` wraps the interpolation loop.
 
 .. rst-class:: classref-method
 
-|void| **track_set_interpolation_type**\ (\ track_idx\: :ref:`int<class_int>`, interpolation\: :ref:`InterpolationType<enum_Animation_InterpolationType>`\ )
+|void| **track_set_interpolation_type**\ (\ track_idx\: :ref:`int<class_int>`, interpolation\: :ref:`InterpolationType<enum_Animation_InterpolationType>`\ ) :ref:`🔗<class_Animation_method_track_set_interpolation_type>`
 
 Sets the interpolation type of a given track.
 
@@ -1287,7 +1463,7 @@ Sets the interpolation type of a given track.
 
 .. rst-class:: classref-method
 
-|void| **track_set_key_time**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`\ )
+|void| **track_set_key_time**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Animation_method_track_set_key_time>`
 
 Sets the time of an existing key.
 
@@ -1299,9 +1475,9 @@ Sets the time of an existing key.
 
 .. rst-class:: classref-method
 
-|void| **track_set_key_transition**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, transition\: :ref:`float<class_float>`\ )
+|void| **track_set_key_transition**\ (\ track_idx\: :ref:`int<class_int>`, key_idx\: :ref:`int<class_int>`, transition\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Animation_method_track_set_key_transition>`
 
-Sets the transition curve (easing) for a specific key (see the built-in math function :ref:`@GlobalScope.ease<class_@GlobalScope_method_ease>`).
+Sets the transition curve (easing) for a specific key (see the built-in math function :ref:`@GlobalScope.ease()<class_@GlobalScope_method_ease>`).
 
 .. rst-class:: classref-item-separator
 
@@ -1311,7 +1487,7 @@ Sets the transition curve (easing) for a specific key (see the built-in math fun
 
 .. rst-class:: classref-method
 
-|void| **track_set_key_value**\ (\ track_idx\: :ref:`int<class_int>`, key\: :ref:`int<class_int>`, value\: :ref:`Variant<class_Variant>`\ )
+|void| **track_set_key_value**\ (\ track_idx\: :ref:`int<class_int>`, key\: :ref:`int<class_int>`, value\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_Animation_method_track_set_key_value>`
 
 Sets the value of an existing key.
 
@@ -1323,9 +1499,9 @@ Sets the value of an existing key.
 
 .. rst-class:: classref-method
 
-|void| **track_set_path**\ (\ track_idx\: :ref:`int<class_int>`, path\: :ref:`NodePath<class_NodePath>`\ )
+|void| **track_set_path**\ (\ track_idx\: :ref:`int<class_int>`, path\: :ref:`NodePath<class_NodePath>`\ ) :ref:`🔗<class_Animation_method_track_set_path>`
 
-Sets the path of a track. Paths must be valid scene-tree paths to a node and must be specified starting from the parent node of the node that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by ``":"``.
+Sets the path of a track. Paths must be valid scene-tree paths to a node and must be specified starting from the :ref:`AnimationMixer.root_node<class_AnimationMixer_property_root_node>` that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by ``":"``.
 
 For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
 
@@ -1337,7 +1513,7 @@ For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local
 
 .. rst-class:: classref-method
 
-|void| **track_swap**\ (\ track_idx\: :ref:`int<class_int>`, with_idx\: :ref:`int<class_int>`\ )
+|void| **track_swap**\ (\ track_idx\: :ref:`int<class_int>`, with_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Animation_method_track_swap>`
 
 Swaps the track ``track_idx``'s index position with the track ``with_idx``.
 
@@ -1349,7 +1525,7 @@ Swaps the track ``track_idx``'s index position with the track ``with_idx``.
 
 .. rst-class:: classref-method
 
-:ref:`UpdateMode<enum_Animation_UpdateMode>` **value_track_get_update_mode**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`UpdateMode<enum_Animation_UpdateMode>` **value_track_get_update_mode**\ (\ track_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Animation_method_value_track_get_update_mode>`
 
 Returns the update mode of a value track.
 
@@ -1361,10 +1537,12 @@ Returns the update mode of a value track.
 
 .. rst-class:: classref-method
 
-:ref:`Variant<class_Variant>` **value_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const|
+:ref:`Variant<class_Variant>` **value_track_interpolate**\ (\ track_idx\: :ref:`int<class_int>`, time_sec\: :ref:`float<class_float>`, backward\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_Animation_method_value_track_interpolate>`
 
 Returns the interpolated value at the given time (in seconds). The ``track_idx`` must be the index of a value track.
 
+A ``backward`` mainly affects the direction of key retrieval of the track with :ref:`UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>` converted by :ref:`AnimationMixer.ANIMATION_CALLBACK_MODE_DISCRETE_FORCE_CONTINUOUS<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_DISCRETE_FORCE_CONTINUOUS>` to match the result with :ref:`track_find_key()<class_Animation_method_track_find_key>`.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -1373,7 +1551,7 @@ Returns the interpolated value at the given time (in seconds). The ``track_idx``
 
 .. rst-class:: classref-method
 
-|void| **value_track_set_update_mode**\ (\ track_idx\: :ref:`int<class_int>`, mode\: :ref:`UpdateMode<enum_Animation_UpdateMode>`\ )
+|void| **value_track_set_update_mode**\ (\ track_idx\: :ref:`int<class_int>`, mode\: :ref:`UpdateMode<enum_Animation_UpdateMode>`\ ) :ref:`🔗<class_Animation_method_value_track_set_update_mode>`
 
 Sets the update mode (see :ref:`UpdateMode<enum_Animation_UpdateMode>`) of a value track.
 

+ 24 - 10
classes/class_animationlibrary.rst

@@ -43,6 +43,8 @@ Methods
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Array<class_Array>`\[:ref:`StringName<class_StringName>`\] | :ref:`get_animation_list<class_AnimationLibrary_method_get_animation_list>`\ (\ ) |const|                                                                                |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                                            | :ref:`get_animation_list_size<class_AnimationLibrary_method_get_animation_list_size>`\ (\ ) |const|                                                                      |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`has_animation<class_AnimationLibrary_method_has_animation>`\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|                                              |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                           | :ref:`remove_animation<class_AnimationLibrary_method_remove_animation>`\ (\ name\: :ref:`StringName<class_StringName>`\ )                                                |
@@ -63,7 +65,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**animation_added**\ (\ name\: :ref:`StringName<class_StringName>`\ )
+**animation_added**\ (\ name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationLibrary_signal_animation_added>`
 
 Emitted when an :ref:`Animation<class_Animation>` is added, under the key ``name``.
 
@@ -75,7 +77,7 @@ Emitted when an :ref:`Animation<class_Animation>` is added, under the key ``name
 
 .. rst-class:: classref-signal
 
-**animation_changed**\ (\ name\: :ref:`StringName<class_StringName>`\ )
+**animation_changed**\ (\ name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationLibrary_signal_animation_changed>`
 
 Emitted when there's a change in one of the animations, e.g. tracks are added, moved or have changed paths. ``name`` is the key of the animation that was changed.
 
@@ -89,7 +91,7 @@ See also :ref:`Resource.changed<class_Resource_signal_changed>`, which this acts
 
 .. rst-class:: classref-signal
 
-**animation_removed**\ (\ name\: :ref:`StringName<class_StringName>`\ )
+**animation_removed**\ (\ name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationLibrary_signal_animation_removed>`
 
 Emitted when an :ref:`Animation<class_Animation>` stored with the key ``name`` is removed.
 
@@ -101,7 +103,7 @@ Emitted when an :ref:`Animation<class_Animation>` stored with the key ``name`` i
 
 .. rst-class:: classref-signal
 
-**animation_renamed**\ (\ name\: :ref:`StringName<class_StringName>`, to_name\: :ref:`StringName<class_StringName>`\ )
+**animation_renamed**\ (\ name\: :ref:`StringName<class_StringName>`, to_name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationLibrary_signal_animation_renamed>`
 
 Emitted when the key for an :ref:`Animation<class_Animation>` is changed, from ``name`` to ``to_name``.
 
@@ -118,7 +120,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`Error<enum_@GlobalScope_Error>` **add_animation**\ (\ name\: :ref:`StringName<class_StringName>`, animation\: :ref:`Animation<class_Animation>`\ )
+:ref:`Error<enum_@GlobalScope_Error>` **add_animation**\ (\ name\: :ref:`StringName<class_StringName>`, animation\: :ref:`Animation<class_Animation>`\ ) :ref:`🔗<class_AnimationLibrary_method_add_animation>`
 
 Adds the ``animation`` to the library, accessible by the key ``name``.
 
@@ -130,7 +132,7 @@ Adds the ``animation`` to the library, accessible by the key ``name``.
 
 .. rst-class:: classref-method
 
-:ref:`Animation<class_Animation>` **get_animation**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`Animation<class_Animation>` **get_animation**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationLibrary_method_get_animation>`
 
 Returns the :ref:`Animation<class_Animation>` with the key ``name``. If the animation does not exist, ``null`` is returned and an error is logged.
 
@@ -142,7 +144,7 @@ Returns the :ref:`Animation<class_Animation>` with the key ``name``. If the anim
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>`\[:ref:`StringName<class_StringName>`\] **get_animation_list**\ (\ ) |const|
+:ref:`Array<class_Array>`\[:ref:`StringName<class_StringName>`\] **get_animation_list**\ (\ ) |const| :ref:`🔗<class_AnimationLibrary_method_get_animation_list>`
 
 Returns the keys for the :ref:`Animation<class_Animation>`\ s stored in the library.
 
@@ -150,11 +152,23 @@ Returns the keys for the :ref:`Animation<class_Animation>`\ s stored in the libr
 
 ----
 
+.. _class_AnimationLibrary_method_get_animation_list_size:
+
+.. rst-class:: classref-method
+
+:ref:`int<class_int>` **get_animation_list_size**\ (\ ) |const| :ref:`🔗<class_AnimationLibrary_method_get_animation_list_size>`
+
+Returns the key count for the :ref:`Animation<class_Animation>`\ s stored in the library.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AnimationLibrary_method_has_animation:
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_animation**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`bool<class_bool>` **has_animation**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationLibrary_method_has_animation>`
 
 Returns ``true`` if the library stores an :ref:`Animation<class_Animation>` with ``name`` as the key.
 
@@ -166,7 +180,7 @@ Returns ``true`` if the library stores an :ref:`Animation<class_Animation>` with
 
 .. rst-class:: classref-method
 
-|void| **remove_animation**\ (\ name\: :ref:`StringName<class_StringName>`\ )
+|void| **remove_animation**\ (\ name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationLibrary_method_remove_animation>`
 
 Removes the :ref:`Animation<class_Animation>` with the key ``name``.
 
@@ -178,7 +192,7 @@ Removes the :ref:`Animation<class_Animation>` with the key ``name``.
 
 .. rst-class:: classref-method
 
-|void| **rename_animation**\ (\ name\: :ref:`StringName<class_StringName>`, newname\: :ref:`StringName<class_StringName>`\ )
+|void| **rename_animation**\ (\ name\: :ref:`StringName<class_StringName>`, newname\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationLibrary_method_rename_animation>`
 
 Changes the key of the :ref:`Animation<class_Animation>` associated with the key ``name`` to ``newname``.
 

+ 148 - 67
classes/class_animationmixer.rst

@@ -25,6 +25,13 @@ Base class for :ref:`AnimationPlayer<class_AnimationPlayer>` and :ref:`Animation
 
 After instantiating the playback information data within the extended class, the blending is processed by the **AnimationMixer**.
 
+.. rst-class:: classref-introduction-group
+
+Tutorials
+---------
+
+- `Migrating Animations from Godot 4.0 to 4.3 <https://godotengine.org/article/migrating-animations-from-godot-4-0-to-4-3/>`__
+
 .. rst-class:: classref-reftable-group
 
 Properties
@@ -38,7 +45,7 @@ Properties
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
    | :ref:`int<class_int>`                                                                   | :ref:`audio_max_polyphony<class_AnimationMixer_property_audio_max_polyphony>`       | ``32``             |
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
-   | :ref:`AnimationCallbackModeDiscrete<enum_AnimationMixer_AnimationCallbackModeDiscrete>` | :ref:`callback_mode_discrete<class_AnimationMixer_property_callback_mode_discrete>` | ``0``              |
+   | :ref:`AnimationCallbackModeDiscrete<enum_AnimationMixer_AnimationCallbackModeDiscrete>` | :ref:`callback_mode_discrete<class_AnimationMixer_property_callback_mode_discrete>` | ``1``              |
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
    | :ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>`     | :ref:`callback_mode_method<class_AnimationMixer_property_callback_mode_method>`     | ``0``              |
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
@@ -48,6 +55,8 @@ Properties
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
    | :ref:`bool<class_bool>`                                                                 | :ref:`reset_on_save<class_AnimationMixer_property_reset_on_save>`                   | ``true``           |
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
+   | :ref:`bool<class_bool>`                                                                 | :ref:`root_motion_local<class_AnimationMixer_property_root_motion_local>`           |                    |
+   +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
    | :ref:`NodePath<class_NodePath>`                                                         | :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>`           | ``NodePath("")``   |
    +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------+
    | :ref:`NodePath<class_NodePath>`                                                         | :ref:`root_node<class_AnimationMixer_property_root_node>`                           | ``NodePath("..")`` |
@@ -118,7 +127,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**animation_finished**\ (\ anim_name\: :ref:`StringName<class_StringName>`\ )
+**animation_finished**\ (\ anim_name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationMixer_signal_animation_finished>`
 
 Notifies when an animation finished playing.
 
@@ -132,7 +141,7 @@ Notifies when an animation finished playing.
 
 .. rst-class:: classref-signal
 
-**animation_libraries_updated**\ (\ )
+**animation_libraries_updated**\ (\ ) :ref:`🔗<class_AnimationMixer_signal_animation_libraries_updated>`
 
 Notifies when the animation libraries have changed.
 
@@ -144,7 +153,7 @@ Notifies when the animation libraries have changed.
 
 .. rst-class:: classref-signal
 
-**animation_list_changed**\ (\ )
+**animation_list_changed**\ (\ ) :ref:`🔗<class_AnimationMixer_signal_animation_list_changed>`
 
 Notifies when an animation list is changed.
 
@@ -156,7 +165,7 @@ Notifies when an animation list is changed.
 
 .. rst-class:: classref-signal
 
-**animation_started**\ (\ anim_name\: :ref:`StringName<class_StringName>`\ )
+**animation_started**\ (\ anim_name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationMixer_signal_animation_started>`
 
 Notifies when an animation starts playing.
 
@@ -168,9 +177,9 @@ Notifies when an animation starts playing.
 
 .. rst-class:: classref-signal
 
-**caches_cleared**\ (\ )
+**caches_cleared**\ (\ ) :ref:`🔗<class_AnimationMixer_signal_caches_cleared>`
 
-Notifies when the caches have been cleared, either automatically, or manually via :ref:`clear_caches<class_AnimationMixer_method_clear_caches>`.
+Notifies when the caches have been cleared, either automatically, or manually via :ref:`clear_caches()<class_AnimationMixer_method_clear_caches>`.
 
 .. rst-class:: classref-item-separator
 
@@ -180,7 +189,7 @@ Notifies when the caches have been cleared, either automatically, or manually vi
 
 .. rst-class:: classref-signal
 
-**mixer_applied**\ (\ )
+**mixer_applied**\ (\ ) :ref:`🔗<class_AnimationMixer_signal_mixer_applied>`
 
 Notifies when the blending result related have been applied to the target objects.
 
@@ -192,7 +201,7 @@ Notifies when the blending result related have been applied to the target object
 
 .. rst-class:: classref-signal
 
-**mixer_updated**\ (\ )
+**mixer_updated**\ (\ ) :ref:`🔗<class_AnimationMixer_signal_mixer_updated>`
 
 Notifies when the property related process have been updated.
 
@@ -209,7 +218,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **AnimationCallbackModeProcess**:
+enum **AnimationCallbackModeProcess**: :ref:`🔗<enum_AnimationMixer_AnimationCallbackModeProcess>`
 
 .. _class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS:
 
@@ -233,7 +242,7 @@ Process animation during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PR
 
 :ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>` **ANIMATION_CALLBACK_MODE_PROCESS_MANUAL** = ``2``
 
-Do not process animation. Use :ref:`advance<class_AnimationMixer_method_advance>` to process the animation manually.
+Do not process animation. Use :ref:`advance()<class_AnimationMixer_method_advance>` to process the animation manually.
 
 .. rst-class:: classref-item-separator
 
@@ -243,7 +252,7 @@ Do not process animation. Use :ref:`advance<class_AnimationMixer_method_advance>
 
 .. rst-class:: classref-enumeration
 
-enum **AnimationCallbackModeMethod**:
+enum **AnimationCallbackModeMethod**: :ref:`🔗<enum_AnimationMixer_AnimationCallbackModeMethod>`
 
 .. _class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_METHOD_DEFERRED:
 
@@ -269,7 +278,7 @@ Make method calls immediately when reached in the animation.
 
 .. rst-class:: classref-enumeration
 
-enum **AnimationCallbackModeDiscrete**:
+enum **AnimationCallbackModeDiscrete**: :ref:`🔗<enum_AnimationMixer_AnimationCallbackModeDiscrete>`
 
 .. _class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_DISCRETE_DOMINANT:
 
@@ -277,9 +286,7 @@ enum **AnimationCallbackModeDiscrete**:
 
 :ref:`AnimationCallbackModeDiscrete<enum_AnimationMixer_AnimationCallbackModeDiscrete>` **ANIMATION_CALLBACK_MODE_DISCRETE_DOMINANT** = ``0``
 
-An :ref:`Animation.UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>` track value takes precedence when blending :ref:`Animation.UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>` or :ref:`Animation.UPDATE_CAPTURE<class_Animation_constant_UPDATE_CAPTURE>` track values and :ref:`Animation.UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>` track values. This is the default behavior for :ref:`AnimationPlayer<class_AnimationPlayer>`.
-
-\ **Note:** If a value track has non-numeric type key values, it is internally converted to use :ref:`ANIMATION_CALLBACK_MODE_DISCRETE_DOMINANT<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_DISCRETE_DOMINANT>` with :ref:`Animation.UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>`.
+An :ref:`Animation.UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>` track value takes precedence when blending :ref:`Animation.UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>` or :ref:`Animation.UPDATE_CAPTURE<class_Animation_constant_UPDATE_CAPTURE>` track values and :ref:`Animation.UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>` track values.
 
 .. _class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_DISCRETE_RECESSIVE:
 
@@ -287,7 +294,7 @@ An :ref:`Animation.UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>` tr
 
 :ref:`AnimationCallbackModeDiscrete<enum_AnimationMixer_AnimationCallbackModeDiscrete>` **ANIMATION_CALLBACK_MODE_DISCRETE_RECESSIVE** = ``1``
 
-An :ref:`Animation.UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>` or :ref:`Animation.UPDATE_CAPTURE<class_Animation_constant_UPDATE_CAPTURE>` track value takes precedence when blending the :ref:`Animation.UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>` or :ref:`Animation.UPDATE_CAPTURE<class_Animation_constant_UPDATE_CAPTURE>` track values and the :ref:`Animation.UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>` track values.
+An :ref:`Animation.UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>` or :ref:`Animation.UPDATE_CAPTURE<class_Animation_constant_UPDATE_CAPTURE>` track value takes precedence when blending the :ref:`Animation.UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>` or :ref:`Animation.UPDATE_CAPTURE<class_Animation_constant_UPDATE_CAPTURE>` track values and the :ref:`Animation.UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>` track values. This is the default behavior for :ref:`AnimationPlayer<class_AnimationPlayer>`.
 
 .. _class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_DISCRETE_FORCE_CONTINUOUS:
 
@@ -297,6 +304,32 @@ An :ref:`Animation.UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>
 
 Always treat the :ref:`Animation.UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>` track value as :ref:`Animation.UPDATE_CONTINUOUS<class_Animation_constant_UPDATE_CONTINUOUS>` with :ref:`Animation.INTERPOLATION_NEAREST<class_Animation_constant_INTERPOLATION_NEAREST>`. This is the default behavior for :ref:`AnimationTree<class_AnimationTree>`.
 
+If a value track has un-interpolatable type key values, it is internally converted to use :ref:`ANIMATION_CALLBACK_MODE_DISCRETE_RECESSIVE<class_AnimationMixer_constant_ANIMATION_CALLBACK_MODE_DISCRETE_RECESSIVE>` with :ref:`Animation.UPDATE_DISCRETE<class_Animation_constant_UPDATE_DISCRETE>`.
+
+Un-interpolatable type list:
+
+- :ref:`@GlobalScope.TYPE_NIL<class_@GlobalScope_constant_TYPE_NIL>`\ 
+
+- :ref:`@GlobalScope.TYPE_NODE_PATH<class_@GlobalScope_constant_TYPE_NODE_PATH>`\ 
+
+- :ref:`@GlobalScope.TYPE_RID<class_@GlobalScope_constant_TYPE_RID>`\ 
+
+- :ref:`@GlobalScope.TYPE_OBJECT<class_@GlobalScope_constant_TYPE_OBJECT>`\ 
+
+- :ref:`@GlobalScope.TYPE_CALLABLE<class_@GlobalScope_constant_TYPE_CALLABLE>`\ 
+
+- :ref:`@GlobalScope.TYPE_SIGNAL<class_@GlobalScope_constant_TYPE_SIGNAL>`\ 
+
+- :ref:`@GlobalScope.TYPE_DICTIONARY<class_@GlobalScope_constant_TYPE_DICTIONARY>`\ 
+
+- :ref:`@GlobalScope.TYPE_PACKED_BYTE_ARRAY<class_@GlobalScope_constant_TYPE_PACKED_BYTE_ARRAY>`\ 
+
+\ :ref:`@GlobalScope.TYPE_BOOL<class_@GlobalScope_constant_TYPE_BOOL>` and :ref:`@GlobalScope.TYPE_INT<class_@GlobalScope_constant_TYPE_INT>` are treated as :ref:`@GlobalScope.TYPE_FLOAT<class_@GlobalScope_constant_TYPE_FLOAT>` during blending and rounded when the result is retrieved.
+
+It is same for arrays and vectors with them such as :ref:`@GlobalScope.TYPE_PACKED_INT32_ARRAY<class_@GlobalScope_constant_TYPE_PACKED_INT32_ARRAY>` or :ref:`@GlobalScope.TYPE_VECTOR2I<class_@GlobalScope_constant_TYPE_VECTOR2I>`, they are treated as :ref:`@GlobalScope.TYPE_PACKED_FLOAT32_ARRAY<class_@GlobalScope_constant_TYPE_PACKED_FLOAT32_ARRAY>` or :ref:`@GlobalScope.TYPE_VECTOR2<class_@GlobalScope_constant_TYPE_VECTOR2>`. Also note that for arrays, the size is also interpolated.
+
+\ :ref:`@GlobalScope.TYPE_STRING<class_@GlobalScope_constant_TYPE_STRING>` and :ref:`@GlobalScope.TYPE_STRING_NAME<class_@GlobalScope_constant_TYPE_STRING_NAME>` are interpolated between character codes and lengths, but note that there is a difference in algorithm between interpolation between keys and interpolation by blending.
+
 .. rst-class:: classref-section-separator
 
 ----
@@ -310,7 +343,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **active** = ``true``
+:ref:`bool<class_bool>` **active** = ``true`` :ref:`🔗<class_AnimationMixer_property_active>`
 
 .. rst-class:: classref-property-setget
 
@@ -327,7 +360,7 @@ If ``true``, the **AnimationMixer** will be processing.
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **audio_max_polyphony** = ``32``
+:ref:`int<class_int>` **audio_max_polyphony** = ``32`` :ref:`🔗<class_AnimationMixer_property_audio_max_polyphony>`
 
 .. rst-class:: classref-property-setget
 
@@ -346,7 +379,7 @@ For example, if this value is ``32`` and the animation has two audio tracks, the
 
 .. rst-class:: classref-property
 
-:ref:`AnimationCallbackModeDiscrete<enum_AnimationMixer_AnimationCallbackModeDiscrete>` **callback_mode_discrete** = ``0``
+:ref:`AnimationCallbackModeDiscrete<enum_AnimationMixer_AnimationCallbackModeDiscrete>` **callback_mode_discrete** = ``1`` :ref:`🔗<class_AnimationMixer_property_callback_mode_discrete>`
 
 .. rst-class:: classref-property-setget
 
@@ -367,7 +400,7 @@ To make the blended results look good, it is recommended to set this to :ref:`AN
 
 .. rst-class:: classref-property
 
-:ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>` **callback_mode_method** = ``0``
+:ref:`AnimationCallbackModeMethod<enum_AnimationMixer_AnimationCallbackModeMethod>` **callback_mode_method** = ``0`` :ref:`🔗<class_AnimationMixer_property_callback_mode_method>`
 
 .. rst-class:: classref-property-setget
 
@@ -384,7 +417,7 @@ The call mode used for "Call Method" tracks.
 
 .. rst-class:: classref-property
 
-:ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>` **callback_mode_process** = ``1``
+:ref:`AnimationCallbackModeProcess<enum_AnimationMixer_AnimationCallbackModeProcess>` **callback_mode_process** = ``1`` :ref:`🔗<class_AnimationMixer_property_callback_mode_process>`
 
 .. rst-class:: classref-property-setget
 
@@ -401,7 +434,7 @@ The process notification in which to update animations.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **deterministic** = ``false``
+:ref:`bool<class_bool>` **deterministic** = ``false`` :ref:`🔗<class_AnimationMixer_property_deterministic>`
 
 .. rst-class:: classref-property-setget
 
@@ -428,7 +461,7 @@ For example, if :ref:`AnimationNodeAdd2<class_AnimationNodeAdd2>` blends two nod
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **reset_on_save** = ``true``
+:ref:`bool<class_bool>` **reset_on_save** = ``true`` :ref:`🔗<class_AnimationMixer_property_reset_on_save>`
 
 .. rst-class:: classref-property-setget
 
@@ -443,20 +476,37 @@ This makes it more convenient to preview and edit animations in the editor, as c
 
 ----
 
+.. _class_AnimationMixer_property_root_motion_local:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **root_motion_local** :ref:`🔗<class_AnimationMixer_property_root_motion_local>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_root_motion_local**\ (\ value\: :ref:`bool<class_bool>`\ )
+- :ref:`bool<class_bool>` **is_root_motion_local**\ (\ )
+
+If ``true``, :ref:`get_root_motion_position()<class_AnimationMixer_method_get_root_motion_position>` value is extracted as a local translation value before blending. In other words, it is treated like the translation is done after the rotation.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AnimationMixer_property_root_motion_track:
 
 .. rst-class:: classref-property
 
-:ref:`NodePath<class_NodePath>` **root_motion_track** = ``NodePath("")``
+:ref:`NodePath<class_NodePath>` **root_motion_track** = ``NodePath("")`` :ref:`🔗<class_AnimationMixer_property_root_motion_track>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_root_motion_track**\ (\ value\: :ref:`NodePath<class_NodePath>`\ )
 - :ref:`NodePath<class_NodePath>` **get_root_motion_track**\ (\ )
 
-The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. To specify a track that controls properties or bones, append its name after the path, separated by ``":"``. For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``.
+The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. The :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` uses the same format as :ref:`Animation.track_set_path()<class_Animation_method_track_set_path>`, but note that a bone must be specified.
 
-If the track has type :ref:`Animation.TYPE_POSITION_3D<class_Animation_constant_TYPE_POSITION_3D>`, :ref:`Animation.TYPE_ROTATION_3D<class_Animation_constant_TYPE_ROTATION_3D>` or :ref:`Animation.TYPE_SCALE_3D<class_Animation_constant_TYPE_SCALE_3D>` the transformation will be canceled visually, and the animation will appear to stay in place. See also :ref:`get_root_motion_position<class_AnimationMixer_method_get_root_motion_position>`, :ref:`get_root_motion_rotation<class_AnimationMixer_method_get_root_motion_rotation>`, :ref:`get_root_motion_scale<class_AnimationMixer_method_get_root_motion_scale>` and :ref:`RootMotionView<class_RootMotionView>`.
+If the track has type :ref:`Animation.TYPE_POSITION_3D<class_Animation_constant_TYPE_POSITION_3D>`, :ref:`Animation.TYPE_ROTATION_3D<class_Animation_constant_TYPE_ROTATION_3D>`, or :ref:`Animation.TYPE_SCALE_3D<class_Animation_constant_TYPE_SCALE_3D>` the transformation will be canceled visually, and the animation will appear to stay in place. See also :ref:`get_root_motion_position()<class_AnimationMixer_method_get_root_motion_position>`, :ref:`get_root_motion_rotation()<class_AnimationMixer_method_get_root_motion_rotation>`, :ref:`get_root_motion_scale()<class_AnimationMixer_method_get_root_motion_scale>`, and :ref:`RootMotionView<class_RootMotionView>`.
 
 .. rst-class:: classref-item-separator
 
@@ -466,7 +516,7 @@ If the track has type :ref:`Animation.TYPE_POSITION_3D<class_Animation_constant_
 
 .. rst-class:: classref-property
 
-:ref:`NodePath<class_NodePath>` **root_node** = ``NodePath("..")``
+:ref:`NodePath<class_NodePath>` **root_node** = ``NodePath("..")`` :ref:`🔗<class_AnimationMixer_property_root_node>`
 
 .. rst-class:: classref-property-setget
 
@@ -488,7 +538,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`Variant<class_Variant>` **_post_process_key_value**\ (\ animation\: :ref:`Animation<class_Animation>`, track\: :ref:`int<class_int>`, value\: :ref:`Variant<class_Variant>`, object_id\: :ref:`int<class_int>`, object_sub_idx\: :ref:`int<class_int>`\ ) |virtual| |const|
+:ref:`Variant<class_Variant>` **_post_process_key_value**\ (\ animation\: :ref:`Animation<class_Animation>`, track\: :ref:`int<class_int>`, value\: :ref:`Variant<class_Variant>`, object_id\: :ref:`int<class_int>`, object_sub_idx\: :ref:`int<class_int>`\ ) |virtual| |const| :ref:`🔗<class_AnimationMixer_private_method__post_process_key_value>`
 
 A virtual function for processing after getting a key during playback.
 
@@ -500,10 +550,22 @@ A virtual function for processing after getting a key during playback.
 
 .. rst-class:: classref-method
 
-:ref:`Error<enum_@GlobalScope_Error>` **add_animation_library**\ (\ name\: :ref:`StringName<class_StringName>`, library\: :ref:`AnimationLibrary<class_AnimationLibrary>`\ )
+:ref:`Error<enum_@GlobalScope_Error>` **add_animation_library**\ (\ name\: :ref:`StringName<class_StringName>`, library\: :ref:`AnimationLibrary<class_AnimationLibrary>`\ ) :ref:`🔗<class_AnimationMixer_method_add_animation_library>`
 
 Adds ``library`` to the animation player, under the key ``name``.
 
+AnimationMixer has a global library by default with an empty string as key. For adding an animation to the global library:
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    var global_library = mixer.get_animation_library("")
+    global_library.add_animation("animation_name", animation_resource)
+
+
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -512,7 +574,7 @@ Adds ``library`` to the animation player, under the key ``name``.
 
 .. rst-class:: classref-method
 
-|void| **advance**\ (\ delta\: :ref:`float<class_float>`\ )
+|void| **advance**\ (\ delta\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AnimationMixer_method_advance>`
 
 Manually advance the animations by the specified time (in seconds).
 
@@ -524,7 +586,7 @@ Manually advance the animations by the specified time (in seconds).
 
 .. rst-class:: classref-method
 
-|void| **capture**\ (\ name\: :ref:`StringName<class_StringName>`, duration\: :ref:`float<class_float>`, trans_type\: :ref:`TransitionType<enum_Tween_TransitionType>` = 0, ease_type\: :ref:`EaseType<enum_Tween_EaseType>` = 0\ )
+|void| **capture**\ (\ name\: :ref:`StringName<class_StringName>`, duration\: :ref:`float<class_float>`, trans_type\: :ref:`TransitionType<enum_Tween_TransitionType>` = 0, ease_type\: :ref:`EaseType<enum_Tween_EaseType>` = 0\ ) :ref:`🔗<class_AnimationMixer_method_capture>`
 
 If the animation track specified by ``name`` has an option :ref:`Animation.UPDATE_CAPTURE<class_Animation_constant_UPDATE_CAPTURE>`, stores current values of the objects indicated by the track path as a cache. If there is already a captured cache, the old cache is discarded.
 
@@ -540,9 +602,9 @@ You can specify ``trans_type`` as the curve for the interpolation. For better re
 
 .. rst-class:: classref-method
 
-|void| **clear_caches**\ (\ )
+|void| **clear_caches**\ (\ ) :ref:`🔗<class_AnimationMixer_method_clear_caches>`
 
-**AnimationMixer** caches animated nodes. It may not notice if a node disappears; :ref:`clear_caches<class_AnimationMixer_method_clear_caches>` forces it to update the cache again.
+**AnimationMixer** caches animated nodes. It may not notice if a node disappears; :ref:`clear_caches()<class_AnimationMixer_method_clear_caches>` forces it to update the cache again.
 
 .. rst-class:: classref-item-separator
 
@@ -552,7 +614,7 @@ You can specify ``trans_type`` as the curve for the interpolation. For better re
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **find_animation**\ (\ animation\: :ref:`Animation<class_Animation>`\ ) |const|
+:ref:`StringName<class_StringName>` **find_animation**\ (\ animation\: :ref:`Animation<class_Animation>`\ ) |const| :ref:`🔗<class_AnimationMixer_method_find_animation>`
 
 Returns the key of ``animation`` or an empty :ref:`StringName<class_StringName>` if not found.
 
@@ -564,7 +626,7 @@ Returns the key of ``animation`` or an empty :ref:`StringName<class_StringName>`
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **find_animation_library**\ (\ animation\: :ref:`Animation<class_Animation>`\ ) |const|
+:ref:`StringName<class_StringName>` **find_animation_library**\ (\ animation\: :ref:`Animation<class_Animation>`\ ) |const| :ref:`🔗<class_AnimationMixer_method_find_animation_library>`
 
 Returns the key for the :ref:`AnimationLibrary<class_AnimationLibrary>` that contains ``animation`` or an empty :ref:`StringName<class_StringName>` if not found.
 
@@ -576,7 +638,7 @@ Returns the key for the :ref:`AnimationLibrary<class_AnimationLibrary>` that con
 
 .. rst-class:: classref-method
 
-:ref:`Animation<class_Animation>` **get_animation**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`Animation<class_Animation>` **get_animation**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationMixer_method_get_animation>`
 
 Returns the :ref:`Animation<class_Animation>` with the key ``name``. If the animation does not exist, ``null`` is returned and an error is logged.
 
@@ -588,7 +650,7 @@ Returns the :ref:`Animation<class_Animation>` with the key ``name``. If the anim
 
 .. rst-class:: classref-method
 
-:ref:`AnimationLibrary<class_AnimationLibrary>` **get_animation_library**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`AnimationLibrary<class_AnimationLibrary>` **get_animation_library**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationMixer_method_get_animation_library>`
 
 Returns the first :ref:`AnimationLibrary<class_AnimationLibrary>` with key ``name`` or ``null`` if not found.
 
@@ -602,7 +664,7 @@ To get the **AnimationMixer**'s global animation library, use ``get_animation_li
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>`\[:ref:`StringName<class_StringName>`\] **get_animation_library_list**\ (\ ) |const|
+:ref:`Array<class_Array>`\[:ref:`StringName<class_StringName>`\] **get_animation_library_list**\ (\ ) |const| :ref:`🔗<class_AnimationMixer_method_get_animation_library_list>`
 
 Returns the list of stored library keys.
 
@@ -614,7 +676,7 @@ Returns the list of stored library keys.
 
 .. rst-class:: classref-method
 
-:ref:`PackedStringArray<class_PackedStringArray>` **get_animation_list**\ (\ ) |const|
+:ref:`PackedStringArray<class_PackedStringArray>` **get_animation_list**\ (\ ) |const| :ref:`🔗<class_AnimationMixer_method_get_animation_list>`
 
 Returns the list of stored animation keys.
 
@@ -626,7 +688,7 @@ Returns the list of stored animation keys.
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_root_motion_position**\ (\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_root_motion_position**\ (\ ) |const| :ref:`🔗<class_AnimationMixer_method_get_root_motion_position>`
 
 Retrieve the motion delta of position with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
 
@@ -641,19 +703,38 @@ The most basic example is applying position to :ref:`CharacterBody3D<class_Chara
 
  .. code-tab:: gdscript
 
-    var current_rotation: Quaternion
+    var current_rotation
     
     func _process(delta):
         if Input.is_action_just_pressed("animate"):
             current_rotation = get_quaternion()
             state_machine.travel("Animate")
-        var velocity: Vector3 = current_rotation * animation_tree.get_root_motion_position() / delta
+        var velocity = current_rotation * animation_tree.get_root_motion_position() / delta
+        set_velocity(velocity)
+        move_and_slide()
+
+
+
+By using this in combination with :ref:`get_root_motion_rotation_accumulator()<class_AnimationMixer_method_get_root_motion_rotation_accumulator>`, you can apply the root motion position more correctly to account for the rotation of the node.
+
+
+.. tabs::
+
+ .. code-tab:: gdscript
+
+    func _process(delta):
+        if Input.is_action_just_pressed("animate"):
+            state_machine.travel("Animate")
+        set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())
+        var velocity = (animation_tree.get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * animation_tree.get_root_motion_position() / delta
         set_velocity(velocity)
         move_and_slide()
 
 
 
-By using this in combination with :ref:`get_root_motion_position_accumulator<class_AnimationMixer_method_get_root_motion_position_accumulator>`, you can apply the root motion position more correctly to account for the rotation of the node.
+If :ref:`root_motion_local<class_AnimationMixer_property_root_motion_local>` is ``true``, return the pre-multiplied translation value with the inverted rotation.
+
+In this case, the code can be written as follows:
 
 
 .. tabs::
@@ -664,7 +745,7 @@ By using this in combination with :ref:`get_root_motion_position_accumulator<cla
         if Input.is_action_just_pressed("animate"):
             state_machine.travel("Animate")
         set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())
-        var velocity: Vector3 = (animation_tree.get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * animation_tree.get_root_motion_position() / delta
+        var velocity = get_quaternion() * animation_tree.get_root_motion_position() / delta
         set_velocity(velocity)
         move_and_slide()
 
@@ -678,7 +759,7 @@ By using this in combination with :ref:`get_root_motion_position_accumulator<cla
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_root_motion_position_accumulator**\ (\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_root_motion_position_accumulator**\ (\ ) |const| :ref:`🔗<class_AnimationMixer_method_get_root_motion_position_accumulator>`
 
 Retrieve the blended value of the position tracks with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
 
@@ -691,13 +772,13 @@ For example, if an animation with only one key ``Vector3(0, 0, 0)`` is played in
 
  .. code-tab:: gdscript
 
-    var prev_root_motion_position_accumulator: Vector3
+    var prev_root_motion_position_accumulator
     
     func _process(delta):
         if Input.is_action_just_pressed("animate"):
             state_machine.travel("Animate")
-        var current_root_motion_position_accumulator: Vector3 = animation_tree.get_root_motion_position_accumulator()
-        var difference: Vector3 = current_root_motion_position_accumulator - prev_root_motion_position_accumulator
+        var current_root_motion_position_accumulator = animation_tree.get_root_motion_position_accumulator()
+        var difference = current_root_motion_position_accumulator - prev_root_motion_position_accumulator
         prev_root_motion_position_accumulator = current_root_motion_position_accumulator
         transform.origin += difference
 
@@ -713,7 +794,7 @@ However, if the animation loops, an unintended discrete change may occur, so thi
 
 .. rst-class:: classref-method
 
-:ref:`Quaternion<class_Quaternion>` **get_root_motion_rotation**\ (\ ) |const|
+:ref:`Quaternion<class_Quaternion>` **get_root_motion_rotation**\ (\ ) |const| :ref:`🔗<class_AnimationMixer_method_get_root_motion_rotation>`
 
 Retrieve the motion delta of rotation with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Quaternion<class_Quaternion>` that can be used elsewhere.
 
@@ -743,11 +824,11 @@ The most basic example is applying rotation to :ref:`CharacterBody3D<class_Chara
 
 .. rst-class:: classref-method
 
-:ref:`Quaternion<class_Quaternion>` **get_root_motion_rotation_accumulator**\ (\ ) |const|
+:ref:`Quaternion<class_Quaternion>` **get_root_motion_rotation_accumulator**\ (\ ) |const| :ref:`🔗<class_AnimationMixer_method_get_root_motion_rotation_accumulator>`
 
 Retrieve the blended value of the rotation tracks with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Quaternion<class_Quaternion>` that can be used elsewhere.
 
-This is necessary to apply the root motion position correctly, taking rotation into account. See also :ref:`get_root_motion_position<class_AnimationMixer_method_get_root_motion_position>`.
+This is necessary to apply the root motion position correctly, taking rotation into account. See also :ref:`get_root_motion_position()<class_AnimationMixer_method_get_root_motion_position>`.
 
 Also, this is useful in cases where you want to respect the initial key values of the animation.
 
@@ -758,15 +839,15 @@ For example, if an animation with only one key ``Quaternion(0, 0, 0, 1)`` is pla
 
  .. code-tab:: gdscript
 
-    var prev_root_motion_rotation_accumulator: Quaternion
+    var prev_root_motion_rotation_accumulator
     
     func _process(delta):
         if Input.is_action_just_pressed("animate"):
             state_machine.travel("Animate")
-        var current_root_motion_rotation_accumulator: Quaternion = animation_tree.get_root_motion_Quaternion_accumulator()
-        var difference: Quaternion = prev_root_motion_rotation_accumulator.inverse() * current_root_motion_rotation_accumulator
+        var current_root_motion_rotation_accumulator = animation_tree.get_root_motion_rotation_accumulator()
+        var difference = prev_root_motion_rotation_accumulator.inverse() * current_root_motion_rotation_accumulator
         prev_root_motion_rotation_accumulator = current_root_motion_rotation_accumulator
-        transform.basis *= difference
+        transform.basis *=  Basis(difference)
 
 
 
@@ -780,7 +861,7 @@ However, if the animation loops, an unintended discrete change may occur, so thi
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_root_motion_scale**\ (\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_root_motion_scale**\ (\ ) |const| :ref:`🔗<class_AnimationMixer_method_get_root_motion_scale>`
 
 Retrieve the motion delta of scale with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
 
@@ -795,8 +876,8 @@ The most basic example is applying scale to :ref:`CharacterBody3D<class_Characte
 
  .. code-tab:: gdscript
 
-    var current_scale: Vector3 = Vector3(1, 1, 1)
-    var scale_accum: Vector3 = Vector3(1, 1, 1)
+    var current_scale = Vector3(1, 1, 1)
+    var scale_accum = Vector3(1, 1, 1)
     
     func _process(delta):
         if Input.is_action_just_pressed("animate"):
@@ -816,7 +897,7 @@ The most basic example is applying scale to :ref:`CharacterBody3D<class_Characte
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_root_motion_scale_accumulator**\ (\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_root_motion_scale_accumulator**\ (\ ) |const| :ref:`🔗<class_AnimationMixer_method_get_root_motion_scale_accumulator>`
 
 Retrieve the blended value of the scale tracks with the :ref:`root_motion_track<class_AnimationMixer_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
 
@@ -827,13 +908,13 @@ For example, if an animation with only one key ``Vector3(1, 1, 1)`` is played in
 
  .. code-tab:: gdscript
 
-    var prev_root_motion_scale_accumulator: Vector3
+    var prev_root_motion_scale_accumulator
     
     func _process(delta):
         if Input.is_action_just_pressed("animate"):
             state_machine.travel("Animate")
-        var current_root_motion_scale_accumulator: Vector3 = animation_tree.get_root_motion_scale_accumulator()
-        var difference: Vector3 = current_root_motion_scale_accumulator - prev_root_motion_scale_accumulator
+        var current_root_motion_scale_accumulator = animation_tree.get_root_motion_scale_accumulator()
+        var difference = current_root_motion_scale_accumulator - prev_root_motion_scale_accumulator
         prev_root_motion_scale_accumulator = current_root_motion_scale_accumulator
         transform.basis = transform.basis.scaled(difference)
 
@@ -849,7 +930,7 @@ However, if the animation loops, an unintended discrete change may occur, so thi
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_animation**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`bool<class_bool>` **has_animation**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationMixer_method_has_animation>`
 
 Returns ``true`` if the **AnimationMixer** stores an :ref:`Animation<class_Animation>` with key ``name``.
 
@@ -861,7 +942,7 @@ Returns ``true`` if the **AnimationMixer** stores an :ref:`Animation<class_Anima
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_animation_library**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`bool<class_bool>` **has_animation_library**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationMixer_method_has_animation_library>`
 
 Returns ``true`` if the **AnimationMixer** stores an :ref:`AnimationLibrary<class_AnimationLibrary>` with key ``name``.
 
@@ -873,7 +954,7 @@ Returns ``true`` if the **AnimationMixer** stores an :ref:`AnimationLibrary<clas
 
 .. rst-class:: classref-method
 
-|void| **remove_animation_library**\ (\ name\: :ref:`StringName<class_StringName>`\ )
+|void| **remove_animation_library**\ (\ name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationMixer_method_remove_animation_library>`
 
 Removes the :ref:`AnimationLibrary<class_AnimationLibrary>` associated with the key ``name``.
 
@@ -885,7 +966,7 @@ Removes the :ref:`AnimationLibrary<class_AnimationLibrary>` associated with the
 
 .. rst-class:: classref-method
 
-|void| **rename_animation_library**\ (\ name\: :ref:`StringName<class_StringName>`, newname\: :ref:`StringName<class_StringName>`\ )
+|void| **rename_animation_library**\ (\ name\: :ref:`StringName<class_StringName>`, newname\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationMixer_method_rename_animation_library>`
 
 Moves the :ref:`AnimationLibrary<class_AnimationLibrary>` associated with the key ``name`` to the key ``newname``.
 

+ 62 - 32
classes/class_animationnode.rst

@@ -12,7 +12,7 @@ AnimationNode
 
 **Inherits:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-**Inherited By:** :ref:`AnimationNodeOutput<class_AnimationNodeOutput>`, :ref:`AnimationNodeSync<class_AnimationNodeSync>`, :ref:`AnimationNodeTimeScale<class_AnimationNodeTimeScale>`, :ref:`AnimationNodeTimeSeek<class_AnimationNodeTimeSeek>`, :ref:`AnimationRootNode<class_AnimationRootNode>`
+**Inherited By:** :ref:`AnimationNodeExtension<class_AnimationNodeExtension>`, :ref:`AnimationNodeOutput<class_AnimationNodeOutput>`, :ref:`AnimationNodeSync<class_AnimationNodeSync>`, :ref:`AnimationNodeTimeScale<class_AnimationNodeTimeScale>`, :ref:`AnimationNodeTimeSeek<class_AnimationNodeTimeSeek>`, :ref:`AnimationRootNode<class_AnimationRootNode>`
 
 Base class for :ref:`AnimationTree<class_AnimationTree>` nodes. Not related to scene nodes.
 
@@ -27,7 +27,7 @@ Inherit this when creating animation nodes mainly for use in :ref:`AnimationNode
 
 You can access the time information as read-only parameter which is processed and stored in the previous frame for all nodes except :ref:`AnimationNodeOutput<class_AnimationNodeOutput>`.
 
-\ **Note:** If more than two inputs exist in the **AnimationNode**, which time information takes precedence depends on the type of **AnimationNode**.
+\ **Note:** If multiple inputs exist in the **AnimationNode**, which time information takes precedence depends on the type of **AnimationNode**.
 
 ::
 
@@ -77,7 +77,7 @@ Methods
    +-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                   | :ref:`_is_parameter_read_only<class_AnimationNode_private_method__is_parameter_read_only>`\ (\ parameter\: :ref:`StringName<class_StringName>`\ ) |virtual| |const|                                                                                                                                                                                                                                                                                                     |
    +-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                 | :ref:`_process<class_AnimationNode_private_method__process>`\ (\ time\: :ref:`float<class_float>`, seek\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| |const|                                                                                                                                                                                                                              |
+   | :ref:`float<class_float>`                 | :ref:`_process<class_AnimationNode_private_method__process>`\ (\ time\: :ref:`float<class_float>`, seek\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual|                                                                                                                                                                                                                                      |
    +-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                   | :ref:`add_input<class_AnimationNode_method_add_input>`\ (\ name\: :ref:`String<class_String>`\ )                                                                                                                                                                                                                                                                                                                                                                        |
    +-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -95,8 +95,12 @@ Methods
    +-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`Variant<class_Variant>`             | :ref:`get_parameter<class_AnimationNode_method_get_parameter>`\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                                                                                                                                                                                |
    +-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                     | :ref:`get_processing_animation_tree_instance_id<class_AnimationNode_method_get_processing_animation_tree_instance_id>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                    |
+   +-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                   | :ref:`is_path_filtered<class_AnimationNode_method_is_path_filtered>`\ (\ path\: :ref:`NodePath<class_NodePath>`\ ) |const|                                                                                                                                                                                                                                                                                                                                              |
    +-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                   | :ref:`is_process_testing<class_AnimationNode_method_is_process_testing>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                                  |
+   +-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                    | :ref:`remove_input<class_AnimationNode_method_remove_input>`\ (\ index\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                                                                                                       |
    +-------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                    | :ref:`set_filter_path<class_AnimationNode_method_set_filter_path>`\ (\ path\: :ref:`NodePath<class_NodePath>`, enable\: :ref:`bool<class_bool>`\ )                                                                                                                                                                                                                                                                                                                      |
@@ -119,7 +123,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**animation_node_removed**\ (\ object_id\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ )
+**animation_node_removed**\ (\ object_id\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_AnimationNode_signal_animation_node_removed>`
 
 Emitted by nodes that inherit from this class and that have an internal tree when one of their animation nodes removes. The animation nodes that emit this signal are :ref:`AnimationNodeBlendSpace1D<class_AnimationNodeBlendSpace1D>`, :ref:`AnimationNodeBlendSpace2D<class_AnimationNodeBlendSpace2D>`, :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`, and :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
@@ -131,7 +135,7 @@ Emitted by nodes that inherit from this class and that have an internal tree whe
 
 .. rst-class:: classref-signal
 
-**animation_node_renamed**\ (\ object_id\: :ref:`int<class_int>`, old_name\: :ref:`String<class_String>`, new_name\: :ref:`String<class_String>`\ )
+**animation_node_renamed**\ (\ object_id\: :ref:`int<class_int>`, old_name\: :ref:`String<class_String>`, new_name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_AnimationNode_signal_animation_node_renamed>`
 
 Emitted by nodes that inherit from this class and that have an internal tree when one of their animation node names changes. The animation nodes that emit this signal are :ref:`AnimationNodeBlendSpace1D<class_AnimationNodeBlendSpace1D>`, :ref:`AnimationNodeBlendSpace2D<class_AnimationNodeBlendSpace2D>`, :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`, and :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
@@ -143,7 +147,7 @@ Emitted by nodes that inherit from this class and that have an internal tree whe
 
 .. rst-class:: classref-signal
 
-**tree_changed**\ (\ )
+**tree_changed**\ (\ ) :ref:`🔗<class_AnimationNode_signal_tree_changed>`
 
 Emitted by nodes that inherit from this class and that have an internal tree when one of their animation nodes changes. The animation nodes that emit this signal are :ref:`AnimationNodeBlendSpace1D<class_AnimationNodeBlendSpace1D>`, :ref:`AnimationNodeBlendSpace2D<class_AnimationNodeBlendSpace2D>`, :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`, :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>` and :ref:`AnimationNodeTransition<class_AnimationNodeTransition>`.
 
@@ -160,7 +164,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **FilterAction**:
+enum **FilterAction**: :ref:`🔗<enum_AnimationNode_FilterAction>`
 
 .. _class_AnimationNode_constant_FILTER_IGNORE:
 
@@ -207,7 +211,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **filter_enabled**
+:ref:`bool<class_bool>` **filter_enabled** :ref:`🔗<class_AnimationNode_property_filter_enabled>`
 
 .. rst-class:: classref-property-setget
 
@@ -229,7 +233,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`String<class_String>` **_get_caption**\ (\ ) |virtual| |const|
+:ref:`String<class_String>` **_get_caption**\ (\ ) |virtual| |const| :ref:`🔗<class_AnimationNode_private_method__get_caption>`
 
 When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to override the text caption for this animation node.
 
@@ -241,7 +245,7 @@ When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implemen
 
 .. rst-class:: classref-method
 
-:ref:`AnimationNode<class_AnimationNode>` **_get_child_by_name**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |virtual| |const|
+:ref:`AnimationNode<class_AnimationNode>` **_get_child_by_name**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |virtual| |const| :ref:`🔗<class_AnimationNode_private_method__get_child_by_name>`
 
 When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return a child animation node by its ``name``.
 
@@ -253,7 +257,7 @@ When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implemen
 
 .. rst-class:: classref-method
 
-:ref:`Dictionary<class_Dictionary>` **_get_child_nodes**\ (\ ) |virtual| |const|
+:ref:`Dictionary<class_Dictionary>` **_get_child_nodes**\ (\ ) |virtual| |const| :ref:`🔗<class_AnimationNode_private_method__get_child_nodes>`
 
 When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return all child animation nodes in order as a ``name: node`` dictionary.
 
@@ -265,7 +269,7 @@ When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implemen
 
 .. rst-class:: classref-method
 
-:ref:`Variant<class_Variant>` **_get_parameter_default_value**\ (\ parameter\: :ref:`StringName<class_StringName>`\ ) |virtual| |const|
+:ref:`Variant<class_Variant>` **_get_parameter_default_value**\ (\ parameter\: :ref:`StringName<class_StringName>`\ ) |virtual| |const| :ref:`🔗<class_AnimationNode_private_method__get_parameter_default_value>`
 
 When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return the default value of a ``parameter``. Parameters are custom local memory used for your animation nodes, given a resource can be reused in multiple trees.
 
@@ -277,9 +281,9 @@ When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implemen
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>` **_get_parameter_list**\ (\ ) |virtual| |const|
+:ref:`Array<class_Array>` **_get_parameter_list**\ (\ ) |virtual| |const| :ref:`🔗<class_AnimationNode_private_method__get_parameter_list>`
 
-When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return a list of the properties on this animation node. Parameters are custom local memory used for your animation nodes, given a resource can be reused in multiple trees. Format is similar to :ref:`Object.get_property_list<class_Object_method_get_property_list>`.
+When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return a list of the properties on this animation node. Parameters are custom local memory used for your animation nodes, given a resource can be reused in multiple trees. Format is similar to :ref:`Object.get_property_list()<class_Object_method_get_property_list>`.
 
 .. rst-class:: classref-item-separator
 
@@ -289,7 +293,7 @@ When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implemen
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **_has_filter**\ (\ ) |virtual| |const|
+:ref:`bool<class_bool>` **_has_filter**\ (\ ) |virtual| |const| :ref:`🔗<class_AnimationNode_private_method__has_filter>`
 
 When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return whether the blend tree editor should display filter editing on this animation node.
 
@@ -301,7 +305,7 @@ When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implemen
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **_is_parameter_read_only**\ (\ parameter\: :ref:`StringName<class_StringName>`\ ) |virtual| |const|
+:ref:`bool<class_bool>` **_is_parameter_read_only**\ (\ parameter\: :ref:`StringName<class_StringName>`\ ) |virtual| |const| :ref:`🔗<class_AnimationNode_private_method__is_parameter_read_only>`
 
 When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to return whether the ``parameter`` is read-only. Parameters are custom local memory used for your animation nodes, given a resource can be reused in multiple trees.
 
@@ -313,13 +317,13 @@ When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implemen
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **_process**\ (\ time\: :ref:`float<class_float>`, seek\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| |const|
+:ref:`float<class_float>` **_process**\ (\ time\: :ref:`float<class_float>`, seek\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| :ref:`🔗<class_AnimationNode_private_method__process>`
 
 **Deprecated:** Currently this is mostly useless as there is a lack of many APIs to extend AnimationNode by GDScript. It is planned that a more flexible API using structures will be provided in the future.
 
 When inheriting from :ref:`AnimationRootNode<class_AnimationRootNode>`, implement this virtual method to run some code when this animation node is processed. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute.
 
-Here, call the :ref:`blend_input<class_AnimationNode_method_blend_input>`, :ref:`blend_node<class_AnimationNode_method_blend_node>` or :ref:`blend_animation<class_AnimationNode_method_blend_animation>` functions. You can also use :ref:`get_parameter<class_AnimationNode_method_get_parameter>` and :ref:`set_parameter<class_AnimationNode_method_set_parameter>` to modify local memory.
+Here, call the :ref:`blend_input()<class_AnimationNode_method_blend_input>`, :ref:`blend_node()<class_AnimationNode_method_blend_node>` or :ref:`blend_animation()<class_AnimationNode_method_blend_animation>` functions. You can also use :ref:`get_parameter()<class_AnimationNode_method_get_parameter>` and :ref:`set_parameter()<class_AnimationNode_method_set_parameter>` to modify local memory.
 
 This function should return the delta.
 
@@ -331,7 +335,7 @@ This function should return the delta.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **add_input**\ (\ name\: :ref:`String<class_String>`\ )
+:ref:`bool<class_bool>` **add_input**\ (\ name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_AnimationNode_method_add_input>`
 
 Adds an input to the animation node. This is only useful for animation nodes created for use in an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`. If the addition fails, returns ``false``.
 
@@ -343,7 +347,7 @@ Adds an input to the animation node. This is only useful for animation nodes cre
 
 .. rst-class:: classref-method
 
-|void| **blend_animation**\ (\ animation\: :ref:`StringName<class_StringName>`, time\: :ref:`float<class_float>`, delta\: :ref:`float<class_float>`, seeked\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, blend\: :ref:`float<class_float>`, looped_flag\: :ref:`LoopedFlag<enum_Animation_LoopedFlag>` = 0\ )
+|void| **blend_animation**\ (\ animation\: :ref:`StringName<class_StringName>`, time\: :ref:`float<class_float>`, delta\: :ref:`float<class_float>`, seeked\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, blend\: :ref:`float<class_float>`, looped_flag\: :ref:`LoopedFlag<enum_Animation_LoopedFlag>` = 0\ ) :ref:`🔗<class_AnimationNode_method_blend_animation>`
 
 Blend an animation by ``blend`` amount (name must be valid in the linked :ref:`AnimationPlayer<class_AnimationPlayer>`). A ``time`` and ``delta`` may be passed, as well as whether ``seeked`` happened.
 
@@ -357,7 +361,7 @@ A ``looped_flag`` is used by internal processing immediately after the loop. See
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **blend_input**\ (\ input_index\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, seek\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, blend\: :ref:`float<class_float>`, filter\: :ref:`FilterAction<enum_AnimationNode_FilterAction>` = 0, sync\: :ref:`bool<class_bool>` = true, test_only\: :ref:`bool<class_bool>` = false\ )
+:ref:`float<class_float>` **blend_input**\ (\ input_index\: :ref:`int<class_int>`, time\: :ref:`float<class_float>`, seek\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, blend\: :ref:`float<class_float>`, filter\: :ref:`FilterAction<enum_AnimationNode_FilterAction>` = 0, sync\: :ref:`bool<class_bool>` = true, test_only\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AnimationNode_method_blend_input>`
 
 Blend an input. This is only useful for animation nodes created for an :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`. The ``time`` parameter is a relative delta, unless ``seek`` is ``true``, in which case it is absolute. A filter mode may be optionally passed (see :ref:`FilterAction<enum_AnimationNode_FilterAction>` for options).
 
@@ -369,7 +373,7 @@ Blend an input. This is only useful for animation nodes created for an :ref:`Ani
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **blend_node**\ (\ name\: :ref:`StringName<class_StringName>`, node\: :ref:`AnimationNode<class_AnimationNode>`, time\: :ref:`float<class_float>`, seek\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, blend\: :ref:`float<class_float>`, filter\: :ref:`FilterAction<enum_AnimationNode_FilterAction>` = 0, sync\: :ref:`bool<class_bool>` = true, test_only\: :ref:`bool<class_bool>` = false\ )
+:ref:`float<class_float>` **blend_node**\ (\ name\: :ref:`StringName<class_StringName>`, node\: :ref:`AnimationNode<class_AnimationNode>`, time\: :ref:`float<class_float>`, seek\: :ref:`bool<class_bool>`, is_external_seeking\: :ref:`bool<class_bool>`, blend\: :ref:`float<class_float>`, filter\: :ref:`FilterAction<enum_AnimationNode_FilterAction>` = 0, sync\: :ref:`bool<class_bool>` = true, test_only\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AnimationNode_method_blend_node>`
 
 Blend another animation node (in case this animation node contains child animation nodes). This function is only useful if you inherit from :ref:`AnimationRootNode<class_AnimationRootNode>` instead, otherwise editors will not display your animation node for addition.
 
@@ -381,7 +385,7 @@ Blend another animation node (in case this animation node contains child animati
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **find_input**\ (\ name\: :ref:`String<class_String>`\ ) |const|
+:ref:`int<class_int>` **find_input**\ (\ name\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_AnimationNode_method_find_input>`
 
 Returns the input index which corresponds to ``name``. If not found, returns ``-1``.
 
@@ -393,7 +397,7 @@ Returns the input index which corresponds to ``name``. If not found, returns ``-
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_input_count**\ (\ ) |const|
+:ref:`int<class_int>` **get_input_count**\ (\ ) |const| :ref:`🔗<class_AnimationNode_method_get_input_count>`
 
 Amount of inputs in this animation node, only useful for animation nodes that go into :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
@@ -405,7 +409,7 @@ Amount of inputs in this animation node, only useful for animation nodes that go
 
 .. rst-class:: classref-method
 
-:ref:`String<class_String>` **get_input_name**\ (\ input\: :ref:`int<class_int>`\ ) |const|
+:ref:`String<class_String>` **get_input_name**\ (\ input\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNode_method_get_input_name>`
 
 Gets the name of an input by index.
 
@@ -417,7 +421,7 @@ Gets the name of an input by index.
 
 .. rst-class:: classref-method
 
-:ref:`Variant<class_Variant>` **get_parameter**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`Variant<class_Variant>` **get_parameter**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationNode_method_get_parameter>`
 
 Gets the value of a parameter. Parameters are custom local memory used for your animation nodes, given a resource can be reused in multiple trees.
 
@@ -425,13 +429,39 @@ Gets the value of a parameter. Parameters are custom local memory used for your
 
 ----
 
+.. _class_AnimationNode_method_get_processing_animation_tree_instance_id:
+
+.. rst-class:: classref-method
+
+:ref:`int<class_int>` **get_processing_animation_tree_instance_id**\ (\ ) |const| :ref:`🔗<class_AnimationNode_method_get_processing_animation_tree_instance_id>`
+
+Returns the object id of the :ref:`AnimationTree<class_AnimationTree>` that owns this node.
+
+\ **Note:** This method should only be called from within the :ref:`AnimationNodeExtension._process_animation_node()<class_AnimationNodeExtension_private_method__process_animation_node>` method, and will return an invalid id otherwise.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AnimationNode_method_is_path_filtered:
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_path_filtered**\ (\ path\: :ref:`NodePath<class_NodePath>`\ ) |const|
+:ref:`bool<class_bool>` **is_path_filtered**\ (\ path\: :ref:`NodePath<class_NodePath>`\ ) |const| :ref:`🔗<class_AnimationNode_method_is_path_filtered>`
+
+Returns ``true`` if the given path is filtered.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationNode_method_is_process_testing:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **is_process_testing**\ (\ ) |const| :ref:`🔗<class_AnimationNode_method_is_process_testing>`
 
-Returns whether the given path is filtered.
+Returns ``true`` if this animation node is being processed in test-only mode.
 
 .. rst-class:: classref-item-separator
 
@@ -441,7 +471,7 @@ Returns whether the given path is filtered.
 
 .. rst-class:: classref-method
 
-|void| **remove_input**\ (\ index\: :ref:`int<class_int>`\ )
+|void| **remove_input**\ (\ index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AnimationNode_method_remove_input>`
 
 Removes an input, call this only when inactive.
 
@@ -453,7 +483,7 @@ Removes an input, call this only when inactive.
 
 .. rst-class:: classref-method
 
-|void| **set_filter_path**\ (\ path\: :ref:`NodePath<class_NodePath>`, enable\: :ref:`bool<class_bool>`\ )
+|void| **set_filter_path**\ (\ path\: :ref:`NodePath<class_NodePath>`, enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AnimationNode_method_set_filter_path>`
 
 Adds or removes a path for the filter.
 
@@ -465,7 +495,7 @@ Adds or removes a path for the filter.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **set_input_name**\ (\ input\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ )
+:ref:`bool<class_bool>` **set_input_name**\ (\ input\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_AnimationNode_method_set_input_name>`
 
 Sets the name of the input at the given ``input`` index. If the setting fails, returns ``false``.
 
@@ -477,7 +507,7 @@ Sets the name of the input at the given ``input`` index. If the setting fails, r
 
 .. rst-class:: classref-method
 
-|void| **set_parameter**\ (\ name\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ )
+|void| **set_parameter**\ (\ name\: :ref:`StringName<class_StringName>`, value\: :ref:`Variant<class_Variant>`\ ) :ref:`🔗<class_AnimationNode_method_set_parameter>`
 
 Sets a custom parameter. These are used as local memory, because resources can be reused across the tree or scenes.
 

+ 1 - 1
classes/class_animationnodeadd3.rst

@@ -38,7 +38,7 @@ Tutorials
 
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 33 - 10
classes/class_animationnodeanimation.rst

@@ -28,9 +28,9 @@ Tutorials
 
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
-- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/2748>`__
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -40,6 +40,8 @@ Properties
 .. table::
    :widths: auto
 
+   +-------------------------------------------------------+---------------------------------------------------------------------------------------+-----------+
+   | :ref:`bool<class_bool>`                               | :ref:`advance_on_start<class_AnimationNodeAnimation_property_advance_on_start>`       | ``false`` |
    +-------------------------------------------------------+---------------------------------------------------------------------------------------+-----------+
    | :ref:`StringName<class_StringName>`                   | :ref:`animation<class_AnimationNodeAnimation_property_animation>`                     | ``&""``   |
    +-------------------------------------------------------+---------------------------------------------------------------------------------------+-----------+
@@ -69,7 +71,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **PlayMode**:
+enum **PlayMode**: :ref:`🔗<enum_AnimationNodeAnimation_PlayMode>`
 
 .. _class_AnimationNodeAnimation_constant_PLAY_MODE_FORWARD:
 
@@ -96,11 +98,30 @@ Plays animation in backward direction.
 Property Descriptions
 ---------------------
 
+.. _class_AnimationNodeAnimation_property_advance_on_start:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **advance_on_start** = ``false`` :ref:`🔗<class_AnimationNodeAnimation_property_advance_on_start>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_advance_on_start**\ (\ value\: :ref:`bool<class_bool>`\ )
+- :ref:`bool<class_bool>` **is_advance_on_start**\ (\ )
+
+If ``true``, on receiving a request to play an animation from the start, the first frame is not drawn, but only processed, and playback starts from the next frame.
+
+See also the notes of :ref:`AnimationPlayer.play()<class_AnimationPlayer_method_play>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AnimationNodeAnimation_property_animation:
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **animation** = ``&""``
+:ref:`StringName<class_StringName>` **animation** = ``&""`` :ref:`🔗<class_AnimationNodeAnimation_property_animation>`
 
 .. rst-class:: classref-property-setget
 
@@ -117,7 +138,7 @@ Animation to use as an output. It is one of the animations provided by :ref:`Ani
 
 .. rst-class:: classref-property
 
-:ref:`LoopMode<enum_Animation_LoopMode>` **loop_mode**
+:ref:`LoopMode<enum_Animation_LoopMode>` **loop_mode** :ref:`🔗<class_AnimationNodeAnimation_property_loop_mode>`
 
 .. rst-class:: classref-property-setget
 
@@ -126,6 +147,8 @@ Animation to use as an output. It is one of the animations provided by :ref:`Ani
 
 If :ref:`use_custom_timeline<class_AnimationNodeAnimation_property_use_custom_timeline>` is ``true``, override the loop settings of the original :ref:`Animation<class_Animation>` resource with the value.
 
+\ **Note:** If the :ref:`Animation.loop_mode<class_Animation_property_loop_mode>` isn't set to looping, the :ref:`Animation.track_set_interpolation_loop_wrap()<class_Animation_method_track_set_interpolation_loop_wrap>` option will not be respected. If you cannot get the expected behavior, consider duplicating the :ref:`Animation<class_Animation>` resource and changing the loop settings.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -134,7 +157,7 @@ If :ref:`use_custom_timeline<class_AnimationNodeAnimation_property_use_custom_ti
 
 .. rst-class:: classref-property
 
-:ref:`PlayMode<enum_AnimationNodeAnimation_PlayMode>` **play_mode** = ``0``
+:ref:`PlayMode<enum_AnimationNodeAnimation_PlayMode>` **play_mode** = ``0`` :ref:`🔗<class_AnimationNodeAnimation_property_play_mode>`
 
 .. rst-class:: classref-property-setget
 
@@ -151,7 +174,7 @@ Determines the playback direction of the animation.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **start_offset**
+:ref:`float<class_float>` **start_offset** :ref:`🔗<class_AnimationNodeAnimation_property_start_offset>`
 
 .. rst-class:: classref-property-setget
 
@@ -170,7 +193,7 @@ This is useful for adjusting which foot steps first in 3D walking animations.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **stretch_time_scale**
+:ref:`bool<class_bool>` **stretch_time_scale** :ref:`🔗<class_AnimationNodeAnimation_property_stretch_time_scale>`
 
 .. rst-class:: classref-property-setget
 
@@ -191,7 +214,7 @@ If ``false``, the original animation length is respected. If you set the loop to
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **timeline_length**
+:ref:`float<class_float>` **timeline_length** :ref:`🔗<class_AnimationNodeAnimation_property_timeline_length>`
 
 .. rst-class:: classref-property-setget
 
@@ -208,7 +231,7 @@ If :ref:`use_custom_timeline<class_AnimationNodeAnimation_property_use_custom_ti
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **use_custom_timeline** = ``false``
+:ref:`bool<class_bool>` **use_custom_timeline** = ``false`` :ref:`🔗<class_AnimationNodeAnimation_property_use_custom_timeline>`
 
 .. rst-class:: classref-property-setget
 

+ 2 - 2
classes/class_animationnodeblend2.rst

@@ -30,9 +30,9 @@ Tutorials
 
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
-- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/2748>`__
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 17 - 17
classes/class_animationnodeblendspace1d.rst

@@ -21,7 +21,7 @@ Description
 
 A resource used by :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
-\ **AnimationNodeBlendSpace1D** represents a virtual axis on which any type of :ref:`AnimationRootNode<class_AnimationRootNode>`\ s can be added using :ref:`add_blend_point<class_AnimationNodeBlendSpace1D_method_add_blend_point>`. Outputs the linear blend of the two :ref:`AnimationRootNode<class_AnimationRootNode>`\ s adjacent to the current value.
+\ **AnimationNodeBlendSpace1D** represents a virtual axis on which any type of :ref:`AnimationRootNode<class_AnimationRootNode>`\ s can be added using :ref:`add_blend_point()<class_AnimationNodeBlendSpace1D_method_add_blend_point>`. Outputs the linear blend of the two :ref:`AnimationRootNode<class_AnimationRootNode>`\ s adjacent to the current value.
 
 You can set the extents of the axis with :ref:`min_space<class_AnimationNodeBlendSpace1D_property_min_space>` and :ref:`max_space<class_AnimationNodeBlendSpace1D_property_max_space>`.
 
@@ -91,7 +91,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **BlendMode**:
+enum **BlendMode**: :ref:`🔗<enum_AnimationNodeBlendSpace1D_BlendMode>`
 
 .. _class_AnimationNodeBlendSpace1D_constant_BLEND_MODE_INTERPOLATED:
 
@@ -130,7 +130,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`BlendMode<enum_AnimationNodeBlendSpace1D_BlendMode>` **blend_mode** = ``0``
+:ref:`BlendMode<enum_AnimationNodeBlendSpace1D_BlendMode>` **blend_mode** = ``0`` :ref:`🔗<class_AnimationNodeBlendSpace1D_property_blend_mode>`
 
 .. rst-class:: classref-property-setget
 
@@ -147,14 +147,14 @@ Controls the interpolation between animations. See :ref:`BlendMode<enum_Animatio
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **max_space** = ``1.0``
+:ref:`float<class_float>` **max_space** = ``1.0`` :ref:`🔗<class_AnimationNodeBlendSpace1D_property_max_space>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_max_space**\ (\ value\: :ref:`float<class_float>`\ )
 - :ref:`float<class_float>` **get_max_space**\ (\ )
 
-The blend space's axis's upper limit for the points' position. See :ref:`add_blend_point<class_AnimationNodeBlendSpace1D_method_add_blend_point>`.
+The blend space's axis's upper limit for the points' position. See :ref:`add_blend_point()<class_AnimationNodeBlendSpace1D_method_add_blend_point>`.
 
 .. rst-class:: classref-item-separator
 
@@ -164,14 +164,14 @@ The blend space's axis's upper limit for the points' position. See :ref:`add_ble
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **min_space** = ``-1.0``
+:ref:`float<class_float>` **min_space** = ``-1.0`` :ref:`🔗<class_AnimationNodeBlendSpace1D_property_min_space>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_min_space**\ (\ value\: :ref:`float<class_float>`\ )
 - :ref:`float<class_float>` **get_min_space**\ (\ )
 
-The blend space's axis's lower limit for the points' position. See :ref:`add_blend_point<class_AnimationNodeBlendSpace1D_method_add_blend_point>`.
+The blend space's axis's lower limit for the points' position. See :ref:`add_blend_point()<class_AnimationNodeBlendSpace1D_method_add_blend_point>`.
 
 .. rst-class:: classref-item-separator
 
@@ -181,7 +181,7 @@ The blend space's axis's lower limit for the points' position. See :ref:`add_ble
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **snap** = ``0.1``
+:ref:`float<class_float>` **snap** = ``0.1`` :ref:`🔗<class_AnimationNodeBlendSpace1D_property_snap>`
 
 .. rst-class:: classref-property-setget
 
@@ -198,7 +198,7 @@ Position increment to snap to when moving a point on the axis.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **sync** = ``false``
+:ref:`bool<class_bool>` **sync** = ``false`` :ref:`🔗<class_AnimationNodeBlendSpace1D_property_sync>`
 
 .. rst-class:: classref-property-setget
 
@@ -217,7 +217,7 @@ If ``true``, forcing the blended animations to advance frame.
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **value_label** = ``"value"``
+:ref:`String<class_String>` **value_label** = ``"value"`` :ref:`🔗<class_AnimationNodeBlendSpace1D_property_value_label>`
 
 .. rst-class:: classref-property-setget
 
@@ -239,7 +239,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **add_blend_point**\ (\ node\: :ref:`AnimationRootNode<class_AnimationRootNode>`, pos\: :ref:`float<class_float>`, at_index\: :ref:`int<class_int>` = -1\ )
+|void| **add_blend_point**\ (\ node\: :ref:`AnimationRootNode<class_AnimationRootNode>`, pos\: :ref:`float<class_float>`, at_index\: :ref:`int<class_int>` = -1\ ) :ref:`🔗<class_AnimationNodeBlendSpace1D_method_add_blend_point>`
 
 Adds a new point that represents a ``node`` on the virtual axis at a given position set by ``pos``. You can insert it at a specific index using the ``at_index`` argument. If you use the default value for ``at_index``, the point is inserted at the end of the blend points array.
 
@@ -251,7 +251,7 @@ Adds a new point that represents a ``node`` on the virtual axis at a given posit
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_blend_point_count**\ (\ ) |const|
+:ref:`int<class_int>` **get_blend_point_count**\ (\ ) |const| :ref:`🔗<class_AnimationNodeBlendSpace1D_method_get_blend_point_count>`
 
 Returns the number of points on the blend axis.
 
@@ -263,7 +263,7 @@ Returns the number of points on the blend axis.
 
 .. rst-class:: classref-method
 
-:ref:`AnimationRootNode<class_AnimationRootNode>` **get_blend_point_node**\ (\ point\: :ref:`int<class_int>`\ ) |const|
+:ref:`AnimationRootNode<class_AnimationRootNode>` **get_blend_point_node**\ (\ point\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNodeBlendSpace1D_method_get_blend_point_node>`
 
 Returns the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at index ``point``.
 
@@ -275,7 +275,7 @@ Returns the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_blend_point_position**\ (\ point\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_blend_point_position**\ (\ point\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNodeBlendSpace1D_method_get_blend_point_position>`
 
 Returns the position of the point at index ``point``.
 
@@ -287,7 +287,7 @@ Returns the position of the point at index ``point``.
 
 .. rst-class:: classref-method
 
-|void| **remove_blend_point**\ (\ point\: :ref:`int<class_int>`\ )
+|void| **remove_blend_point**\ (\ point\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AnimationNodeBlendSpace1D_method_remove_blend_point>`
 
 Removes the point at index ``point`` from the blend axis.
 
@@ -299,7 +299,7 @@ Removes the point at index ``point`` from the blend axis.
 
 .. rst-class:: classref-method
 
-|void| **set_blend_point_node**\ (\ point\: :ref:`int<class_int>`, node\: :ref:`AnimationRootNode<class_AnimationRootNode>`\ )
+|void| **set_blend_point_node**\ (\ point\: :ref:`int<class_int>`, node\: :ref:`AnimationRootNode<class_AnimationRootNode>`\ ) :ref:`🔗<class_AnimationNodeBlendSpace1D_method_set_blend_point_node>`
 
 Changes the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at index ``point``.
 
@@ -311,7 +311,7 @@ Changes the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at
 
 .. rst-class:: classref-method
 
-|void| **set_blend_point_position**\ (\ point\: :ref:`int<class_int>`, pos\: :ref:`float<class_float>`\ )
+|void| **set_blend_point_position**\ (\ point\: :ref:`int<class_int>`, pos\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AnimationNodeBlendSpace1D_method_set_blend_point_position>`
 
 Updates the position of the point at index ``point`` on the blend axis.
 

+ 28 - 28
classes/class_animationnodeblendspace2d.rst

@@ -21,9 +21,9 @@ Description
 
 A resource used by :ref:`AnimationNodeBlendTree<class_AnimationNodeBlendTree>`.
 
-\ :ref:`AnimationNodeBlendSpace1D<class_AnimationNodeBlendSpace1D>` represents a virtual 2D space on which :ref:`AnimationRootNode<class_AnimationRootNode>`\ s are placed. Outputs the linear blend of the three adjacent animations using a :ref:`Vector2<class_Vector2>` weight. Adjacent in this context means the three :ref:`AnimationRootNode<class_AnimationRootNode>`\ s making up the triangle that contains the current value.
+\ **AnimationNodeBlendSpace2D** represents a virtual 2D space on which :ref:`AnimationRootNode<class_AnimationRootNode>`\ s are placed. Outputs the linear blend of the three adjacent animations using a :ref:`Vector2<class_Vector2>` weight. Adjacent in this context means the three :ref:`AnimationRootNode<class_AnimationRootNode>`\ s making up the triangle that contains the current value.
 
-You can add vertices to the blend space with :ref:`add_blend_point<class_AnimationNodeBlendSpace2D_method_add_blend_point>` and automatically triangulate it by setting :ref:`auto_triangles<class_AnimationNodeBlendSpace2D_property_auto_triangles>` to ``true``. Otherwise, use :ref:`add_triangle<class_AnimationNodeBlendSpace2D_method_add_triangle>` and :ref:`remove_triangle<class_AnimationNodeBlendSpace2D_method_remove_triangle>` to triangulate the blend space by hand.
+You can add vertices to the blend space with :ref:`add_blend_point()<class_AnimationNodeBlendSpace2D_method_add_blend_point>` and automatically triangulate it by setting :ref:`auto_triangles<class_AnimationNodeBlendSpace2D_property_auto_triangles>` to ``true``. Otherwise, use :ref:`add_triangle()<class_AnimationNodeBlendSpace2D_method_add_triangle>` and :ref:`remove_triangle()<class_AnimationNodeBlendSpace2D_method_remove_triangle>` to triangulate the blend space by hand.
 
 .. rst-class:: classref-introduction-group
 
@@ -32,7 +32,7 @@ Tutorials
 
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -105,7 +105,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**triangles_updated**\ (\ )
+**triangles_updated**\ (\ ) :ref:`🔗<class_AnimationNodeBlendSpace2D_signal_triangles_updated>`
 
 Emitted every time the blend space's triangles are created, removed, or when one of their vertices changes position.
 
@@ -122,7 +122,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **BlendMode**:
+enum **BlendMode**: :ref:`🔗<enum_AnimationNodeBlendSpace2D_BlendMode>`
 
 .. _class_AnimationNodeBlendSpace2D_constant_BLEND_MODE_INTERPOLATED:
 
@@ -161,14 +161,14 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **auto_triangles** = ``true``
+:ref:`bool<class_bool>` **auto_triangles** = ``true`` :ref:`🔗<class_AnimationNodeBlendSpace2D_property_auto_triangles>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_auto_triangles**\ (\ value\: :ref:`bool<class_bool>`\ )
 - :ref:`bool<class_bool>` **get_auto_triangles**\ (\ )
 
-If ``true``, the blend space is triangulated automatically. The mesh updates every time you add or remove points with :ref:`add_blend_point<class_AnimationNodeBlendSpace2D_method_add_blend_point>` and :ref:`remove_blend_point<class_AnimationNodeBlendSpace2D_method_remove_blend_point>`.
+If ``true``, the blend space is triangulated automatically. The mesh updates every time you add or remove points with :ref:`add_blend_point()<class_AnimationNodeBlendSpace2D_method_add_blend_point>` and :ref:`remove_blend_point()<class_AnimationNodeBlendSpace2D_method_remove_blend_point>`.
 
 .. rst-class:: classref-item-separator
 
@@ -178,7 +178,7 @@ If ``true``, the blend space is triangulated automatically. The mesh updates eve
 
 .. rst-class:: classref-property
 
-:ref:`BlendMode<enum_AnimationNodeBlendSpace2D_BlendMode>` **blend_mode** = ``0``
+:ref:`BlendMode<enum_AnimationNodeBlendSpace2D_BlendMode>` **blend_mode** = ``0`` :ref:`🔗<class_AnimationNodeBlendSpace2D_property_blend_mode>`
 
 .. rst-class:: classref-property-setget
 
@@ -195,14 +195,14 @@ Controls the interpolation between animations. See :ref:`BlendMode<enum_Animatio
 
 .. rst-class:: classref-property
 
-:ref:`Vector2<class_Vector2>` **max_space** = ``Vector2(1, 1)``
+:ref:`Vector2<class_Vector2>` **max_space** = ``Vector2(1, 1)`` :ref:`🔗<class_AnimationNodeBlendSpace2D_property_max_space>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_max_space**\ (\ value\: :ref:`Vector2<class_Vector2>`\ )
 - :ref:`Vector2<class_Vector2>` **get_max_space**\ (\ )
 
-The blend space's X and Y axes' upper limit for the points' position. See :ref:`add_blend_point<class_AnimationNodeBlendSpace2D_method_add_blend_point>`.
+The blend space's X and Y axes' upper limit for the points' position. See :ref:`add_blend_point()<class_AnimationNodeBlendSpace2D_method_add_blend_point>`.
 
 .. rst-class:: classref-item-separator
 
@@ -212,14 +212,14 @@ The blend space's X and Y axes' upper limit for the points' position. See :ref:`
 
 .. rst-class:: classref-property
 
-:ref:`Vector2<class_Vector2>` **min_space** = ``Vector2(-1, -1)``
+:ref:`Vector2<class_Vector2>` **min_space** = ``Vector2(-1, -1)`` :ref:`🔗<class_AnimationNodeBlendSpace2D_property_min_space>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_min_space**\ (\ value\: :ref:`Vector2<class_Vector2>`\ )
 - :ref:`Vector2<class_Vector2>` **get_min_space**\ (\ )
 
-The blend space's X and Y axes' lower limit for the points' position. See :ref:`add_blend_point<class_AnimationNodeBlendSpace2D_method_add_blend_point>`.
+The blend space's X and Y axes' lower limit for the points' position. See :ref:`add_blend_point()<class_AnimationNodeBlendSpace2D_method_add_blend_point>`.
 
 .. rst-class:: classref-item-separator
 
@@ -229,7 +229,7 @@ The blend space's X and Y axes' lower limit for the points' position. See :ref:`
 
 .. rst-class:: classref-property
 
-:ref:`Vector2<class_Vector2>` **snap** = ``Vector2(0.1, 0.1)``
+:ref:`Vector2<class_Vector2>` **snap** = ``Vector2(0.1, 0.1)`` :ref:`🔗<class_AnimationNodeBlendSpace2D_property_snap>`
 
 .. rst-class:: classref-property-setget
 
@@ -246,7 +246,7 @@ Position increment to snap to when moving a point.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **sync** = ``false``
+:ref:`bool<class_bool>` **sync** = ``false`` :ref:`🔗<class_AnimationNodeBlendSpace2D_property_sync>`
 
 .. rst-class:: classref-property-setget
 
@@ -265,7 +265,7 @@ If ``true``, forcing the blended animations to advance frame.
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **x_label** = ``"x"``
+:ref:`String<class_String>` **x_label** = ``"x"`` :ref:`🔗<class_AnimationNodeBlendSpace2D_property_x_label>`
 
 .. rst-class:: classref-property-setget
 
@@ -282,7 +282,7 @@ Name of the blend space's X axis.
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **y_label** = ``"y"``
+:ref:`String<class_String>` **y_label** = ``"y"`` :ref:`🔗<class_AnimationNodeBlendSpace2D_property_y_label>`
 
 .. rst-class:: classref-property-setget
 
@@ -304,7 +304,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **add_blend_point**\ (\ node\: :ref:`AnimationRootNode<class_AnimationRootNode>`, pos\: :ref:`Vector2<class_Vector2>`, at_index\: :ref:`int<class_int>` = -1\ )
+|void| **add_blend_point**\ (\ node\: :ref:`AnimationRootNode<class_AnimationRootNode>`, pos\: :ref:`Vector2<class_Vector2>`, at_index\: :ref:`int<class_int>` = -1\ ) :ref:`🔗<class_AnimationNodeBlendSpace2D_method_add_blend_point>`
 
 Adds a new point that represents a ``node`` at the position set by ``pos``. You can insert it at a specific index using the ``at_index`` argument. If you use the default value for ``at_index``, the point is inserted at the end of the blend points array.
 
@@ -316,7 +316,7 @@ Adds a new point that represents a ``node`` at the position set by ``pos``. You
 
 .. rst-class:: classref-method
 
-|void| **add_triangle**\ (\ x\: :ref:`int<class_int>`, y\: :ref:`int<class_int>`, z\: :ref:`int<class_int>`, at_index\: :ref:`int<class_int>` = -1\ )
+|void| **add_triangle**\ (\ x\: :ref:`int<class_int>`, y\: :ref:`int<class_int>`, z\: :ref:`int<class_int>`, at_index\: :ref:`int<class_int>` = -1\ ) :ref:`🔗<class_AnimationNodeBlendSpace2D_method_add_triangle>`
 
 Creates a new triangle using three points ``x``, ``y``, and ``z``. Triangles can overlap. You can insert the triangle at a specific index using the ``at_index`` argument. If you use the default value for ``at_index``, the point is inserted at the end of the blend points array.
 
@@ -328,7 +328,7 @@ Creates a new triangle using three points ``x``, ``y``, and ``z``. Triangles can
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_blend_point_count**\ (\ ) |const|
+:ref:`int<class_int>` **get_blend_point_count**\ (\ ) |const| :ref:`🔗<class_AnimationNodeBlendSpace2D_method_get_blend_point_count>`
 
 Returns the number of points in the blend space.
 
@@ -340,7 +340,7 @@ Returns the number of points in the blend space.
 
 .. rst-class:: classref-method
 
-:ref:`AnimationRootNode<class_AnimationRootNode>` **get_blend_point_node**\ (\ point\: :ref:`int<class_int>`\ ) |const|
+:ref:`AnimationRootNode<class_AnimationRootNode>` **get_blend_point_node**\ (\ point\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNodeBlendSpace2D_method_get_blend_point_node>`
 
 Returns the :ref:`AnimationRootNode<class_AnimationRootNode>` referenced by the point at index ``point``.
 
@@ -352,7 +352,7 @@ Returns the :ref:`AnimationRootNode<class_AnimationRootNode>` referenced by the
 
 .. rst-class:: classref-method
 
-:ref:`Vector2<class_Vector2>` **get_blend_point_position**\ (\ point\: :ref:`int<class_int>`\ ) |const|
+:ref:`Vector2<class_Vector2>` **get_blend_point_position**\ (\ point\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNodeBlendSpace2D_method_get_blend_point_position>`
 
 Returns the position of the point at index ``point``.
 
@@ -364,7 +364,7 @@ Returns the position of the point at index ``point``.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_triangle_count**\ (\ ) |const|
+:ref:`int<class_int>` **get_triangle_count**\ (\ ) |const| :ref:`🔗<class_AnimationNodeBlendSpace2D_method_get_triangle_count>`
 
 Returns the number of triangles in the blend space.
 
@@ -376,7 +376,7 @@ Returns the number of triangles in the blend space.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_triangle_point**\ (\ triangle\: :ref:`int<class_int>`, point\: :ref:`int<class_int>`\ )
+:ref:`int<class_int>` **get_triangle_point**\ (\ triangle\: :ref:`int<class_int>`, point\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AnimationNodeBlendSpace2D_method_get_triangle_point>`
 
 Returns the position of the point at index ``point`` in the triangle of index ``triangle``.
 
@@ -388,7 +388,7 @@ Returns the position of the point at index ``point`` in the triangle of index ``
 
 .. rst-class:: classref-method
 
-|void| **remove_blend_point**\ (\ point\: :ref:`int<class_int>`\ )
+|void| **remove_blend_point**\ (\ point\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AnimationNodeBlendSpace2D_method_remove_blend_point>`
 
 Removes the point at index ``point`` from the blend space.
 
@@ -400,7 +400,7 @@ Removes the point at index ``point`` from the blend space.
 
 .. rst-class:: classref-method
 
-|void| **remove_triangle**\ (\ triangle\: :ref:`int<class_int>`\ )
+|void| **remove_triangle**\ (\ triangle\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AnimationNodeBlendSpace2D_method_remove_triangle>`
 
 Removes the triangle at index ``triangle`` from the blend space.
 
@@ -412,7 +412,7 @@ Removes the triangle at index ``triangle`` from the blend space.
 
 .. rst-class:: classref-method
 
-|void| **set_blend_point_node**\ (\ point\: :ref:`int<class_int>`, node\: :ref:`AnimationRootNode<class_AnimationRootNode>`\ )
+|void| **set_blend_point_node**\ (\ point\: :ref:`int<class_int>`, node\: :ref:`AnimationRootNode<class_AnimationRootNode>`\ ) :ref:`🔗<class_AnimationNodeBlendSpace2D_method_set_blend_point_node>`
 
 Changes the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at index ``point``.
 
@@ -424,9 +424,9 @@ Changes the :ref:`AnimationNode<class_AnimationNode>` referenced by the point at
 
 .. rst-class:: classref-method
 
-|void| **set_blend_point_position**\ (\ point\: :ref:`int<class_int>`, pos\: :ref:`Vector2<class_Vector2>`\ )
+|void| **set_blend_point_position**\ (\ point\: :ref:`int<class_int>`, pos\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_AnimationNodeBlendSpace2D_method_set_blend_point_position>`
 
-Updates the position of the point at index ``point`` on the blend axis.
+Updates the position of the point at index ``point`` in the blend space.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 17 - 17
classes/class_animationnodeblendtree.rst

@@ -83,7 +83,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**node_changed**\ (\ node_name\: :ref:`StringName<class_StringName>`\ )
+**node_changed**\ (\ node_name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationNodeBlendTree_signal_node_changed>`
 
 Emitted when the input port information is changed.
 
@@ -100,7 +100,7 @@ Constants
 
 .. rst-class:: classref-constant
 
-**CONNECTION_OK** = ``0``
+**CONNECTION_OK** = ``0`` :ref:`🔗<class_AnimationNodeBlendTree_constant_CONNECTION_OK>`
 
 The connection was successful.
 
@@ -108,7 +108,7 @@ The connection was successful.
 
 .. rst-class:: classref-constant
 
-**CONNECTION_ERROR_NO_INPUT** = ``1``
+**CONNECTION_ERROR_NO_INPUT** = ``1`` :ref:`🔗<class_AnimationNodeBlendTree_constant_CONNECTION_ERROR_NO_INPUT>`
 
 The input node is ``null``.
 
@@ -116,7 +116,7 @@ The input node is ``null``.
 
 .. rst-class:: classref-constant
 
-**CONNECTION_ERROR_NO_INPUT_INDEX** = ``2``
+**CONNECTION_ERROR_NO_INPUT_INDEX** = ``2`` :ref:`🔗<class_AnimationNodeBlendTree_constant_CONNECTION_ERROR_NO_INPUT_INDEX>`
 
 The specified input port is out of range.
 
@@ -124,7 +124,7 @@ The specified input port is out of range.
 
 .. rst-class:: classref-constant
 
-**CONNECTION_ERROR_NO_OUTPUT** = ``3``
+**CONNECTION_ERROR_NO_OUTPUT** = ``3`` :ref:`🔗<class_AnimationNodeBlendTree_constant_CONNECTION_ERROR_NO_OUTPUT>`
 
 The output node is ``null``.
 
@@ -132,7 +132,7 @@ The output node is ``null``.
 
 .. rst-class:: classref-constant
 
-**CONNECTION_ERROR_SAME_NODE** = ``4``
+**CONNECTION_ERROR_SAME_NODE** = ``4`` :ref:`🔗<class_AnimationNodeBlendTree_constant_CONNECTION_ERROR_SAME_NODE>`
 
 Input and output nodes are the same.
 
@@ -140,7 +140,7 @@ Input and output nodes are the same.
 
 .. rst-class:: classref-constant
 
-**CONNECTION_ERROR_CONNECTION_EXISTS** = ``5``
+**CONNECTION_ERROR_CONNECTION_EXISTS** = ``5`` :ref:`🔗<class_AnimationNodeBlendTree_constant_CONNECTION_ERROR_CONNECTION_EXISTS>`
 
 The specified connection already exists.
 
@@ -157,7 +157,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`Vector2<class_Vector2>` **graph_offset** = ``Vector2(0, 0)``
+:ref:`Vector2<class_Vector2>` **graph_offset** = ``Vector2(0, 0)`` :ref:`🔗<class_AnimationNodeBlendTree_property_graph_offset>`
 
 .. rst-class:: classref-property-setget
 
@@ -179,7 +179,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **add_node**\ (\ name\: :ref:`StringName<class_StringName>`, node\: :ref:`AnimationNode<class_AnimationNode>`, position\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ )
+|void| **add_node**\ (\ name\: :ref:`StringName<class_StringName>`, node\: :ref:`AnimationNode<class_AnimationNode>`, position\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ ) :ref:`🔗<class_AnimationNodeBlendTree_method_add_node>`
 
 Adds an :ref:`AnimationNode<class_AnimationNode>` at the given ``position``. The ``name`` is used to identify the created sub animation node later.
 
@@ -191,7 +191,7 @@ Adds an :ref:`AnimationNode<class_AnimationNode>` at the given ``position``. The
 
 .. rst-class:: classref-method
 
-|void| **connect_node**\ (\ input_node\: :ref:`StringName<class_StringName>`, input_index\: :ref:`int<class_int>`, output_node\: :ref:`StringName<class_StringName>`\ )
+|void| **connect_node**\ (\ input_node\: :ref:`StringName<class_StringName>`, input_index\: :ref:`int<class_int>`, output_node\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationNodeBlendTree_method_connect_node>`
 
 Connects the output of an :ref:`AnimationNode<class_AnimationNode>` as input for another :ref:`AnimationNode<class_AnimationNode>`, at the input port specified by ``input_index``.
 
@@ -203,7 +203,7 @@ Connects the output of an :ref:`AnimationNode<class_AnimationNode>` as input for
 
 .. rst-class:: classref-method
 
-|void| **disconnect_node**\ (\ input_node\: :ref:`StringName<class_StringName>`, input_index\: :ref:`int<class_int>`\ )
+|void| **disconnect_node**\ (\ input_node\: :ref:`StringName<class_StringName>`, input_index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AnimationNodeBlendTree_method_disconnect_node>`
 
 Disconnects the animation node connected to the specified input.
 
@@ -215,7 +215,7 @@ Disconnects the animation node connected to the specified input.
 
 .. rst-class:: classref-method
 
-:ref:`AnimationNode<class_AnimationNode>` **get_node**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`AnimationNode<class_AnimationNode>` **get_node**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationNodeBlendTree_method_get_node>`
 
 Returns the sub animation node with the specified ``name``.
 
@@ -227,7 +227,7 @@ Returns the sub animation node with the specified ``name``.
 
 .. rst-class:: classref-method
 
-:ref:`Vector2<class_Vector2>` **get_node_position**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`Vector2<class_Vector2>` **get_node_position**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationNodeBlendTree_method_get_node_position>`
 
 Returns the position of the sub animation node with the specified ``name``.
 
@@ -239,7 +239,7 @@ Returns the position of the sub animation node with the specified ``name``.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_node**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`bool<class_bool>` **has_node**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationNodeBlendTree_method_has_node>`
 
 Returns ``true`` if a sub animation node with specified ``name`` exists.
 
@@ -251,7 +251,7 @@ Returns ``true`` if a sub animation node with specified ``name`` exists.
 
 .. rst-class:: classref-method
 
-|void| **remove_node**\ (\ name\: :ref:`StringName<class_StringName>`\ )
+|void| **remove_node**\ (\ name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationNodeBlendTree_method_remove_node>`
 
 Removes a sub animation node.
 
@@ -263,7 +263,7 @@ Removes a sub animation node.
 
 .. rst-class:: classref-method
 
-|void| **rename_node**\ (\ name\: :ref:`StringName<class_StringName>`, new_name\: :ref:`StringName<class_StringName>`\ )
+|void| **rename_node**\ (\ name\: :ref:`StringName<class_StringName>`, new_name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationNodeBlendTree_method_rename_node>`
 
 Changes the name of a sub animation node.
 
@@ -275,7 +275,7 @@ Changes the name of a sub animation node.
 
 .. rst-class:: classref-method
 
-|void| **set_node_position**\ (\ name\: :ref:`StringName<class_StringName>`, position\: :ref:`Vector2<class_Vector2>`\ )
+|void| **set_node_position**\ (\ name\: :ref:`StringName<class_StringName>`, position\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_AnimationNodeBlendTree_method_set_node_position>`
 
 Modifies the position of a sub animation node.
 

+ 94 - 0
classes/class_animationnodeextension.rst

@@ -0,0 +1,94 @@
+:github_url: hide
+
+.. DO NOT EDIT THIS FILE!!!
+.. Generated automatically from Godot engine sources.
+.. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
+.. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/AnimationNodeExtension.xml.
+
+.. _class_AnimationNodeExtension:
+
+AnimationNodeExtension
+======================
+
+**Experimental:** This class may be changed or removed in future versions.
+
+**Inherits:** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+Base class for extending :ref:`AnimationRootNode<class_AnimationRootNode>`\ s from GDScript, C#, or C++.
+
+.. rst-class:: classref-introduction-group
+
+Description
+-----------
+
+**AnimationNodeExtension** exposes the APIs of :ref:`AnimationRootNode<class_AnimationRootNode>` to allow users to extend it from GDScript, C#, or C++. This class is not meant to be used directly, but to be extended by other classes. It is used to create custom nodes for the :ref:`AnimationTree<class_AnimationTree>` system.
+
+.. rst-class:: classref-reftable-group
+
+Methods
+-------
+
+.. table::
+   :widths: auto
+
+   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PackedFloat32Array<class_PackedFloat32Array>` | :ref:`_process_animation_node<class_AnimationNodeExtension_private_method__process_animation_node>`\ (\ playback_info\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| |
+   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                           | :ref:`get_remaining_time<class_AnimationNodeExtension_method_get_remaining_time>`\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`, break_loop\: :ref:`bool<class_bool>`\ ) |static|                       |
+   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                             | :ref:`is_looping<class_AnimationNodeExtension_method_is_looping>`\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) |static|                                                                             |
+   +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
+Method Descriptions
+-------------------
+
+.. _class_AnimationNodeExtension_private_method__process_animation_node:
+
+.. rst-class:: classref-method
+
+:ref:`PackedFloat32Array<class_PackedFloat32Array>` **_process_animation_node**\ (\ playback_info\: :ref:`PackedFloat64Array<class_PackedFloat64Array>`, test_only\: :ref:`bool<class_bool>`\ ) |virtual| :ref:`🔗<class_AnimationNodeExtension_private_method__process_animation_node>`
+
+A version of the :ref:`AnimationNode._process()<class_AnimationNode_private_method__process>` method that is meant to be overridden by custom nodes. It returns a :ref:`PackedFloat32Array<class_PackedFloat32Array>` with the processed animation data.
+
+The :ref:`PackedFloat64Array<class_PackedFloat64Array>` parameter contains the playback information, containing the following values encoded as floating point numbers (in order): playback time and delta, start and end times, whether a seek was requested (encoded as a float greater than ``0``), whether the seek request was externally requested (encoded as a float greater than ``0``), the current :ref:`LoopedFlag<enum_Animation_LoopedFlag>` (encoded as a float), and the current blend weight.
+
+The function must return a :ref:`PackedFloat32Array<class_PackedFloat32Array>` of the node's time info, containing the following values (in order): animation length, time position, delta, :ref:`LoopMode<enum_Animation_LoopMode>` (encoded as a float), whether the animation is about to end (encoded as a float greater than ``0``) and whether the animation is infinite (encoded as a float greater than ``0``). All values must be included in the returned array.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationNodeExtension_method_get_remaining_time:
+
+.. rst-class:: classref-method
+
+:ref:`float<class_float>` **get_remaining_time**\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`, break_loop\: :ref:`bool<class_bool>`\ ) |static| :ref:`🔗<class_AnimationNodeExtension_method_get_remaining_time>`
+
+Returns the animation's remaining time for the given node info. For looping animations, it will only return the remaining time if ``break_loop`` is ``true``, a large integer value will be returned otherwise.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationNodeExtension_method_is_looping:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **is_looping**\ (\ node_info\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) |static| :ref:`🔗<class_AnimationNodeExtension_method_is_looping>`
+
+Returns ``true`` if the animation for the given ``node_info`` is looping.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
+.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
+.. |void| replace:: :abbr:`void (No return value.)`

+ 14 - 14
classes/class_animationnodeoneshot.rst

@@ -79,7 +79,7 @@ Tutorials
 
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -122,7 +122,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **OneShotRequest**:
+enum **OneShotRequest**: :ref:`🔗<enum_AnimationNodeOneShot_OneShotRequest>`
 
 .. _class_AnimationNodeOneShot_constant_ONE_SHOT_REQUEST_NONE:
 
@@ -164,7 +164,7 @@ The request to fade out the animation connected to "shot" port.
 
 .. rst-class:: classref-enumeration
 
-enum **MixMode**:
+enum **MixMode**: :ref:`🔗<enum_AnimationNodeOneShot_MixMode>`
 
 .. _class_AnimationNodeOneShot_constant_MIX_MODE_BLEND:
 
@@ -195,7 +195,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **autorestart** = ``false``
+:ref:`bool<class_bool>` **autorestart** = ``false`` :ref:`🔗<class_AnimationNodeOneShot_property_autorestart>`
 
 .. rst-class:: classref-property-setget
 
@@ -214,7 +214,7 @@ In other words, to start auto restarting, the animation must be played once with
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **autorestart_delay** = ``1.0``
+:ref:`float<class_float>` **autorestart_delay** = ``1.0`` :ref:`🔗<class_AnimationNodeOneShot_property_autorestart_delay>`
 
 .. rst-class:: classref-property-setget
 
@@ -231,7 +231,7 @@ The delay after which the automatic restart is triggered, in seconds.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **autorestart_random_delay** = ``0.0``
+:ref:`float<class_float>` **autorestart_random_delay** = ``0.0`` :ref:`🔗<class_AnimationNodeOneShot_property_autorestart_random_delay>`
 
 .. rst-class:: classref-property-setget
 
@@ -248,7 +248,7 @@ If :ref:`autorestart<class_AnimationNodeOneShot_property_autorestart>` is ``true
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **break_loop_at_end** = ``false``
+:ref:`bool<class_bool>` **break_loop_at_end** = ``false`` :ref:`🔗<class_AnimationNodeOneShot_property_break_loop_at_end>`
 
 .. rst-class:: classref-property-setget
 
@@ -265,14 +265,14 @@ If ``true``, breaks the loop at the end of the loop cycle for transition, even i
 
 .. rst-class:: classref-property
 
-:ref:`Curve<class_Curve>` **fadein_curve**
+:ref:`Curve<class_Curve>` **fadein_curve** :ref:`🔗<class_AnimationNodeOneShot_property_fadein_curve>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_fadein_curve**\ (\ value\: :ref:`Curve<class_Curve>`\ )
 - :ref:`Curve<class_Curve>` **get_fadein_curve**\ (\ )
 
-Determines how cross-fading between animations is eased. If empty, the transition will be linear.
+Determines how cross-fading between animations is eased. If empty, the transition will be linear. Should be a unit :ref:`Curve<class_Curve>`.
 
 .. rst-class:: classref-item-separator
 
@@ -282,7 +282,7 @@ Determines how cross-fading between animations is eased. If empty, the transitio
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **fadein_time** = ``0.0``
+:ref:`float<class_float>` **fadein_time** = ``0.0`` :ref:`🔗<class_AnimationNodeOneShot_property_fadein_time>`
 
 .. rst-class:: classref-property-setget
 
@@ -301,14 +301,14 @@ The fade-in duration. For example, setting this to ``1.0`` for a 5 second length
 
 .. rst-class:: classref-property
 
-:ref:`Curve<class_Curve>` **fadeout_curve**
+:ref:`Curve<class_Curve>` **fadeout_curve** :ref:`🔗<class_AnimationNodeOneShot_property_fadeout_curve>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_fadeout_curve**\ (\ value\: :ref:`Curve<class_Curve>`\ )
 - :ref:`Curve<class_Curve>` **get_fadeout_curve**\ (\ )
 
-Determines how cross-fading between animations is eased. If empty, the transition will be linear.
+Determines how cross-fading between animations is eased. If empty, the transition will be linear. Should be a unit :ref:`Curve<class_Curve>`.
 
 .. rst-class:: classref-item-separator
 
@@ -318,7 +318,7 @@ Determines how cross-fading between animations is eased. If empty, the transitio
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **fadeout_time** = ``0.0``
+:ref:`float<class_float>` **fadeout_time** = ``0.0`` :ref:`🔗<class_AnimationNodeOneShot_property_fadeout_time>`
 
 .. rst-class:: classref-property-setget
 
@@ -337,7 +337,7 @@ The fade-out duration. For example, setting this to ``1.0`` for a 5 second lengt
 
 .. rst-class:: classref-property
 
-:ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` **mix_mode** = ``0``
+:ref:`MixMode<enum_AnimationNodeOneShot_MixMode>` **mix_mode** = ``0`` :ref:`🔗<class_AnimationNodeOneShot_property_mix_mode>`
 
 .. rst-class:: classref-property-setget
 

+ 2 - 2
classes/class_animationnodeoutput.rst

@@ -28,9 +28,9 @@ Tutorials
 
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
-- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/2748>`__
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 24 - 26
classes/class_animationnodestatemachine.rst

@@ -21,8 +21,6 @@ Description
 
 Contains multiple :ref:`AnimationRootNode<class_AnimationRootNode>`\ s representing animation states, connected in a graph. State transitions can be configured to happen automatically or via code, using a shortest-path algorithm. Retrieve the :ref:`AnimationNodeStateMachinePlayback<class_AnimationNodeStateMachinePlayback>` object from the :ref:`AnimationTree<class_AnimationTree>` node to control it programmatically.
 
-\ **Example:**\ 
-
 
 .. tabs::
 
@@ -122,7 +120,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **StateMachineType**:
+enum **StateMachineType**: :ref:`🔗<enum_AnimationNodeStateMachine_StateMachineType>`
 
 .. _class_AnimationNodeStateMachine_constant_STATE_MACHINE_TYPE_ROOT:
 
@@ -161,14 +159,14 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **allow_transition_to_self** = ``false``
+:ref:`bool<class_bool>` **allow_transition_to_self** = ``false`` :ref:`🔗<class_AnimationNodeStateMachine_property_allow_transition_to_self>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_allow_transition_to_self**\ (\ value\: :ref:`bool<class_bool>`\ )
 - :ref:`bool<class_bool>` **is_allow_transition_to_self**\ (\ )
 
-If ``true``, allows teleport to the self state with :ref:`AnimationNodeStateMachinePlayback.travel<class_AnimationNodeStateMachinePlayback_method_travel>`. When the reset option is enabled in :ref:`AnimationNodeStateMachinePlayback.travel<class_AnimationNodeStateMachinePlayback_method_travel>`, the animation is restarted. If ``false``, nothing happens on the teleportation to the self state.
+If ``true``, allows teleport to the self state with :ref:`AnimationNodeStateMachinePlayback.travel()<class_AnimationNodeStateMachinePlayback_method_travel>`. When the reset option is enabled in :ref:`AnimationNodeStateMachinePlayback.travel()<class_AnimationNodeStateMachinePlayback_method_travel>`, the animation is restarted. If ``false``, nothing happens on the teleportation to the self state.
 
 .. rst-class:: classref-item-separator
 
@@ -178,7 +176,7 @@ If ``true``, allows teleport to the self state with :ref:`AnimationNodeStateMach
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **reset_ends** = ``false``
+:ref:`bool<class_bool>` **reset_ends** = ``false`` :ref:`🔗<class_AnimationNodeStateMachine_property_reset_ends>`
 
 .. rst-class:: classref-property-setget
 
@@ -197,7 +195,7 @@ In most cases, when additional cross-fades are performed in the parent :ref:`Ani
 
 .. rst-class:: classref-property
 
-:ref:`StateMachineType<enum_AnimationNodeStateMachine_StateMachineType>` **state_machine_type** = ``0``
+:ref:`StateMachineType<enum_AnimationNodeStateMachine_StateMachineType>` **state_machine_type** = ``0`` :ref:`🔗<class_AnimationNodeStateMachine_property_state_machine_type>`
 
 .. rst-class:: classref-property-setget
 
@@ -219,7 +217,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **add_node**\ (\ name\: :ref:`StringName<class_StringName>`, node\: :ref:`AnimationNode<class_AnimationNode>`, position\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ )
+|void| **add_node**\ (\ name\: :ref:`StringName<class_StringName>`, node\: :ref:`AnimationNode<class_AnimationNode>`, position\: :ref:`Vector2<class_Vector2>` = Vector2(0, 0)\ ) :ref:`🔗<class_AnimationNodeStateMachine_method_add_node>`
 
 Adds a new animation node to the graph. The ``position`` is used for display in the editor.
 
@@ -231,7 +229,7 @@ Adds a new animation node to the graph. The ``position`` is used for display in
 
 .. rst-class:: classref-method
 
-|void| **add_transition**\ (\ from\: :ref:`StringName<class_StringName>`, to\: :ref:`StringName<class_StringName>`, transition\: :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>`\ )
+|void| **add_transition**\ (\ from\: :ref:`StringName<class_StringName>`, to\: :ref:`StringName<class_StringName>`, transition\: :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>`\ ) :ref:`🔗<class_AnimationNodeStateMachine_method_add_transition>`
 
 Adds a transition between the given animation nodes.
 
@@ -243,7 +241,7 @@ Adds a transition between the given animation nodes.
 
 .. rst-class:: classref-method
 
-:ref:`Vector2<class_Vector2>` **get_graph_offset**\ (\ ) |const|
+:ref:`Vector2<class_Vector2>` **get_graph_offset**\ (\ ) |const| :ref:`🔗<class_AnimationNodeStateMachine_method_get_graph_offset>`
 
 Returns the draw offset of the graph. Used for display in the editor.
 
@@ -255,7 +253,7 @@ Returns the draw offset of the graph. Used for display in the editor.
 
 .. rst-class:: classref-method
 
-:ref:`AnimationNode<class_AnimationNode>` **get_node**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`AnimationNode<class_AnimationNode>` **get_node**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationNodeStateMachine_method_get_node>`
 
 Returns the animation node with the given name.
 
@@ -267,7 +265,7 @@ Returns the animation node with the given name.
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **get_node_name**\ (\ node\: :ref:`AnimationNode<class_AnimationNode>`\ ) |const|
+:ref:`StringName<class_StringName>` **get_node_name**\ (\ node\: :ref:`AnimationNode<class_AnimationNode>`\ ) |const| :ref:`🔗<class_AnimationNodeStateMachine_method_get_node_name>`
 
 Returns the given animation node's name.
 
@@ -279,7 +277,7 @@ Returns the given animation node's name.
 
 .. rst-class:: classref-method
 
-:ref:`Vector2<class_Vector2>` **get_node_position**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`Vector2<class_Vector2>` **get_node_position**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationNodeStateMachine_method_get_node_position>`
 
 Returns the given animation node's coordinates. Used for display in the editor.
 
@@ -291,7 +289,7 @@ Returns the given animation node's coordinates. Used for display in the editor.
 
 .. rst-class:: classref-method
 
-:ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` **get_transition**\ (\ idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` **get_transition**\ (\ idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNodeStateMachine_method_get_transition>`
 
 Returns the given transition.
 
@@ -303,7 +301,7 @@ Returns the given transition.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_transition_count**\ (\ ) |const|
+:ref:`int<class_int>` **get_transition_count**\ (\ ) |const| :ref:`🔗<class_AnimationNodeStateMachine_method_get_transition_count>`
 
 Returns the number of connections in the graph.
 
@@ -315,7 +313,7 @@ Returns the number of connections in the graph.
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **get_transition_from**\ (\ idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`StringName<class_StringName>` **get_transition_from**\ (\ idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNodeStateMachine_method_get_transition_from>`
 
 Returns the given transition's start node.
 
@@ -327,7 +325,7 @@ Returns the given transition's start node.
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **get_transition_to**\ (\ idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`StringName<class_StringName>` **get_transition_to**\ (\ idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNodeStateMachine_method_get_transition_to>`
 
 Returns the given transition's end node.
 
@@ -339,7 +337,7 @@ Returns the given transition's end node.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_node**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`bool<class_bool>` **has_node**\ (\ name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationNodeStateMachine_method_has_node>`
 
 Returns ``true`` if the graph contains the given animation node.
 
@@ -351,7 +349,7 @@ Returns ``true`` if the graph contains the given animation node.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_transition**\ (\ from\: :ref:`StringName<class_StringName>`, to\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`bool<class_bool>` **has_transition**\ (\ from\: :ref:`StringName<class_StringName>`, to\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationNodeStateMachine_method_has_transition>`
 
 Returns ``true`` if there is a transition between the given animation nodes.
 
@@ -363,7 +361,7 @@ Returns ``true`` if there is a transition between the given animation nodes.
 
 .. rst-class:: classref-method
 
-|void| **remove_node**\ (\ name\: :ref:`StringName<class_StringName>`\ )
+|void| **remove_node**\ (\ name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationNodeStateMachine_method_remove_node>`
 
 Deletes the given animation node from the graph.
 
@@ -375,7 +373,7 @@ Deletes the given animation node from the graph.
 
 .. rst-class:: classref-method
 
-|void| **remove_transition**\ (\ from\: :ref:`StringName<class_StringName>`, to\: :ref:`StringName<class_StringName>`\ )
+|void| **remove_transition**\ (\ from\: :ref:`StringName<class_StringName>`, to\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationNodeStateMachine_method_remove_transition>`
 
 Deletes the transition between the two specified animation nodes.
 
@@ -387,7 +385,7 @@ Deletes the transition between the two specified animation nodes.
 
 .. rst-class:: classref-method
 
-|void| **remove_transition_by_index**\ (\ idx\: :ref:`int<class_int>`\ )
+|void| **remove_transition_by_index**\ (\ idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AnimationNodeStateMachine_method_remove_transition_by_index>`
 
 Deletes the given transition by index.
 
@@ -399,7 +397,7 @@ Deletes the given transition by index.
 
 .. rst-class:: classref-method
 
-|void| **rename_node**\ (\ name\: :ref:`StringName<class_StringName>`, new_name\: :ref:`StringName<class_StringName>`\ )
+|void| **rename_node**\ (\ name\: :ref:`StringName<class_StringName>`, new_name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationNodeStateMachine_method_rename_node>`
 
 Renames the given animation node.
 
@@ -411,7 +409,7 @@ Renames the given animation node.
 
 .. rst-class:: classref-method
 
-|void| **replace_node**\ (\ name\: :ref:`StringName<class_StringName>`, node\: :ref:`AnimationNode<class_AnimationNode>`\ )
+|void| **replace_node**\ (\ name\: :ref:`StringName<class_StringName>`, node\: :ref:`AnimationNode<class_AnimationNode>`\ ) :ref:`🔗<class_AnimationNodeStateMachine_method_replace_node>`
 
 Replaces the given animation node with a new animation node.
 
@@ -423,7 +421,7 @@ Replaces the given animation node with a new animation node.
 
 .. rst-class:: classref-method
 
-|void| **set_graph_offset**\ (\ offset\: :ref:`Vector2<class_Vector2>`\ )
+|void| **set_graph_offset**\ (\ offset\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_AnimationNodeStateMachine_method_set_graph_offset>`
 
 Sets the draw offset of the graph. Used for display in the editor.
 
@@ -435,7 +433,7 @@ Sets the draw offset of the graph. Used for display in the editor.
 
 .. rst-class:: classref-method
 
-|void| **set_node_position**\ (\ name\: :ref:`StringName<class_StringName>`, position\: :ref:`Vector2<class_Vector2>`\ )
+|void| **set_node_position**\ (\ name\: :ref:`StringName<class_StringName>`, position\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_AnimationNodeStateMachine_method_set_node_position>`
 
 Sets the animation node's coordinates. Used for display in the editor.
 

+ 10 - 12
classes/class_animationnodestatemachineplayback.rst

@@ -21,8 +21,6 @@ Description
 
 Allows control of :ref:`AnimationTree<class_AnimationTree>` state machines created with :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`. Retrieve with ``$AnimationTree.get("parameters/playback")``.
 
-\ **Example:**\ 
-
 
 .. tabs::
 
@@ -100,7 +98,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_current_length**\ (\ ) |const|
+:ref:`float<class_float>` **get_current_length**\ (\ ) |const| :ref:`🔗<class_AnimationNodeStateMachinePlayback_method_get_current_length>`
 
 Returns the current state length.
 
@@ -114,7 +112,7 @@ Returns the current state length.
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **get_current_node**\ (\ ) |const|
+:ref:`StringName<class_StringName>` **get_current_node**\ (\ ) |const| :ref:`🔗<class_AnimationNodeStateMachinePlayback_method_get_current_node>`
 
 Returns the currently playing animation state.
 
@@ -128,7 +126,7 @@ Returns the currently playing animation state.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_current_play_position**\ (\ ) |const|
+:ref:`float<class_float>` **get_current_play_position**\ (\ ) |const| :ref:`🔗<class_AnimationNodeStateMachinePlayback_method_get_current_play_position>`
 
 Returns the playback position within the current animation state.
 
@@ -140,7 +138,7 @@ Returns the playback position within the current animation state.
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **get_fading_from_node**\ (\ ) |const|
+:ref:`StringName<class_StringName>` **get_fading_from_node**\ (\ ) |const| :ref:`🔗<class_AnimationNodeStateMachinePlayback_method_get_fading_from_node>`
 
 Returns the starting state of currently fading animation.
 
@@ -152,7 +150,7 @@ Returns the starting state of currently fading animation.
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>`\[:ref:`StringName<class_StringName>`\] **get_travel_path**\ (\ ) |const|
+:ref:`Array<class_Array>`\[:ref:`StringName<class_StringName>`\] **get_travel_path**\ (\ ) |const| :ref:`🔗<class_AnimationNodeStateMachinePlayback_method_get_travel_path>`
 
 Returns the current travel path as computed internally by the A\* algorithm.
 
@@ -164,7 +162,7 @@ Returns the current travel path as computed internally by the A\* algorithm.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_playing**\ (\ ) |const|
+:ref:`bool<class_bool>` **is_playing**\ (\ ) |const| :ref:`🔗<class_AnimationNodeStateMachinePlayback_method_is_playing>`
 
 Returns ``true`` if an animation is playing.
 
@@ -176,7 +174,7 @@ Returns ``true`` if an animation is playing.
 
 .. rst-class:: classref-method
 
-|void| **next**\ (\ )
+|void| **next**\ (\ ) :ref:`🔗<class_AnimationNodeStateMachinePlayback_method_next>`
 
 If there is a next path by travel or auto advance, immediately transitions from the current state to the next state.
 
@@ -188,7 +186,7 @@ If there is a next path by travel or auto advance, immediately transitions from
 
 .. rst-class:: classref-method
 
-|void| **start**\ (\ node\: :ref:`StringName<class_StringName>`, reset\: :ref:`bool<class_bool>` = true\ )
+|void| **start**\ (\ node\: :ref:`StringName<class_StringName>`, reset\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AnimationNodeStateMachinePlayback_method_start>`
 
 Starts playing the given animation.
 
@@ -202,7 +200,7 @@ If ``reset`` is ``true``, the animation is played from the beginning.
 
 .. rst-class:: classref-method
 
-|void| **stop**\ (\ )
+|void| **stop**\ (\ ) :ref:`🔗<class_AnimationNodeStateMachinePlayback_method_stop>`
 
 Stops the currently playing animation.
 
@@ -214,7 +212,7 @@ Stops the currently playing animation.
 
 .. rst-class:: classref-method
 
-|void| **travel**\ (\ to_node\: :ref:`StringName<class_StringName>`, reset_on_teleport\: :ref:`bool<class_bool>` = true\ )
+|void| **travel**\ (\ to_node\: :ref:`StringName<class_StringName>`, reset_on_teleport\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AnimationNodeStateMachinePlayback_method_travel>`
 
 Transitions from the current state to another one, following the shortest path.
 

+ 18 - 18
classes/class_animationnodestatemachinetransition.rst

@@ -19,7 +19,7 @@ A transition within an :ref:`AnimationNodeStateMachine<class_AnimationNodeStateM
 Description
 -----------
 
-The path generated when using :ref:`AnimationNodeStateMachinePlayback.travel<class_AnimationNodeStateMachinePlayback_method_travel>` is limited to the nodes connected by **AnimationNodeStateMachineTransition**.
+The path generated when using :ref:`AnimationNodeStateMachinePlayback.travel()<class_AnimationNodeStateMachinePlayback_method_travel>` is limited to the nodes connected by **AnimationNodeStateMachineTransition**.
 
 You can set the timing and conditions of the transition in detail.
 
@@ -71,7 +71,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**advance_condition_changed**\ (\ )
+**advance_condition_changed**\ (\ ) :ref:`🔗<class_AnimationNodeStateMachineTransition_signal_advance_condition_changed>`
 
 Emitted when :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` is changed.
 
@@ -88,7 +88,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **SwitchMode**:
+enum **SwitchMode**: :ref:`🔗<enum_AnimationNodeStateMachineTransition_SwitchMode>`
 
 .. _class_AnimationNodeStateMachineTransition_constant_SWITCH_MODE_IMMEDIATE:
 
@@ -122,7 +122,7 @@ Wait for the current state playback to end, then switch to the beginning of the
 
 .. rst-class:: classref-enumeration
 
-enum **AdvanceMode**:
+enum **AdvanceMode**: :ref:`🔗<enum_AnimationNodeStateMachineTransition_AdvanceMode>`
 
 .. _class_AnimationNodeStateMachineTransition_constant_ADVANCE_MODE_DISABLED:
 
@@ -138,7 +138,7 @@ Don't use this transition.
 
 :ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` **ADVANCE_MODE_ENABLED** = ``1``
 
-Only use this transition during :ref:`AnimationNodeStateMachinePlayback.travel<class_AnimationNodeStateMachinePlayback_method_travel>`.
+Only use this transition during :ref:`AnimationNodeStateMachinePlayback.travel()<class_AnimationNodeStateMachinePlayback_method_travel>`.
 
 .. _class_AnimationNodeStateMachineTransition_constant_ADVANCE_MODE_AUTO:
 
@@ -146,7 +146,7 @@ Only use this transition during :ref:`AnimationNodeStateMachinePlayback.travel<c
 
 :ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` **ADVANCE_MODE_AUTO** = ``2``
 
-Automatically use this transition if the :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` and :ref:`advance_expression<class_AnimationNodeStateMachineTransition_property_advance_expression>` checks are true (if assigned).
+Automatically use this transition if the :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` and :ref:`advance_expression<class_AnimationNodeStateMachineTransition_property_advance_expression>` checks are ``true`` (if assigned).
 
 .. rst-class:: classref-section-separator
 
@@ -161,7 +161,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **advance_condition** = ``&""``
+:ref:`StringName<class_StringName>` **advance_condition** = ``&""`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_advance_condition>`
 
 .. rst-class:: classref-property-setget
 
@@ -191,7 +191,7 @@ Turn on auto advance when this condition is set. The provided name will become a
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **advance_expression** = ``""``
+:ref:`String<class_String>` **advance_expression** = ``""`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_advance_expression>`
 
 .. rst-class:: classref-property-setget
 
@@ -208,14 +208,14 @@ Use an expression as a condition for state machine transitions. It is possible t
 
 .. rst-class:: classref-property
 
-:ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` **advance_mode** = ``1``
+:ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` **advance_mode** = ``1`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_advance_mode>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_advance_mode**\ (\ value\: :ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>`\ )
 - :ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` **get_advance_mode**\ (\ )
 
-Determines whether the transition should disabled, enabled when using :ref:`AnimationNodeStateMachinePlayback.travel<class_AnimationNodeStateMachinePlayback_method_travel>`, or traversed automatically if the :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` and :ref:`advance_expression<class_AnimationNodeStateMachineTransition_property_advance_expression>` checks are true (if assigned).
+Determines whether the transition should be disabled, enabled when using :ref:`AnimationNodeStateMachinePlayback.travel()<class_AnimationNodeStateMachinePlayback_method_travel>`, or traversed automatically if the :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` and :ref:`advance_expression<class_AnimationNodeStateMachineTransition_property_advance_expression>` checks are ``true`` (if assigned).
 
 .. rst-class:: classref-item-separator
 
@@ -225,7 +225,7 @@ Determines whether the transition should disabled, enabled when using :ref:`Anim
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **break_loop_at_end** = ``false``
+:ref:`bool<class_bool>` **break_loop_at_end** = ``false`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_break_loop_at_end>`
 
 .. rst-class:: classref-property-setget
 
@@ -242,14 +242,14 @@ If ``true``, breaks the loop at the end of the loop cycle for transition, even i
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **priority** = ``1``
+:ref:`int<class_int>` **priority** = ``1`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_priority>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_priority**\ (\ value\: :ref:`int<class_int>`\ )
 - :ref:`int<class_int>` **get_priority**\ (\ )
 
-Lower priority transitions are preferred when travelling through the tree via :ref:`AnimationNodeStateMachinePlayback.travel<class_AnimationNodeStateMachinePlayback_method_travel>` or :ref:`advance_mode<class_AnimationNodeStateMachineTransition_property_advance_mode>` is set to :ref:`ADVANCE_MODE_AUTO<class_AnimationNodeStateMachineTransition_constant_ADVANCE_MODE_AUTO>`.
+Lower priority transitions are preferred when travelling through the tree via :ref:`AnimationNodeStateMachinePlayback.travel()<class_AnimationNodeStateMachinePlayback_method_travel>` or :ref:`advance_mode<class_AnimationNodeStateMachineTransition_property_advance_mode>` is set to :ref:`ADVANCE_MODE_AUTO<class_AnimationNodeStateMachineTransition_constant_ADVANCE_MODE_AUTO>`.
 
 .. rst-class:: classref-item-separator
 
@@ -259,7 +259,7 @@ Lower priority transitions are preferred when travelling through the tree via :r
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **reset** = ``true``
+:ref:`bool<class_bool>` **reset** = ``true`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_reset>`
 
 .. rst-class:: classref-property-setget
 
@@ -276,7 +276,7 @@ If ``true``, the destination animation is played back from the beginning when sw
 
 .. rst-class:: classref-property
 
-:ref:`SwitchMode<enum_AnimationNodeStateMachineTransition_SwitchMode>` **switch_mode** = ``0``
+:ref:`SwitchMode<enum_AnimationNodeStateMachineTransition_SwitchMode>` **switch_mode** = ``0`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_switch_mode>`
 
 .. rst-class:: classref-property-setget
 
@@ -293,14 +293,14 @@ The transition type.
 
 .. rst-class:: classref-property
 
-:ref:`Curve<class_Curve>` **xfade_curve**
+:ref:`Curve<class_Curve>` **xfade_curve** :ref:`🔗<class_AnimationNodeStateMachineTransition_property_xfade_curve>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_xfade_curve**\ (\ value\: :ref:`Curve<class_Curve>`\ )
 - :ref:`Curve<class_Curve>` **get_xfade_curve**\ (\ )
 
-Ease curve for better control over cross-fade between this state and the next.
+Ease curve for better control over cross-fade between this state and the next. Should be a unit :ref:`Curve<class_Curve>`.
 
 .. rst-class:: classref-item-separator
 
@@ -310,7 +310,7 @@ Ease curve for better control over cross-fade between this state and the next.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **xfade_time** = ``0.0``
+:ref:`float<class_float>` **xfade_time** = ``0.0`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_xfade_time>`
 
 .. rst-class:: classref-property-setget
 

+ 2 - 2
classes/class_animationnodesync.rst

@@ -14,7 +14,7 @@ AnimationNodeSync
 
 **Inherited By:** :ref:`AnimationNodeAdd2<class_AnimationNodeAdd2>`, :ref:`AnimationNodeAdd3<class_AnimationNodeAdd3>`, :ref:`AnimationNodeBlend2<class_AnimationNodeBlend2>`, :ref:`AnimationNodeBlend3<class_AnimationNodeBlend3>`, :ref:`AnimationNodeOneShot<class_AnimationNodeOneShot>`, :ref:`AnimationNodeSub2<class_AnimationNodeSub2>`, :ref:`AnimationNodeTransition<class_AnimationNodeTransition>`
 
-Base class for :ref:`AnimationNode<class_AnimationNode>`\ s with more than two input ports that must be synchronized.
+Base class for :ref:`AnimationNode<class_AnimationNode>`\ s with multiple input ports that must be synchronized.
 
 .. rst-class:: classref-introduction-group
 
@@ -55,7 +55,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **sync** = ``false``
+:ref:`bool<class_bool>` **sync** = ``false`` :ref:`🔗<class_AnimationNodeSync_property_sync>`
 
 .. rst-class:: classref-property-setget
 

+ 1 - 1
classes/class_animationnodetimescale.rst

@@ -28,7 +28,7 @@ Tutorials
 
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
-- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/2748>`__
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 34 - 0
classes/class_animationnodetimeseek.rst

@@ -55,6 +55,40 @@ Tutorials
 
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
+.. rst-class:: classref-reftable-group
+
+Properties
+----------
+
+.. table::
+   :widths: auto
+
+   +-------------------------+------------------------------------------------------------------------------+----------+
+   | :ref:`bool<class_bool>` | :ref:`explicit_elapse<class_AnimationNodeTimeSeek_property_explicit_elapse>` | ``true`` |
+   +-------------------------+------------------------------------------------------------------------------+----------+
+
+.. rst-class:: classref-section-separator
+
+----
+
+.. rst-class:: classref-descriptions-group
+
+Property Descriptions
+---------------------
+
+.. _class_AnimationNodeTimeSeek_property_explicit_elapse:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **explicit_elapse** = ``true`` :ref:`🔗<class_AnimationNodeTimeSeek_property_explicit_elapse>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_explicit_elapse**\ (\ value\: :ref:`bool<class_bool>`\ )
+- :ref:`bool<class_bool>` **is_explicit_elapse**\ (\ )
+
+If ``true``, some processes are executed to handle keys between seeks, such as calculating root motion and finding the nearest discrete key.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 13 - 13
classes/class_animationnodetransition.rst

@@ -65,9 +65,9 @@ Tutorials
 
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
-- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/2748>`__
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -122,7 +122,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **allow_transition_to_self** = ``false``
+:ref:`bool<class_bool>` **allow_transition_to_self** = ``false`` :ref:`🔗<class_AnimationNodeTransition_property_allow_transition_to_self>`
 
 .. rst-class:: classref-property-setget
 
@@ -139,7 +139,7 @@ If ``true``, allows transition to the self state. When the reset option is enabl
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **input_count** = ``0``
+:ref:`int<class_int>` **input_count** = ``0`` :ref:`🔗<class_AnimationNodeTransition_property_input_count>`
 
 .. rst-class:: classref-property-setget
 
@@ -156,14 +156,14 @@ The number of enabled input ports for this animation node.
 
 .. rst-class:: classref-property
 
-:ref:`Curve<class_Curve>` **xfade_curve**
+:ref:`Curve<class_Curve>` **xfade_curve** :ref:`🔗<class_AnimationNodeTransition_property_xfade_curve>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_xfade_curve**\ (\ value\: :ref:`Curve<class_Curve>`\ )
 - :ref:`Curve<class_Curve>` **get_xfade_curve**\ (\ )
 
-Determines how cross-fading between animations is eased. If empty, the transition will be linear.
+Determines how cross-fading between animations is eased. If empty, the transition will be linear. Should be a unit :ref:`Curve<class_Curve>`.
 
 .. rst-class:: classref-item-separator
 
@@ -173,7 +173,7 @@ Determines how cross-fading between animations is eased. If empty, the transitio
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **xfade_time** = ``0.0``
+:ref:`float<class_float>` **xfade_time** = ``0.0`` :ref:`🔗<class_AnimationNodeTransition_property_xfade_time>`
 
 .. rst-class:: classref-property-setget
 
@@ -197,7 +197,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_input_loop_broken_at_end**\ (\ input\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **is_input_loop_broken_at_end**\ (\ input\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNodeTransition_method_is_input_loop_broken_at_end>`
 
 Returns whether the animation breaks the loop at the end of the loop cycle for transition.
 
@@ -209,7 +209,7 @@ Returns whether the animation breaks the loop at the end of the loop cycle for t
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_input_reset**\ (\ input\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **is_input_reset**\ (\ input\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNodeTransition_method_is_input_reset>`
 
 Returns whether the animation restarts when the animation transitions from the other animation.
 
@@ -221,7 +221,7 @@ Returns whether the animation restarts when the animation transitions from the o
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_input_set_as_auto_advance**\ (\ input\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **is_input_set_as_auto_advance**\ (\ input\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AnimationNodeTransition_method_is_input_set_as_auto_advance>`
 
 Returns ``true`` if auto-advance is enabled for the given ``input`` index.
 
@@ -233,7 +233,7 @@ Returns ``true`` if auto-advance is enabled for the given ``input`` index.
 
 .. rst-class:: classref-method
 
-|void| **set_input_as_auto_advance**\ (\ input\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ )
+|void| **set_input_as_auto_advance**\ (\ input\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AnimationNodeTransition_method_set_input_as_auto_advance>`
 
 Enables or disables auto-advance for the given ``input`` index. If enabled, state changes to the next input after playing the animation once. If enabled for the last input state, it loops to the first.
 
@@ -245,7 +245,7 @@ Enables or disables auto-advance for the given ``input`` index. If enabled, stat
 
 .. rst-class:: classref-method
 
-|void| **set_input_break_loop_at_end**\ (\ input\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ )
+|void| **set_input_break_loop_at_end**\ (\ input\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AnimationNodeTransition_method_set_input_break_loop_at_end>`
 
 If ``true``, breaks the loop at the end of the loop cycle for transition, even if the animation is looping.
 
@@ -257,7 +257,7 @@ If ``true``, breaks the loop at the end of the loop cycle for transition, even i
 
 .. rst-class:: classref-method
 
-|void| **set_input_reset**\ (\ input\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ )
+|void| **set_input_reset**\ (\ input\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AnimationNodeTransition_method_set_input_reset>`
 
 If ``true``, the destination animation is restarted when the animation transitions.
 

+ 340 - 108
classes/class_animationplayer.rst

@@ -36,7 +36,7 @@ Tutorials
 
 - :doc:`Animation documentation index <../tutorials/animation/index>`
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -46,23 +46,31 @@ Properties
 .. table::
    :widths: auto
 
-   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
-   | :ref:`String<class_String>` | :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>`                   |           |
-   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
-   | :ref:`String<class_String>` | :ref:`autoplay<class_AnimationPlayer_property_autoplay>`                                       | ``""``    |
-   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
-   | :ref:`String<class_String>` | :ref:`current_animation<class_AnimationPlayer_property_current_animation>`                     | ``""``    |
-   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
-   | :ref:`float<class_float>`   | :ref:`current_animation_length<class_AnimationPlayer_property_current_animation_length>`       |           |
-   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
-   | :ref:`float<class_float>`   | :ref:`current_animation_position<class_AnimationPlayer_property_current_animation_position>`   |           |
-   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
-   | :ref:`bool<class_bool>`     | :ref:`movie_quit_on_finish<class_AnimationPlayer_property_movie_quit_on_finish>`               | ``false`` |
-   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
-   | :ref:`float<class_float>`   | :ref:`playback_default_blend_time<class_AnimationPlayer_property_playback_default_blend_time>` | ``0.0``   |
-   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
-   | :ref:`float<class_float>`   | :ref:`speed_scale<class_AnimationPlayer_property_speed_scale>`                                 | ``1.0``   |
-   +-----------------------------+------------------------------------------------------------------------------------------------+-----------+
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`String<class_String>`                      | :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>`                                       |           |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`String<class_String>`                      | :ref:`autoplay<class_AnimationPlayer_property_autoplay>`                                                           | ``""``    |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`String<class_String>`                      | :ref:`current_animation<class_AnimationPlayer_property_current_animation>`                                         | ``""``    |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`                        | :ref:`current_animation_length<class_AnimationPlayer_property_current_animation_length>`                           |           |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`                        | :ref:`current_animation_position<class_AnimationPlayer_property_current_animation_position>`                       |           |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`bool<class_bool>`                          | :ref:`movie_quit_on_finish<class_AnimationPlayer_property_movie_quit_on_finish>`                                   | ``false`` |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`bool<class_bool>`                          | :ref:`playback_auto_capture<class_AnimationPlayer_property_playback_auto_capture>`                                 | ``true``  |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`                        | :ref:`playback_auto_capture_duration<class_AnimationPlayer_property_playback_auto_capture_duration>`               | ``-1.0``  |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`EaseType<enum_Tween_EaseType>`             | :ref:`playback_auto_capture_ease_type<class_AnimationPlayer_property_playback_auto_capture_ease_type>`             | ``0``     |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`TransitionType<enum_Tween_TransitionType>` | :ref:`playback_auto_capture_transition_type<class_AnimationPlayer_property_playback_auto_capture_transition_type>` | ``0``     |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`                        | :ref:`playback_default_blend_time<class_AnimationPlayer_property_playback_default_blend_time>`                     | ``0.0``   |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
+   | :ref:`float<class_float>`                        | :ref:`speed_scale<class_AnimationPlayer_property_speed_scale>`                                                     | ``1.0``   |
+   +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+-----------+
 
 .. rst-class:: classref-reftable-group
 
@@ -72,49 +80,69 @@ Methods
 .. table::
    :widths: auto
 
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`StringName<class_StringName>`                                            | :ref:`animation_get_next<class_AnimationPlayer_method_animation_get_next>`\ (\ animation_from\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                                                                                                                              |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`animation_set_next<class_AnimationPlayer_method_animation_set_next>`\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`\ )                                                                                                                                                                                                                                                  |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`clear_queue<class_AnimationPlayer_method_clear_queue>`\ (\ )                                                                                                                                                                                                                                                                                                                                                                          |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                                                      | :ref:`get_blend_time<class_AnimationPlayer_method_get_blend_time>`\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                                                                                  |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>`   | :ref:`get_method_call_mode<class_AnimationPlayer_method_get_method_call_mode>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                                                      | :ref:`get_playing_speed<class_AnimationPlayer_method_get_playing_speed>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                      |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` | :ref:`get_process_callback<class_AnimationPlayer_method_get_process_callback>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PackedStringArray<class_PackedStringArray>`                              | :ref:`get_queue<class_AnimationPlayer_method_get_queue>`\ (\ )                                                                                                                                                                                                                                                                                                                                                                              |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`NodePath<class_NodePath>`                                                | :ref:`get_root<class_AnimationPlayer_method_get_root>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                        |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                                                        | :ref:`is_playing<class_AnimationPlayer_method_is_playing>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                    |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`pause<class_AnimationPlayer_method_pause>`\ (\ )                                                                                                                                                                                                                                                                                                                                                                                      |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`play<class_AnimationPlayer_method_play>`\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ )                                                                                                                                                                                           |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`play_backwards<class_AnimationPlayer_method_play_backwards>`\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1\ )                                                                                                                                                                                                                                                                   |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`play_with_capture<class_AnimationPlayer_method_play_with_capture>`\ (\ name\: :ref:`StringName<class_StringName>`, duration\: :ref:`float<class_float>` = -1.0, custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false, trans_type\: :ref:`TransitionType<enum_Tween_TransitionType>` = 0, ease_type\: :ref:`EaseType<enum_Tween_EaseType>` = 0\ ) |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`queue<class_AnimationPlayer_method_queue>`\ (\ name\: :ref:`StringName<class_StringName>`\ )                                                                                                                                                                                                                                                                                                                                          |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`seek<class_AnimationPlayer_method_seek>`\ (\ seconds\: :ref:`float<class_float>`, update\: :ref:`bool<class_bool>` = false, update_only\: :ref:`bool<class_bool>` = false\ )                                                                                                                                                                                                                                                          |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`set_blend_time<class_AnimationPlayer_method_set_blend_time>`\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`, sec\: :ref:`float<class_float>`\ )                                                                                                                                                                                                                         |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`set_method_call_mode<class_AnimationPlayer_method_set_method_call_mode>`\ (\ mode\: :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>`\ )                                                                                                                                                                                                                                                                   |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`set_process_callback<class_AnimationPlayer_method_set_process_callback>`\ (\ mode\: :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>`\ )                                                                                                                                                                                                                                                                 |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`set_root<class_AnimationPlayer_method_set_root>`\ (\ path\: :ref:`NodePath<class_NodePath>`\ )                                                                                                                                                                                                                                                                                                                                        |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                                         | :ref:`stop<class_AnimationPlayer_method_stop>`\ (\ keep_state\: :ref:`bool<class_bool>` = false\ )                                                                                                                                                                                                                                                                                                                                          |
-   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`StringName<class_StringName>`                                            | :ref:`animation_get_next<class_AnimationPlayer_method_animation_get_next>`\ (\ animation_from\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                                                                                                                                    |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`animation_set_next<class_AnimationPlayer_method_animation_set_next>`\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`\ )                                                                                                                                                                                                                                                        |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`clear_queue<class_AnimationPlayer_method_clear_queue>`\ (\ )                                                                                                                                                                                                                                                                                                                                                                                |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                                      | :ref:`get_blend_time<class_AnimationPlayer_method_get_blend_time>`\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`\ ) |const|                                                                                                                                                                                                                                                        |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>`   | :ref:`get_method_call_mode<class_AnimationPlayer_method_get_method_call_mode>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                      |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                                      | :ref:`get_playing_speed<class_AnimationPlayer_method_get_playing_speed>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                            |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` | :ref:`get_process_callback<class_AnimationPlayer_method_get_process_callback>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                      |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PackedStringArray<class_PackedStringArray>`                              | :ref:`get_queue<class_AnimationPlayer_method_get_queue>`\ (\ )                                                                                                                                                                                                                                                                                                                                                                                    |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`NodePath<class_NodePath>`                                                | :ref:`get_root<class_AnimationPlayer_method_get_root>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                              |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                                      | :ref:`get_section_end_time<class_AnimationPlayer_method_get_section_end_time>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                      |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                                      | :ref:`get_section_start_time<class_AnimationPlayer_method_get_section_start_time>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                  |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                                        | :ref:`has_section<class_AnimationPlayer_method_has_section>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                        |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                                        | :ref:`is_playing<class_AnimationPlayer_method_is_playing>`\ (\ ) |const|                                                                                                                                                                                                                                                                                                                                                                          |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`pause<class_AnimationPlayer_method_pause>`\ (\ )                                                                                                                                                                                                                                                                                                                                                                                            |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`play<class_AnimationPlayer_method_play>`\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ )                                                                                                                                                                                                 |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`play_backwards<class_AnimationPlayer_method_play_backwards>`\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1\ )                                                                                                                                                                                                                                                                         |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`play_section<class_AnimationPlayer_method_play_section>`\ (\ name\: :ref:`StringName<class_StringName>` = &"", start_time\: :ref:`float<class_float>` = -1, end_time\: :ref:`float<class_float>` = -1, custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ )                                                                                         |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`play_section_backwards<class_AnimationPlayer_method_play_section_backwards>`\ (\ name\: :ref:`StringName<class_StringName>` = &"", start_time\: :ref:`float<class_float>` = -1, end_time\: :ref:`float<class_float>` = -1, custom_blend\: :ref:`float<class_float>` = -1\ )                                                                                                                                                                 |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`play_section_with_markers<class_AnimationPlayer_method_play_section_with_markers>`\ (\ name\: :ref:`StringName<class_StringName>` = &"", start_marker\: :ref:`StringName<class_StringName>` = &"", end_marker\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ )                                     |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`play_section_with_markers_backwards<class_AnimationPlayer_method_play_section_with_markers_backwards>`\ (\ name\: :ref:`StringName<class_StringName>` = &"", start_marker\: :ref:`StringName<class_StringName>` = &"", end_marker\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1\ )                                                                                                             |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`play_with_capture<class_AnimationPlayer_method_play_with_capture>`\ (\ name\: :ref:`StringName<class_StringName>` = &"", duration\: :ref:`float<class_float>` = -1.0, custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false, trans_type\: :ref:`TransitionType<enum_Tween_TransitionType>` = 0, ease_type\: :ref:`EaseType<enum_Tween_EaseType>` = 0\ ) |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`queue<class_AnimationPlayer_method_queue>`\ (\ name\: :ref:`StringName<class_StringName>`\ )                                                                                                                                                                                                                                                                                                                                                |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`reset_section<class_AnimationPlayer_method_reset_section>`\ (\ )                                                                                                                                                                                                                                                                                                                                                                            |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`seek<class_AnimationPlayer_method_seek>`\ (\ seconds\: :ref:`float<class_float>`, update\: :ref:`bool<class_bool>` = false, update_only\: :ref:`bool<class_bool>` = false\ )                                                                                                                                                                                                                                                                |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`set_blend_time<class_AnimationPlayer_method_set_blend_time>`\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`, sec\: :ref:`float<class_float>`\ )                                                                                                                                                                                                                               |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`set_method_call_mode<class_AnimationPlayer_method_set_method_call_mode>`\ (\ mode\: :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>`\ )                                                                                                                                                                                                                                                                         |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`set_process_callback<class_AnimationPlayer_method_set_process_callback>`\ (\ mode\: :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>`\ )                                                                                                                                                                                                                                                                       |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`set_root<class_AnimationPlayer_method_set_root>`\ (\ path\: :ref:`NodePath<class_NodePath>`\ )                                                                                                                                                                                                                                                                                                                                              |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`set_section<class_AnimationPlayer_method_set_section>`\ (\ start_time\: :ref:`float<class_float>` = -1, end_time\: :ref:`float<class_float>` = -1\ )                                                                                                                                                                                                                                                                                        |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`set_section_with_markers<class_AnimationPlayer_method_set_section_with_markers>`\ (\ start_marker\: :ref:`StringName<class_StringName>` = &"", end_marker\: :ref:`StringName<class_StringName>` = &""\ )                                                                                                                                                                                                                                    |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                                         | :ref:`stop<class_AnimationPlayer_method_stop>`\ (\ keep_state\: :ref:`bool<class_bool>` = false\ )                                                                                                                                                                                                                                                                                                                                                |
+   +--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -129,11 +157,11 @@ Signals
 
 .. rst-class:: classref-signal
 
-**animation_changed**\ (\ old_name\: :ref:`StringName<class_StringName>`, new_name\: :ref:`StringName<class_StringName>`\ )
+**animation_changed**\ (\ old_name\: :ref:`StringName<class_StringName>`, new_name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationPlayer_signal_animation_changed>`
 
-Emitted when a queued animation plays after the previous animation finished. See also :ref:`queue<class_AnimationPlayer_method_queue>`.
+Emitted when a queued animation plays after the previous animation finished. See also :ref:`queue()<class_AnimationPlayer_method_queue>`.
 
-\ **Note:** The signal is not emitted when the animation is changed via :ref:`play<class_AnimationPlayer_method_play>` or by an :ref:`AnimationTree<class_AnimationTree>`.
+\ **Note:** The signal is not emitted when the animation is changed via :ref:`play()<class_AnimationPlayer_method_play>` or by an :ref:`AnimationTree<class_AnimationTree>`.
 
 .. rst-class:: classref-item-separator
 
@@ -143,7 +171,7 @@ Emitted when a queued animation plays after the previous animation finished. See
 
 .. rst-class:: classref-signal
 
-**current_animation_changed**\ (\ name\: :ref:`String<class_String>`\ )
+**current_animation_changed**\ (\ name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_AnimationPlayer_signal_current_animation_changed>`
 
 Emitted when :ref:`current_animation<class_AnimationPlayer_property_current_animation>` changes.
 
@@ -160,7 +188,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **AnimationProcessCallback**:
+enum **AnimationProcessCallback**: :ref:`🔗<enum_AnimationPlayer_AnimationProcessCallback>`
 
 .. _class_AnimationPlayer_constant_ANIMATION_PROCESS_PHYSICS:
 
@@ -200,7 +228,7 @@ enum **AnimationProcessCallback**:
 
 .. rst-class:: classref-enumeration
 
-enum **AnimationMethodCallMode**:
+enum **AnimationMethodCallMode**: :ref:`🔗<enum_AnimationPlayer_AnimationMethodCallMode>`
 
 .. _class_AnimationPlayer_constant_ANIMATION_METHOD_CALL_DEFERRED:
 
@@ -235,7 +263,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **assigned_animation**
+:ref:`String<class_String>` **assigned_animation** :ref:`🔗<class_AnimationPlayer_property_assigned_animation>`
 
 .. rst-class:: classref-property-setget
 
@@ -252,7 +280,7 @@ If playing, the current animation's key, otherwise, the animation last played. W
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **autoplay** = ``""``
+:ref:`String<class_String>` **autoplay** = ``""`` :ref:`🔗<class_AnimationPlayer_property_autoplay>`
 
 .. rst-class:: classref-property-setget
 
@@ -269,14 +297,14 @@ The key of the animation to play when the scene loads.
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **current_animation** = ``""``
+:ref:`String<class_String>` **current_animation** = ``""`` :ref:`🔗<class_AnimationPlayer_property_current_animation>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_current_animation**\ (\ value\: :ref:`String<class_String>`\ )
 - :ref:`String<class_String>` **get_current_animation**\ (\ )
 
-The key of the currently playing animation. If no animation is playing, the property's value is an empty string. Changing this value does not restart the animation. See :ref:`play<class_AnimationPlayer_method_play>` for more information on playing animations.
+The key of the currently playing animation. If no animation is playing, the property's value is an empty string. Changing this value does not restart the animation. See :ref:`play()<class_AnimationPlayer_method_play>` for more information on playing animations.
 
 \ **Note:** While this property appears in the Inspector, it's not meant to be edited, and it's not saved in the scene. This property is mainly used to get the currently playing animation, and internally for animation playback tracks. For more information, see :ref:`Animation<class_Animation>`.
 
@@ -288,7 +316,7 @@ The key of the currently playing animation. If no animation is playing, the prop
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **current_animation_length**
+:ref:`float<class_float>` **current_animation_length** :ref:`🔗<class_AnimationPlayer_property_current_animation_length>`
 
 .. rst-class:: classref-property-setget
 
@@ -304,7 +332,7 @@ The length (in seconds) of the currently playing animation.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **current_animation_position**
+:ref:`float<class_float>` **current_animation_position** :ref:`🔗<class_AnimationPlayer_property_current_animation_position>`
 
 .. rst-class:: classref-property-setget
 
@@ -320,14 +348,14 @@ The position (in seconds) of the currently playing animation.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **movie_quit_on_finish** = ``false``
+:ref:`bool<class_bool>` **movie_quit_on_finish** = ``false`` :ref:`🔗<class_AnimationPlayer_property_movie_quit_on_finish>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_movie_quit_on_finish_enabled**\ (\ value\: :ref:`bool<class_bool>`\ )
 - :ref:`bool<class_bool>` **is_movie_quit_on_finish_enabled**\ (\ )
 
-If ``true`` and the engine is running in Movie Maker mode (see :ref:`MovieWriter<class_MovieWriter>`), exits the engine with :ref:`SceneTree.quit<class_SceneTree_method_quit>` as soon as an animation is done playing in this **AnimationPlayer**. A message is printed when the engine quits for this reason.
+If ``true`` and the engine is running in Movie Maker mode (see :ref:`MovieWriter<class_MovieWriter>`), exits the engine with :ref:`SceneTree.quit()<class_SceneTree_method_quit>` as soon as an animation is done playing in this **AnimationPlayer**. A message is printed when the engine quits for this reason.
 
 \ **Note:** This obeys the same logic as the :ref:`AnimationMixer.animation_finished<class_AnimationMixer_signal_animation_finished>` signal, so it will not quit the engine if the animation is set to be looping.
 
@@ -335,11 +363,83 @@ If ``true`` and the engine is running in Movie Maker mode (see :ref:`MovieWriter
 
 ----
 
+.. _class_AnimationPlayer_property_playback_auto_capture:
+
+.. rst-class:: classref-property
+
+:ref:`bool<class_bool>` **playback_auto_capture** = ``true`` :ref:`🔗<class_AnimationPlayer_property_playback_auto_capture>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_auto_capture**\ (\ value\: :ref:`bool<class_bool>`\ )
+- :ref:`bool<class_bool>` **is_auto_capture**\ (\ )
+
+If ``true``, performs :ref:`AnimationMixer.capture()<class_AnimationMixer_method_capture>` before playback automatically. This means just :ref:`play_with_capture()<class_AnimationPlayer_method_play_with_capture>` is executed with default arguments instead of :ref:`play()<class_AnimationPlayer_method_play>`.
+
+\ **Note:** Capture interpolation is only performed if the animation contains a capture track. See also :ref:`Animation.UPDATE_CAPTURE<class_Animation_constant_UPDATE_CAPTURE>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationPlayer_property_playback_auto_capture_duration:
+
+.. rst-class:: classref-property
+
+:ref:`float<class_float>` **playback_auto_capture_duration** = ``-1.0`` :ref:`🔗<class_AnimationPlayer_property_playback_auto_capture_duration>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_auto_capture_duration**\ (\ value\: :ref:`float<class_float>`\ )
+- :ref:`float<class_float>` **get_auto_capture_duration**\ (\ )
+
+See also :ref:`play_with_capture()<class_AnimationPlayer_method_play_with_capture>` and :ref:`AnimationMixer.capture()<class_AnimationMixer_method_capture>`.
+
+If :ref:`playback_auto_capture_duration<class_AnimationPlayer_property_playback_auto_capture_duration>` is negative value, the duration is set to the interval between the current position and the first key.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationPlayer_property_playback_auto_capture_ease_type:
+
+.. rst-class:: classref-property
+
+:ref:`EaseType<enum_Tween_EaseType>` **playback_auto_capture_ease_type** = ``0`` :ref:`🔗<class_AnimationPlayer_property_playback_auto_capture_ease_type>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_auto_capture_ease_type**\ (\ value\: :ref:`EaseType<enum_Tween_EaseType>`\ )
+- :ref:`EaseType<enum_Tween_EaseType>` **get_auto_capture_ease_type**\ (\ )
+
+The ease type of the capture interpolation. See also :ref:`EaseType<enum_Tween_EaseType>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationPlayer_property_playback_auto_capture_transition_type:
+
+.. rst-class:: classref-property
+
+:ref:`TransitionType<enum_Tween_TransitionType>` **playback_auto_capture_transition_type** = ``0`` :ref:`🔗<class_AnimationPlayer_property_playback_auto_capture_transition_type>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_auto_capture_transition_type**\ (\ value\: :ref:`TransitionType<enum_Tween_TransitionType>`\ )
+- :ref:`TransitionType<enum_Tween_TransitionType>` **get_auto_capture_transition_type**\ (\ )
+
+The transition type of the capture interpolation. See also :ref:`TransitionType<enum_Tween_TransitionType>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AnimationPlayer_property_playback_default_blend_time:
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **playback_default_blend_time** = ``0.0``
+:ref:`float<class_float>` **playback_default_blend_time** = ``0.0`` :ref:`🔗<class_AnimationPlayer_property_playback_default_blend_time>`
 
 .. rst-class:: classref-property-setget
 
@@ -356,7 +456,7 @@ The default time in which to blend animations. Ranges from 0 to 4096 with 0.01 p
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **speed_scale** = ``1.0``
+:ref:`float<class_float>` **speed_scale** = ``1.0`` :ref:`🔗<class_AnimationPlayer_property_speed_scale>`
 
 .. rst-class:: classref-property-setget
 
@@ -380,7 +480,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **animation_get_next**\ (\ animation_from\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`StringName<class_StringName>` **animation_get_next**\ (\ animation_from\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationPlayer_method_animation_get_next>`
 
 Returns the key of the animation which is queued to play after the ``animation_from`` animation.
 
@@ -392,7 +492,7 @@ Returns the key of the animation which is queued to play after the ``animation_f
 
 .. rst-class:: classref-method
 
-|void| **animation_set_next**\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`\ )
+|void| **animation_set_next**\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationPlayer_method_animation_set_next>`
 
 Triggers the ``animation_to`` animation when the ``animation_from`` animation completes.
 
@@ -404,7 +504,7 @@ Triggers the ``animation_to`` animation when the ``animation_from`` animation co
 
 .. rst-class:: classref-method
 
-|void| **clear_queue**\ (\ )
+|void| **clear_queue**\ (\ ) :ref:`🔗<class_AnimationPlayer_method_clear_queue>`
 
 Clears all queued, unplayed animations.
 
@@ -416,7 +516,7 @@ Clears all queued, unplayed animations.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_blend_time**\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`float<class_float>` **get_blend_time**\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AnimationPlayer_method_get_blend_time>`
 
 Returns the blend time (in seconds) between two animations, referenced by their keys.
 
@@ -428,7 +528,7 @@ Returns the blend time (in seconds) between two animations, referenced by their
 
 .. rst-class:: classref-method
 
-:ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` **get_method_call_mode**\ (\ ) |const|
+:ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>` **get_method_call_mode**\ (\ ) |const| :ref:`🔗<class_AnimationPlayer_method_get_method_call_mode>`
 
 **Deprecated:** Use :ref:`AnimationMixer.callback_mode_method<class_AnimationMixer_property_callback_mode_method>` instead.
 
@@ -442,9 +542,9 @@ Returns the call mode used for "Call Method" tracks.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_playing_speed**\ (\ ) |const|
+:ref:`float<class_float>` **get_playing_speed**\ (\ ) |const| :ref:`🔗<class_AnimationPlayer_method_get_playing_speed>`
 
-Returns the actual playing speed of current animation or ``0`` if not playing. This speed is the :ref:`speed_scale<class_AnimationPlayer_property_speed_scale>` property multiplied by ``custom_speed`` argument specified when calling the :ref:`play<class_AnimationPlayer_method_play>` method.
+Returns the actual playing speed of current animation or ``0`` if not playing. This speed is the :ref:`speed_scale<class_AnimationPlayer_property_speed_scale>` property multiplied by ``custom_speed`` argument specified when calling the :ref:`play()<class_AnimationPlayer_method_play>` method.
 
 Returns a negative value if the current animation is playing backwards.
 
@@ -456,7 +556,7 @@ Returns a negative value if the current animation is playing backwards.
 
 .. rst-class:: classref-method
 
-:ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **get_process_callback**\ (\ ) |const|
+:ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>` **get_process_callback**\ (\ ) |const| :ref:`🔗<class_AnimationPlayer_method_get_process_callback>`
 
 **Deprecated:** Use :ref:`AnimationMixer.callback_mode_process<class_AnimationMixer_property_callback_mode_process>` instead.
 
@@ -470,7 +570,7 @@ Returns the process notification in which to update animations.
 
 .. rst-class:: classref-method
 
-:ref:`PackedStringArray<class_PackedStringArray>` **get_queue**\ (\ )
+:ref:`PackedStringArray<class_PackedStringArray>` **get_queue**\ (\ ) :ref:`🔗<class_AnimationPlayer_method_get_queue>`
 
 Returns a list of the animation keys that are currently queued to play.
 
@@ -482,7 +582,7 @@ Returns a list of the animation keys that are currently queued to play.
 
 .. rst-class:: classref-method
 
-:ref:`NodePath<class_NodePath>` **get_root**\ (\ ) |const|
+:ref:`NodePath<class_NodePath>` **get_root**\ (\ ) |const| :ref:`🔗<class_AnimationPlayer_method_get_root>`
 
 **Deprecated:** Use :ref:`AnimationMixer.root_node<class_AnimationMixer_property_root_node>` instead.
 
@@ -492,11 +592,47 @@ Returns the node which node path references will travel from.
 
 ----
 
+.. _class_AnimationPlayer_method_get_section_end_time:
+
+.. rst-class:: classref-method
+
+:ref:`float<class_float>` **get_section_end_time**\ (\ ) |const| :ref:`🔗<class_AnimationPlayer_method_get_section_end_time>`
+
+Returns the end time of the section currently being played.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationPlayer_method_get_section_start_time:
+
+.. rst-class:: classref-method
+
+:ref:`float<class_float>` **get_section_start_time**\ (\ ) |const| :ref:`🔗<class_AnimationPlayer_method_get_section_start_time>`
+
+Returns the start time of the section currently being played.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationPlayer_method_has_section:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **has_section**\ (\ ) |const| :ref:`🔗<class_AnimationPlayer_method_has_section>`
+
+Returns ``true`` if an animation is currently playing with section.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AnimationPlayer_method_is_playing:
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_playing**\ (\ ) |const|
+:ref:`bool<class_bool>` **is_playing**\ (\ ) |const| :ref:`🔗<class_AnimationPlayer_method_is_playing>`
 
 Returns ``true`` if an animation is currently playing (even if :ref:`speed_scale<class_AnimationPlayer_property_speed_scale>` and/or ``custom_speed`` are ``0``).
 
@@ -508,11 +644,11 @@ Returns ``true`` if an animation is currently playing (even if :ref:`speed_scale
 
 .. rst-class:: classref-method
 
-|void| **pause**\ (\ )
+|void| **pause**\ (\ ) :ref:`🔗<class_AnimationPlayer_method_pause>`
 
-Pauses the currently playing animation. The :ref:`current_animation_position<class_AnimationPlayer_property_current_animation_position>` will be kept and calling :ref:`play<class_AnimationPlayer_method_play>` or :ref:`play_backwards<class_AnimationPlayer_method_play_backwards>` without arguments or with the same animation name as :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>` will resume the animation.
+Pauses the currently playing animation. The :ref:`current_animation_position<class_AnimationPlayer_property_current_animation_position>` will be kept and calling :ref:`play()<class_AnimationPlayer_method_play>` or :ref:`play_backwards()<class_AnimationPlayer_method_play_backwards>` without arguments or with the same animation name as :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>` will resume the animation.
 
-See also :ref:`stop<class_AnimationPlayer_method_stop>`.
+See also :ref:`stop()<class_AnimationPlayer_method_stop>`.
 
 .. rst-class:: classref-item-separator
 
@@ -522,11 +658,11 @@ See also :ref:`stop<class_AnimationPlayer_method_stop>`.
 
 .. rst-class:: classref-method
 
-|void| **play**\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ )
+|void| **play**\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AnimationPlayer_method_play>`
 
 Plays the animation with key ``name``. Custom blend times and speed can be set.
 
-The ``from_end`` option only affects when switching to a new animation track, or if the same track but at the start or end. It does not affect resuming playback that was paused in the middle of an animation. If ``custom_speed`` is negative and ``from_end`` is ``true``, the animation will play backwards (which is equivalent to calling :ref:`play_backwards<class_AnimationPlayer_method_play_backwards>`).
+The ``from_end`` option only affects when switching to a new animation track, or if the same track but at the start or end. It does not affect resuming playback that was paused in the middle of an animation. If ``custom_speed`` is negative and ``from_end`` is ``true``, the animation will play backwards (which is equivalent to calling :ref:`play_backwards()<class_AnimationPlayer_method_play_backwards>`).
 
 The **AnimationPlayer** keeps track of its current or last played animation with :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>`. If this method is called with that same animation ``name``, or with no ``name`` parameter, the assigned animation will resume playing if it was paused.
 
@@ -540,11 +676,67 @@ The **AnimationPlayer** keeps track of its current or last played animation with
 
 .. rst-class:: classref-method
 
-|void| **play_backwards**\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1\ )
+|void| **play_backwards**\ (\ name\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1\ ) :ref:`🔗<class_AnimationPlayer_method_play_backwards>`
 
 Plays the animation with key ``name`` in reverse.
 
-This method is a shorthand for :ref:`play<class_AnimationPlayer_method_play>` with ``custom_speed = -1.0`` and ``from_end = true``, so see its description for more information.
+This method is a shorthand for :ref:`play()<class_AnimationPlayer_method_play>` with ``custom_speed = -1.0`` and ``from_end = true``, so see its description for more information.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationPlayer_method_play_section:
+
+.. rst-class:: classref-method
+
+|void| **play_section**\ (\ name\: :ref:`StringName<class_StringName>` = &"", start_time\: :ref:`float<class_float>` = -1, end_time\: :ref:`float<class_float>` = -1, custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AnimationPlayer_method_play_section>`
+
+Plays the animation with key ``name`` and the section starting from ``start_time`` and ending on ``end_time``. See also :ref:`play()<class_AnimationPlayer_method_play>`.
+
+Setting ``start_time`` to a value outside the range of the animation means the start of the animation will be used instead, and setting ``end_time`` to a value outside the range of the animation means the end of the animation will be used instead. ``start_time`` cannot be equal to ``end_time``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationPlayer_method_play_section_backwards:
+
+.. rst-class:: classref-method
+
+|void| **play_section_backwards**\ (\ name\: :ref:`StringName<class_StringName>` = &"", start_time\: :ref:`float<class_float>` = -1, end_time\: :ref:`float<class_float>` = -1, custom_blend\: :ref:`float<class_float>` = -1\ ) :ref:`🔗<class_AnimationPlayer_method_play_section_backwards>`
+
+Plays the animation with key ``name`` and the section starting from ``start_time`` and ending on ``end_time`` in reverse.
+
+This method is a shorthand for :ref:`play_section()<class_AnimationPlayer_method_play_section>` with ``custom_speed = -1.0`` and ``from_end = true``, see its description for more information.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationPlayer_method_play_section_with_markers:
+
+.. rst-class:: classref-method
+
+|void| **play_section_with_markers**\ (\ name\: :ref:`StringName<class_StringName>` = &"", start_marker\: :ref:`StringName<class_StringName>` = &"", end_marker\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AnimationPlayer_method_play_section_with_markers>`
+
+Plays the animation with key ``name`` and the section starting from ``start_marker`` and ending on ``end_marker``.
+
+If the start marker is empty, the section starts from the beginning of the animation. If the end marker is empty, the section ends on the end of the animation. See also :ref:`play()<class_AnimationPlayer_method_play>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationPlayer_method_play_section_with_markers_backwards:
+
+.. rst-class:: classref-method
+
+|void| **play_section_with_markers_backwards**\ (\ name\: :ref:`StringName<class_StringName>` = &"", start_marker\: :ref:`StringName<class_StringName>` = &"", end_marker\: :ref:`StringName<class_StringName>` = &"", custom_blend\: :ref:`float<class_float>` = -1\ ) :ref:`🔗<class_AnimationPlayer_method_play_section_with_markers_backwards>`
+
+Plays the animation with key ``name`` and the section starting from ``start_marker`` and ending on ``end_marker`` in reverse.
+
+This method is a shorthand for :ref:`play_section_with_markers()<class_AnimationPlayer_method_play_section_with_markers>` with ``custom_speed = -1.0`` and ``from_end = true``, see its description for more information.
 
 .. rst-class:: classref-item-separator
 
@@ -554,16 +746,18 @@ This method is a shorthand for :ref:`play<class_AnimationPlayer_method_play>` wi
 
 .. rst-class:: classref-method
 
-|void| **play_with_capture**\ (\ name\: :ref:`StringName<class_StringName>`, duration\: :ref:`float<class_float>` = -1.0, custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false, trans_type\: :ref:`TransitionType<enum_Tween_TransitionType>` = 0, ease_type\: :ref:`EaseType<enum_Tween_EaseType>` = 0\ )
+|void| **play_with_capture**\ (\ name\: :ref:`StringName<class_StringName>` = &"", duration\: :ref:`float<class_float>` = -1.0, custom_blend\: :ref:`float<class_float>` = -1, custom_speed\: :ref:`float<class_float>` = 1.0, from_end\: :ref:`bool<class_bool>` = false, trans_type\: :ref:`TransitionType<enum_Tween_TransitionType>` = 0, ease_type\: :ref:`EaseType<enum_Tween_EaseType>` = 0\ ) :ref:`🔗<class_AnimationPlayer_method_play_with_capture>`
 
-See :ref:`AnimationMixer.capture<class_AnimationMixer_method_capture>`. It is almost the same as the following:
+See also :ref:`AnimationMixer.capture()<class_AnimationMixer_method_capture>`.
+
+You can use this method to use more detailed options for capture than those performed by :ref:`playback_auto_capture<class_AnimationPlayer_property_playback_auto_capture>`. When :ref:`playback_auto_capture<class_AnimationPlayer_property_playback_auto_capture>` is ``false``, this method is almost the same as the following:
 
 ::
 
     capture(name, duration, trans_type, ease_type)
     play(name, custom_blend, custom_speed, from_end)
 
-If name is blank, it specifies :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>`.
+If ``name`` is blank, it specifies :ref:`assigned_animation<class_AnimationPlayer_property_assigned_animation>`.
 
 If ``duration`` is a negative value, the duration is set to the interval between the current position and the first key, when ``from_end`` is ``true``, uses the interval between the current position and the last key instead.
 
@@ -577,9 +771,9 @@ If ``duration`` is a negative value, the duration is set to the interval between
 
 .. rst-class:: classref-method
 
-|void| **queue**\ (\ name\: :ref:`StringName<class_StringName>`\ )
+|void| **queue**\ (\ name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AnimationPlayer_method_queue>`
 
-Queues an animation for playback once the current one is done.
+Queues an animation for playback once the current animation and all previously queued animations are done.
 
 \ **Note:** If a looped animation is currently playing, the queued animation will never play unless the looped animation is stopped somehow.
 
@@ -587,17 +781,29 @@ Queues an animation for playback once the current one is done.
 
 ----
 
+.. _class_AnimationPlayer_method_reset_section:
+
+.. rst-class:: classref-method
+
+|void| **reset_section**\ (\ ) :ref:`🔗<class_AnimationPlayer_method_reset_section>`
+
+Resets the current section if section is set.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AnimationPlayer_method_seek:
 
 .. rst-class:: classref-method
 
-|void| **seek**\ (\ seconds\: :ref:`float<class_float>`, update\: :ref:`bool<class_bool>` = false, update_only\: :ref:`bool<class_bool>` = false\ )
+|void| **seek**\ (\ seconds\: :ref:`float<class_float>`, update\: :ref:`bool<class_bool>` = false, update_only\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AnimationPlayer_method_seek>`
 
 Seeks the animation to the ``seconds`` point in time (in seconds). If ``update`` is ``true``, the animation updates too, otherwise it updates at process time. Events between the current frame and ``seconds`` are skipped.
 
 If ``update_only`` is ``true``, the method / audio / animation playback tracks will not be processed.
 
-\ **Note:** Seeking to the end of the animation doesn't emit :ref:`AnimationMixer.animation_finished<class_AnimationMixer_signal_animation_finished>`. If you want to skip animation and emit the signal, use :ref:`AnimationMixer.advance<class_AnimationMixer_method_advance>`.
+\ **Note:** Seeking to the end of the animation doesn't emit :ref:`AnimationMixer.animation_finished<class_AnimationMixer_signal_animation_finished>`. If you want to skip animation and emit the signal, use :ref:`AnimationMixer.advance()<class_AnimationMixer_method_advance>`.
 
 .. rst-class:: classref-item-separator
 
@@ -607,7 +813,7 @@ If ``update_only`` is ``true``, the method / audio / animation playback tracks w
 
 .. rst-class:: classref-method
 
-|void| **set_blend_time**\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`, sec\: :ref:`float<class_float>`\ )
+|void| **set_blend_time**\ (\ animation_from\: :ref:`StringName<class_StringName>`, animation_to\: :ref:`StringName<class_StringName>`, sec\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AnimationPlayer_method_set_blend_time>`
 
 Specifies a blend time (in seconds) between two animations, referenced by their keys.
 
@@ -619,7 +825,7 @@ Specifies a blend time (in seconds) between two animations, referenced by their
 
 .. rst-class:: classref-method
 
-|void| **set_method_call_mode**\ (\ mode\: :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>`\ )
+|void| **set_method_call_mode**\ (\ mode\: :ref:`AnimationMethodCallMode<enum_AnimationPlayer_AnimationMethodCallMode>`\ ) :ref:`🔗<class_AnimationPlayer_method_set_method_call_mode>`
 
 **Deprecated:** Use :ref:`AnimationMixer.callback_mode_method<class_AnimationMixer_property_callback_mode_method>` instead.
 
@@ -633,7 +839,7 @@ Sets the call mode used for "Call Method" tracks.
 
 .. rst-class:: classref-method
 
-|void| **set_process_callback**\ (\ mode\: :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>`\ )
+|void| **set_process_callback**\ (\ mode\: :ref:`AnimationProcessCallback<enum_AnimationPlayer_AnimationProcessCallback>`\ ) :ref:`🔗<class_AnimationPlayer_method_set_process_callback>`
 
 **Deprecated:** Use :ref:`AnimationMixer.callback_mode_process<class_AnimationMixer_property_callback_mode_process>` instead.
 
@@ -647,7 +853,7 @@ Sets the process notification in which to update animations.
 
 .. rst-class:: classref-method
 
-|void| **set_root**\ (\ path\: :ref:`NodePath<class_NodePath>`\ )
+|void| **set_root**\ (\ path\: :ref:`NodePath<class_NodePath>`\ ) :ref:`🔗<class_AnimationPlayer_method_set_root>`
 
 **Deprecated:** Use :ref:`AnimationMixer.root_node<class_AnimationMixer_property_root_node>` instead.
 
@@ -657,13 +863,39 @@ Sets the node which node path references will travel from.
 
 ----
 
+.. _class_AnimationPlayer_method_set_section:
+
+.. rst-class:: classref-method
+
+|void| **set_section**\ (\ start_time\: :ref:`float<class_float>` = -1, end_time\: :ref:`float<class_float>` = -1\ ) :ref:`🔗<class_AnimationPlayer_method_set_section>`
+
+Changes the start and end times of the section being played. The current playback position will be clamped within the new section. See also :ref:`play_section()<class_AnimationPlayer_method_play_section>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AnimationPlayer_method_set_section_with_markers:
+
+.. rst-class:: classref-method
+
+|void| **set_section_with_markers**\ (\ start_marker\: :ref:`StringName<class_StringName>` = &"", end_marker\: :ref:`StringName<class_StringName>` = &""\ ) :ref:`🔗<class_AnimationPlayer_method_set_section_with_markers>`
+
+Changes the start and end markers of the section being played. The current playback position will be clamped within the new section. See also :ref:`play_section_with_markers()<class_AnimationPlayer_method_play_section_with_markers>`.
+
+If the argument is empty, the section uses the beginning or end of the animation. If both are empty, it means that the section is not set.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AnimationPlayer_method_stop:
 
 .. rst-class:: classref-method
 
-|void| **stop**\ (\ keep_state\: :ref:`bool<class_bool>` = false\ )
+|void| **stop**\ (\ keep_state\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AnimationPlayer_method_stop>`
 
-Stops the currently playing animation. The animation position is reset to ``0`` and the ``custom_speed`` is reset to ``1.0``. See also :ref:`pause<class_AnimationPlayer_method_pause>`.
+Stops the currently playing animation. The animation position is reset to ``0`` and the ``custom_speed`` is reset to ``1.0``. See also :ref:`pause()<class_AnimationPlayer_method_pause>`.
 
 If ``keep_state`` is ``true``, the animation state is not updated visually.
 

+ 8 - 8
classes/class_animationtree.rst

@@ -30,7 +30,7 @@ Tutorials
 
 - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -79,7 +79,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**animation_player_changed**\ (\ )
+**animation_player_changed**\ (\ ) :ref:`🔗<class_AnimationTree_signal_animation_player_changed>`
 
 Emitted when the :ref:`anim_player<class_AnimationTree_property_anim_player>` is changed.
 
@@ -96,7 +96,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **AnimationProcessCallback**:
+enum **AnimationProcessCallback**: :ref:`🔗<enum_AnimationTree_AnimationProcessCallback>`
 
 .. _class_AnimationTree_constant_ANIMATION_PROCESS_PHYSICS:
 
@@ -141,7 +141,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`NodePath<class_NodePath>` **advance_expression_base_node** = ``NodePath(".")``
+:ref:`NodePath<class_NodePath>` **advance_expression_base_node** = ``NodePath(".")`` :ref:`🔗<class_AnimationTree_property_advance_expression_base_node>`
 
 .. rst-class:: classref-property-setget
 
@@ -158,7 +158,7 @@ The path to the :ref:`Node<class_Node>` used to evaluate the :ref:`AnimationNode
 
 .. rst-class:: classref-property
 
-:ref:`NodePath<class_NodePath>` **anim_player** = ``NodePath("")``
+:ref:`NodePath<class_NodePath>` **anim_player** = ``NodePath("")`` :ref:`🔗<class_AnimationTree_property_anim_player>`
 
 .. rst-class:: classref-property-setget
 
@@ -175,7 +175,7 @@ The path to the :ref:`AnimationPlayer<class_AnimationPlayer>` used for animating
 
 .. rst-class:: classref-property
 
-:ref:`AnimationRootNode<class_AnimationRootNode>` **tree_root**
+:ref:`AnimationRootNode<class_AnimationRootNode>` **tree_root** :ref:`🔗<class_AnimationTree_property_tree_root>`
 
 .. rst-class:: classref-property-setget
 
@@ -197,7 +197,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **get_process_callback**\ (\ ) |const|
+:ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **get_process_callback**\ (\ ) |const| :ref:`🔗<class_AnimationTree_method_get_process_callback>`
 
 **Deprecated:** Use :ref:`AnimationMixer.callback_mode_process<class_AnimationMixer_property_callback_mode_process>` instead.
 
@@ -211,7 +211,7 @@ Returns the process notification in which to update animations.
 
 .. rst-class:: classref-method
 
-|void| **set_process_callback**\ (\ mode\: :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>`\ )
+|void| **set_process_callback**\ (\ mode\: :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>`\ ) :ref:`🔗<class_AnimationTree_method_set_process_callback>`
 
 **Deprecated:** Use :ref:`AnimationMixer.callback_mode_process<class_AnimationMixer_property_callback_mode_process>` instead.
 

+ 35 - 35
classes/class_area2d.rst

@@ -35,11 +35,11 @@ Tutorials
 
 - :doc:`Using Area2D <../tutorials/physics/using_area_2d>`
 
-- `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
+- `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/2712>`__
 
-- `2D Pong Demo <https://godotengine.org/asset-library/asset/121>`__
+- `2D Pong Demo <https://godotengine.org/asset-library/asset/2728>`__
 
-- `2D Platformer Demo <https://godotengine.org/asset-library/asset/120>`__
+- `2D Platformer Demo <https://godotengine.org/asset-library/asset/2727>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -116,7 +116,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**area_entered**\ (\ area\: :ref:`Area2D<class_Area2D>`\ )
+**area_entered**\ (\ area\: :ref:`Area2D<class_Area2D>`\ ) :ref:`🔗<class_Area2D_signal_area_entered>`
 
 Emitted when the received ``area`` enters this area. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
@@ -128,7 +128,7 @@ Emitted when the received ``area`` enters this area. Requires :ref:`monitoring<c
 
 .. rst-class:: classref-signal
 
-**area_exited**\ (\ area\: :ref:`Area2D<class_Area2D>`\ )
+**area_exited**\ (\ area\: :ref:`Area2D<class_Area2D>`\ ) :ref:`🔗<class_Area2D_signal_area_exited>`
 
 Emitted when the received ``area`` exits this area. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
@@ -140,13 +140,13 @@ Emitted when the received ``area`` exits this area. Requires :ref:`monitoring<cl
 
 .. rst-class:: classref-signal
 
-**area_shape_entered**\ (\ area_rid\: :ref:`RID<class_RID>`, area\: :ref:`Area2D<class_Area2D>`, area_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ )
+**area_shape_entered**\ (\ area_rid\: :ref:`RID<class_RID>`, area\: :ref:`Area2D<class_Area2D>`, area_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Area2D_signal_area_shape_entered>`
 
 Emitted when a :ref:`Shape2D<class_Shape2D>` of the received ``area`` enters a shape of this area. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
 \ ``local_shape_index`` and ``area_shape_index`` contain indices of the interacting shapes from this area and the other area, respectively. ``area_rid`` contains the :ref:`RID<class_RID>` of the other area. These values can be used with the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
 
-\ **Example of getting the** :ref:`CollisionShape2D<class_CollisionShape2D>` **node from the shape index:**\ 
+\ **Example:** Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node from the shape index:
 
 
 .. tabs::
@@ -169,7 +169,7 @@ Emitted when a :ref:`Shape2D<class_Shape2D>` of the received ``area`` enters a s
 
 .. rst-class:: classref-signal
 
-**area_shape_exited**\ (\ area_rid\: :ref:`RID<class_RID>`, area\: :ref:`Area2D<class_Area2D>`, area_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ )
+**area_shape_exited**\ (\ area_rid\: :ref:`RID<class_RID>`, area\: :ref:`Area2D<class_Area2D>`, area_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Area2D_signal_area_shape_exited>`
 
 Emitted when a :ref:`Shape2D<class_Shape2D>` of the received ``area`` exits a shape of this area. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
@@ -183,7 +183,7 @@ See also :ref:`area_shape_entered<class_Area2D_signal_area_shape_entered>`.
 
 .. rst-class:: classref-signal
 
-**body_entered**\ (\ body\: :ref:`Node2D<class_Node2D>`\ )
+**body_entered**\ (\ body\: :ref:`Node2D<class_Node2D>`\ ) :ref:`🔗<class_Area2D_signal_body_entered>`
 
 Emitted when the received ``body`` enters this area. ``body`` can be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>`. :ref:`TileMap<class_TileMap>`\ s are detected if their :ref:`TileSet<class_TileSet>` has collision shapes configured. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
@@ -195,7 +195,7 @@ Emitted when the received ``body`` enters this area. ``body`` can be a :ref:`Phy
 
 .. rst-class:: classref-signal
 
-**body_exited**\ (\ body\: :ref:`Node2D<class_Node2D>`\ )
+**body_exited**\ (\ body\: :ref:`Node2D<class_Node2D>`\ ) :ref:`🔗<class_Area2D_signal_body_exited>`
 
 Emitted when the received ``body`` exits this area. ``body`` can be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>`. :ref:`TileMap<class_TileMap>`\ s are detected if their :ref:`TileSet<class_TileSet>` has collision shapes configured. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
@@ -207,13 +207,13 @@ Emitted when the received ``body`` exits this area. ``body`` can be a :ref:`Phys
 
 .. rst-class:: classref-signal
 
-**body_shape_entered**\ (\ body_rid\: :ref:`RID<class_RID>`, body\: :ref:`Node2D<class_Node2D>`, body_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ )
+**body_shape_entered**\ (\ body_rid\: :ref:`RID<class_RID>`, body\: :ref:`Node2D<class_Node2D>`, body_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Area2D_signal_body_shape_entered>`
 
 Emitted when a :ref:`Shape2D<class_Shape2D>` of the received ``body`` enters a shape of this area. ``body`` can be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>`. :ref:`TileMap<class_TileMap>`\ s are detected if their :ref:`TileSet<class_TileSet>` has collision shapes configured. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
 \ ``local_shape_index`` and ``body_shape_index`` contain indices of the interacting shapes from this area and the interacting body, respectively. ``body_rid`` contains the :ref:`RID<class_RID>` of the body. These values can be used with the :ref:`PhysicsServer2D<class_PhysicsServer2D>`.
 
-\ **Example of getting the** :ref:`CollisionShape2D<class_CollisionShape2D>` **node from the shape index:**\ 
+\ **Example:** Get the :ref:`CollisionShape2D<class_CollisionShape2D>` node from the shape index:
 
 
 .. tabs::
@@ -236,7 +236,7 @@ Emitted when a :ref:`Shape2D<class_Shape2D>` of the received ``body`` enters a s
 
 .. rst-class:: classref-signal
 
-**body_shape_exited**\ (\ body_rid\: :ref:`RID<class_RID>`, body\: :ref:`Node2D<class_Node2D>`, body_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ )
+**body_shape_exited**\ (\ body_rid\: :ref:`RID<class_RID>`, body\: :ref:`Node2D<class_Node2D>`, body_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Area2D_signal_body_shape_exited>`
 
 Emitted when a :ref:`Shape2D<class_Shape2D>` of the received ``body`` exits a shape of this area. ``body`` can be a :ref:`PhysicsBody2D<class_PhysicsBody2D>` or a :ref:`TileMap<class_TileMap>`. :ref:`TileMap<class_TileMap>`\ s are detected if their :ref:`TileSet<class_TileSet>` has collision shapes configured. Requires :ref:`monitoring<class_Area2D_property_monitoring>` to be set to ``true``.
 
@@ -255,7 +255,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **SpaceOverride**:
+enum **SpaceOverride**: :ref:`🔗<enum_Area2D_SpaceOverride>`
 
 .. _class_Area2D_constant_SPACE_OVERRIDE_DISABLED:
 
@@ -310,7 +310,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **angular_damp** = ``1.0``
+:ref:`float<class_float>` **angular_damp** = ``1.0`` :ref:`🔗<class_Area2D_property_angular_damp>`
 
 .. rst-class:: classref-property-setget
 
@@ -329,7 +329,7 @@ See :ref:`ProjectSettings.physics/2d/default_angular_damp<class_ProjectSettings_
 
 .. rst-class:: classref-property
 
-:ref:`SpaceOverride<enum_Area2D_SpaceOverride>` **angular_damp_space_override** = ``0``
+:ref:`SpaceOverride<enum_Area2D_SpaceOverride>` **angular_damp_space_override** = ``0`` :ref:`🔗<class_Area2D_property_angular_damp_space_override>`
 
 .. rst-class:: classref-property-setget
 
@@ -346,7 +346,7 @@ Override mode for angular damping calculations within this area. See :ref:`Space
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **audio_bus_name** = ``&"Master"``
+:ref:`StringName<class_StringName>` **audio_bus_name** = ``&"Master"`` :ref:`🔗<class_Area2D_property_audio_bus_name>`
 
 .. rst-class:: classref-property-setget
 
@@ -363,7 +363,7 @@ The name of the area's audio bus.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **audio_bus_override** = ``false``
+:ref:`bool<class_bool>` **audio_bus_override** = ``false`` :ref:`🔗<class_Area2D_property_audio_bus_override>`
 
 .. rst-class:: classref-property-setget
 
@@ -380,7 +380,7 @@ If ``true``, the area's audio bus overrides the default audio bus.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **gravity** = ``980.0``
+:ref:`float<class_float>` **gravity** = ``980.0`` :ref:`🔗<class_Area2D_property_gravity>`
 
 .. rst-class:: classref-property-setget
 
@@ -397,7 +397,7 @@ The area's gravity intensity (in pixels per second squared). This value multipli
 
 .. rst-class:: classref-property
 
-:ref:`Vector2<class_Vector2>` **gravity_direction** = ``Vector2(0, 1)``
+:ref:`Vector2<class_Vector2>` **gravity_direction** = ``Vector2(0, 1)`` :ref:`🔗<class_Area2D_property_gravity_direction>`
 
 .. rst-class:: classref-property-setget
 
@@ -414,7 +414,7 @@ The area's gravity vector (not normalized).
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **gravity_point** = ``false``
+:ref:`bool<class_bool>` **gravity_point** = ``false`` :ref:`🔗<class_Area2D_property_gravity_point>`
 
 .. rst-class:: classref-property-setget
 
@@ -431,7 +431,7 @@ If ``true``, gravity is calculated from a point (set via :ref:`gravity_point_cen
 
 .. rst-class:: classref-property
 
-:ref:`Vector2<class_Vector2>` **gravity_point_center** = ``Vector2(0, 1)``
+:ref:`Vector2<class_Vector2>` **gravity_point_center** = ``Vector2(0, 1)`` :ref:`🔗<class_Area2D_property_gravity_point_center>`
 
 .. rst-class:: classref-property-setget
 
@@ -448,7 +448,7 @@ If gravity is a point (see :ref:`gravity_point<class_Area2D_property_gravity_poi
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **gravity_point_unit_distance** = ``0.0``
+:ref:`float<class_float>` **gravity_point_unit_distance** = ``0.0`` :ref:`🔗<class_Area2D_property_gravity_point_unit_distance>`
 
 .. rst-class:: classref-property-setget
 
@@ -467,7 +467,7 @@ The above is true only when the unit distance is a positive number. When this is
 
 .. rst-class:: classref-property
 
-:ref:`SpaceOverride<enum_Area2D_SpaceOverride>` **gravity_space_override** = ``0``
+:ref:`SpaceOverride<enum_Area2D_SpaceOverride>` **gravity_space_override** = ``0`` :ref:`🔗<class_Area2D_property_gravity_space_override>`
 
 .. rst-class:: classref-property-setget
 
@@ -484,7 +484,7 @@ Override mode for gravity calculations within this area. See :ref:`SpaceOverride
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **linear_damp** = ``0.1``
+:ref:`float<class_float>` **linear_damp** = ``0.1`` :ref:`🔗<class_Area2D_property_linear_damp>`
 
 .. rst-class:: classref-property-setget
 
@@ -503,7 +503,7 @@ See :ref:`ProjectSettings.physics/2d/default_linear_damp<class_ProjectSettings_p
 
 .. rst-class:: classref-property
 
-:ref:`SpaceOverride<enum_Area2D_SpaceOverride>` **linear_damp_space_override** = ``0``
+:ref:`SpaceOverride<enum_Area2D_SpaceOverride>` **linear_damp_space_override** = ``0`` :ref:`🔗<class_Area2D_property_linear_damp_space_override>`
 
 .. rst-class:: classref-property-setget
 
@@ -520,7 +520,7 @@ Override mode for linear damping calculations within this area. See :ref:`SpaceO
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **monitorable** = ``true``
+:ref:`bool<class_bool>` **monitorable** = ``true`` :ref:`🔗<class_Area2D_property_monitorable>`
 
 .. rst-class:: classref-property-setget
 
@@ -537,7 +537,7 @@ If ``true``, other monitoring areas can detect this area.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **monitoring** = ``true``
+:ref:`bool<class_bool>` **monitoring** = ``true`` :ref:`🔗<class_Area2D_property_monitoring>`
 
 .. rst-class:: classref-property-setget
 
@@ -554,7 +554,7 @@ If ``true``, the area detects bodies or areas entering and exiting it.
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **priority** = ``0``
+:ref:`int<class_int>` **priority** = ``0`` :ref:`🔗<class_Area2D_property_priority>`
 
 .. rst-class:: classref-property-setget
 
@@ -576,7 +576,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>`\[:ref:`Area2D<class_Area2D>`\] **get_overlapping_areas**\ (\ ) |const|
+:ref:`Array<class_Array>`\[:ref:`Area2D<class_Area2D>`\] **get_overlapping_areas**\ (\ ) |const| :ref:`🔗<class_Area2D_method_get_overlapping_areas>`
 
 Returns a list of intersecting **Area2D**\ s. The overlapping area's :ref:`CollisionObject2D.collision_layer<class_CollisionObject2D_property_collision_layer>` must be part of this area's :ref:`CollisionObject2D.collision_mask<class_CollisionObject2D_property_collision_mask>` in order to be detected.
 
@@ -590,7 +590,7 @@ For performance reasons (collisions are all processed at the same time) this lis
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>`\[:ref:`Node2D<class_Node2D>`\] **get_overlapping_bodies**\ (\ ) |const|
+:ref:`Array<class_Array>`\[:ref:`Node2D<class_Node2D>`\] **get_overlapping_bodies**\ (\ ) |const| :ref:`🔗<class_Area2D_method_get_overlapping_bodies>`
 
 Returns a list of intersecting :ref:`PhysicsBody2D<class_PhysicsBody2D>`\ s and :ref:`TileMap<class_TileMap>`\ s. The overlapping body's :ref:`CollisionObject2D.collision_layer<class_CollisionObject2D_property_collision_layer>` must be part of this area's :ref:`CollisionObject2D.collision_mask<class_CollisionObject2D_property_collision_mask>` in order to be detected.
 
@@ -604,7 +604,7 @@ For performance reasons (collisions are all processed at the same time) this lis
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_overlapping_areas**\ (\ ) |const|
+:ref:`bool<class_bool>` **has_overlapping_areas**\ (\ ) |const| :ref:`🔗<class_Area2D_method_has_overlapping_areas>`
 
 Returns ``true`` if intersecting any **Area2D**\ s, otherwise returns ``false``. The overlapping area's :ref:`CollisionObject2D.collision_layer<class_CollisionObject2D_property_collision_layer>` must be part of this area's :ref:`CollisionObject2D.collision_mask<class_CollisionObject2D_property_collision_mask>` in order to be detected.
 
@@ -618,7 +618,7 @@ For performance reasons (collisions are all processed at the same time) the list
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_overlapping_bodies**\ (\ ) |const|
+:ref:`bool<class_bool>` **has_overlapping_bodies**\ (\ ) |const| :ref:`🔗<class_Area2D_method_has_overlapping_bodies>`
 
 Returns ``true`` if intersecting any :ref:`PhysicsBody2D<class_PhysicsBody2D>`\ s or :ref:`TileMap<class_TileMap>`\ s, otherwise returns ``false``. The overlapping body's :ref:`CollisionObject2D.collision_layer<class_CollisionObject2D_property_collision_layer>` must be part of this area's :ref:`CollisionObject2D.collision_mask<class_CollisionObject2D_property_collision_mask>` in order to be detected.
 
@@ -632,7 +632,7 @@ For performance reasons (collisions are all processed at the same time) the list
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **overlaps_area**\ (\ area\: :ref:`Node<class_Node>`\ ) |const|
+:ref:`bool<class_bool>` **overlaps_area**\ (\ area\: :ref:`Node<class_Node>`\ ) |const| :ref:`🔗<class_Area2D_method_overlaps_area>`
 
 Returns ``true`` if the given **Area2D** intersects or overlaps this **Area2D**, ``false`` otherwise.
 
@@ -646,7 +646,7 @@ Returns ``true`` if the given **Area2D** intersects or overlaps this **Area2D**,
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **overlaps_body**\ (\ body\: :ref:`Node<class_Node>`\ ) |const|
+:ref:`bool<class_bool>` **overlaps_body**\ (\ body\: :ref:`Node<class_Node>`\ ) |const| :ref:`🔗<class_Area2D_method_overlaps_body>`
 
 Returns ``true`` if the given physics body intersects or overlaps this **Area2D**, ``false`` otherwise.
 

+ 47 - 41
classes/class_area3d.rst

@@ -37,9 +37,9 @@ Tutorials
 
 - :doc:`Using Area2D <../tutorials/physics/using_area_2d>`
 
-- `3D Platformer Demo <https://godotengine.org/asset-library/asset/125>`__
+- `3D Platformer Demo <https://godotengine.org/asset-library/asset/2748>`__
 
-- `GUI in 3D Demo <https://godotengine.org/asset-library/asset/127>`__
+- `GUI in 3D Viewport Demo <https://godotengine.org/asset-library/asset/2807>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -130,7 +130,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**area_entered**\ (\ area\: :ref:`Area3D<class_Area3D>`\ )
+**area_entered**\ (\ area\: :ref:`Area3D<class_Area3D>`\ ) :ref:`🔗<class_Area3D_signal_area_entered>`
 
 Emitted when the received ``area`` enters this area. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
@@ -142,7 +142,7 @@ Emitted when the received ``area`` enters this area. Requires :ref:`monitoring<c
 
 .. rst-class:: classref-signal
 
-**area_exited**\ (\ area\: :ref:`Area3D<class_Area3D>`\ )
+**area_exited**\ (\ area\: :ref:`Area3D<class_Area3D>`\ ) :ref:`🔗<class_Area3D_signal_area_exited>`
 
 Emitted when the received ``area`` exits this area. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
@@ -154,13 +154,13 @@ Emitted when the received ``area`` exits this area. Requires :ref:`monitoring<cl
 
 .. rst-class:: classref-signal
 
-**area_shape_entered**\ (\ area_rid\: :ref:`RID<class_RID>`, area\: :ref:`Area3D<class_Area3D>`, area_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ )
+**area_shape_entered**\ (\ area_rid\: :ref:`RID<class_RID>`, area\: :ref:`Area3D<class_Area3D>`, area_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Area3D_signal_area_shape_entered>`
 
 Emitted when a :ref:`Shape3D<class_Shape3D>` of the received ``area`` enters a shape of this area. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
 \ ``local_shape_index`` and ``area_shape_index`` contain indices of the interacting shapes from this area and the other area, respectively. ``area_rid`` contains the :ref:`RID<class_RID>` of the other area. These values can be used with the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
 
-\ **Example of getting the** :ref:`CollisionShape3D<class_CollisionShape3D>` **node from the shape index:**\ 
+\ **Example:** Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node from the shape index:
 
 
 .. tabs::
@@ -183,7 +183,7 @@ Emitted when a :ref:`Shape3D<class_Shape3D>` of the received ``area`` enters a s
 
 .. rst-class:: classref-signal
 
-**area_shape_exited**\ (\ area_rid\: :ref:`RID<class_RID>`, area\: :ref:`Area3D<class_Area3D>`, area_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ )
+**area_shape_exited**\ (\ area_rid\: :ref:`RID<class_RID>`, area\: :ref:`Area3D<class_Area3D>`, area_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Area3D_signal_area_shape_exited>`
 
 Emitted when a :ref:`Shape3D<class_Shape3D>` of the received ``area`` exits a shape of this area. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
@@ -197,7 +197,7 @@ See also :ref:`area_shape_entered<class_Area3D_signal_area_shape_entered>`.
 
 .. rst-class:: classref-signal
 
-**body_entered**\ (\ body\: :ref:`Node3D<class_Node3D>`\ )
+**body_entered**\ (\ body\: :ref:`Node3D<class_Node3D>`\ ) :ref:`🔗<class_Area3D_signal_body_entered>`
 
 Emitted when the received ``body`` enters this area. ``body`` can be a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or a :ref:`GridMap<class_GridMap>`. :ref:`GridMap<class_GridMap>`\ s are detected if their :ref:`MeshLibrary<class_MeshLibrary>` has collision shapes configured. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
@@ -209,7 +209,7 @@ Emitted when the received ``body`` enters this area. ``body`` can be a :ref:`Phy
 
 .. rst-class:: classref-signal
 
-**body_exited**\ (\ body\: :ref:`Node3D<class_Node3D>`\ )
+**body_exited**\ (\ body\: :ref:`Node3D<class_Node3D>`\ ) :ref:`🔗<class_Area3D_signal_body_exited>`
 
 Emitted when the received ``body`` exits this area. ``body`` can be a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or a :ref:`GridMap<class_GridMap>`. :ref:`GridMap<class_GridMap>`\ s are detected if their :ref:`MeshLibrary<class_MeshLibrary>` has collision shapes configured. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
@@ -221,13 +221,13 @@ Emitted when the received ``body`` exits this area. ``body`` can be a :ref:`Phys
 
 .. rst-class:: classref-signal
 
-**body_shape_entered**\ (\ body_rid\: :ref:`RID<class_RID>`, body\: :ref:`Node3D<class_Node3D>`, body_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ )
+**body_shape_entered**\ (\ body_rid\: :ref:`RID<class_RID>`, body\: :ref:`Node3D<class_Node3D>`, body_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Area3D_signal_body_shape_entered>`
 
 Emitted when a :ref:`Shape3D<class_Shape3D>` of the received ``body`` enters a shape of this area. ``body`` can be a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or a :ref:`GridMap<class_GridMap>`. :ref:`GridMap<class_GridMap>`\ s are detected if their :ref:`MeshLibrary<class_MeshLibrary>` has collision shapes configured. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
 \ ``local_shape_index`` and ``body_shape_index`` contain indices of the interacting shapes from this area and the interacting body, respectively. ``body_rid`` contains the :ref:`RID<class_RID>` of the body. These values can be used with the :ref:`PhysicsServer3D<class_PhysicsServer3D>`.
 
-\ **Example of getting the** :ref:`CollisionShape3D<class_CollisionShape3D>` **node from the shape index:**\ 
+\ **Example:** Get the :ref:`CollisionShape3D<class_CollisionShape3D>` node from the shape index:
 
 
 .. tabs::
@@ -250,7 +250,7 @@ Emitted when a :ref:`Shape3D<class_Shape3D>` of the received ``body`` enters a s
 
 .. rst-class:: classref-signal
 
-**body_shape_exited**\ (\ body_rid\: :ref:`RID<class_RID>`, body\: :ref:`Node3D<class_Node3D>`, body_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ )
+**body_shape_exited**\ (\ body_rid\: :ref:`RID<class_RID>`, body\: :ref:`Node3D<class_Node3D>`, body_shape_index\: :ref:`int<class_int>`, local_shape_index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_Area3D_signal_body_shape_exited>`
 
 Emitted when a :ref:`Shape3D<class_Shape3D>` of the received ``body`` exits a shape of this area. ``body`` can be a :ref:`PhysicsBody3D<class_PhysicsBody3D>` or a :ref:`GridMap<class_GridMap>`. :ref:`GridMap<class_GridMap>`\ s are detected if their :ref:`MeshLibrary<class_MeshLibrary>` has collision shapes configured. Requires :ref:`monitoring<class_Area3D_property_monitoring>` to be set to ``true``.
 
@@ -269,7 +269,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **SpaceOverride**:
+enum **SpaceOverride**: :ref:`🔗<enum_Area3D_SpaceOverride>`
 
 .. _class_Area3D_constant_SPACE_OVERRIDE_DISABLED:
 
@@ -324,7 +324,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **angular_damp** = ``0.1``
+:ref:`float<class_float>` **angular_damp** = ``0.1`` :ref:`🔗<class_Area3D_property_angular_damp>`
 
 .. rst-class:: classref-property-setget
 
@@ -343,7 +343,7 @@ See :ref:`ProjectSettings.physics/3d/default_angular_damp<class_ProjectSettings_
 
 .. rst-class:: classref-property
 
-:ref:`SpaceOverride<enum_Area3D_SpaceOverride>` **angular_damp_space_override** = ``0``
+:ref:`SpaceOverride<enum_Area3D_SpaceOverride>` **angular_damp_space_override** = ``0`` :ref:`🔗<class_Area3D_property_angular_damp_space_override>`
 
 .. rst-class:: classref-property-setget
 
@@ -360,7 +360,7 @@ Override mode for angular damping calculations within this area. See :ref:`Space
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **audio_bus_name** = ``&"Master"``
+:ref:`StringName<class_StringName>` **audio_bus_name** = ``&"Master"`` :ref:`🔗<class_Area3D_property_audio_bus_name>`
 
 .. rst-class:: classref-property-setget
 
@@ -377,7 +377,7 @@ The name of the area's audio bus.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **audio_bus_override** = ``false``
+:ref:`bool<class_bool>` **audio_bus_override** = ``false`` :ref:`🔗<class_Area3D_property_audio_bus_override>`
 
 .. rst-class:: classref-property-setget
 
@@ -394,7 +394,7 @@ If ``true``, the area's audio bus overrides the default audio bus.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **gravity** = ``9.8``
+:ref:`float<class_float>` **gravity** = ``9.8`` :ref:`🔗<class_Area3D_property_gravity>`
 
 .. rst-class:: classref-property-setget
 
@@ -411,7 +411,7 @@ The area's gravity intensity (in meters per second squared). This value multipli
 
 .. rst-class:: classref-property
 
-:ref:`Vector3<class_Vector3>` **gravity_direction** = ``Vector3(0, -1, 0)``
+:ref:`Vector3<class_Vector3>` **gravity_direction** = ``Vector3(0, -1, 0)`` :ref:`🔗<class_Area3D_property_gravity_direction>`
 
 .. rst-class:: classref-property-setget
 
@@ -428,7 +428,7 @@ The area's gravity vector (not normalized).
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **gravity_point** = ``false``
+:ref:`bool<class_bool>` **gravity_point** = ``false`` :ref:`🔗<class_Area3D_property_gravity_point>`
 
 .. rst-class:: classref-property-setget
 
@@ -445,7 +445,7 @@ If ``true``, gravity is calculated from a point (set via :ref:`gravity_point_cen
 
 .. rst-class:: classref-property
 
-:ref:`Vector3<class_Vector3>` **gravity_point_center** = ``Vector3(0, -1, 0)``
+:ref:`Vector3<class_Vector3>` **gravity_point_center** = ``Vector3(0, -1, 0)`` :ref:`🔗<class_Area3D_property_gravity_point_center>`
 
 .. rst-class:: classref-property-setget
 
@@ -462,7 +462,7 @@ If gravity is a point (see :ref:`gravity_point<class_Area3D_property_gravity_poi
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **gravity_point_unit_distance** = ``0.0``
+:ref:`float<class_float>` **gravity_point_unit_distance** = ``0.0`` :ref:`🔗<class_Area3D_property_gravity_point_unit_distance>`
 
 .. rst-class:: classref-property-setget
 
@@ -481,7 +481,7 @@ The above is true only when the unit distance is a positive number. When this is
 
 .. rst-class:: classref-property
 
-:ref:`SpaceOverride<enum_Area3D_SpaceOverride>` **gravity_space_override** = ``0``
+:ref:`SpaceOverride<enum_Area3D_SpaceOverride>` **gravity_space_override** = ``0`` :ref:`🔗<class_Area3D_property_gravity_space_override>`
 
 .. rst-class:: classref-property-setget
 
@@ -498,7 +498,7 @@ Override mode for gravity calculations within this area. See :ref:`SpaceOverride
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **linear_damp** = ``0.1``
+:ref:`float<class_float>` **linear_damp** = ``0.1`` :ref:`🔗<class_Area3D_property_linear_damp>`
 
 .. rst-class:: classref-property-setget
 
@@ -517,7 +517,7 @@ See :ref:`ProjectSettings.physics/3d/default_linear_damp<class_ProjectSettings_p
 
 .. rst-class:: classref-property
 
-:ref:`SpaceOverride<enum_Area3D_SpaceOverride>` **linear_damp_space_override** = ``0``
+:ref:`SpaceOverride<enum_Area3D_SpaceOverride>` **linear_damp_space_override** = ``0`` :ref:`🔗<class_Area3D_property_linear_damp_space_override>`
 
 .. rst-class:: classref-property-setget
 
@@ -534,7 +534,7 @@ Override mode for linear damping calculations within this area. See :ref:`SpaceO
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **monitorable** = ``true``
+:ref:`bool<class_bool>` **monitorable** = ``true`` :ref:`🔗<class_Area3D_property_monitorable>`
 
 .. rst-class:: classref-property-setget
 
@@ -551,7 +551,7 @@ If ``true``, other monitoring areas can detect this area.
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **monitoring** = ``true``
+:ref:`bool<class_bool>` **monitoring** = ``true`` :ref:`🔗<class_Area3D_property_monitoring>`
 
 .. rst-class:: classref-property-setget
 
@@ -568,7 +568,7 @@ If ``true``, the area detects bodies or areas entering and exiting it.
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **priority** = ``0``
+:ref:`int<class_int>` **priority** = ``0`` :ref:`🔗<class_Area3D_property_priority>`
 
 .. rst-class:: classref-property-setget
 
@@ -585,7 +585,7 @@ The area's priority. Higher priority areas are processed first. The :ref:`World3
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **reverb_bus_amount** = ``0.0``
+:ref:`float<class_float>` **reverb_bus_amount** = ``0.0`` :ref:`🔗<class_Area3D_property_reverb_bus_amount>`
 
 .. rst-class:: classref-property-setget
 
@@ -602,7 +602,7 @@ The degree to which this area applies reverb to its associated audio. Ranges fro
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **reverb_bus_enabled** = ``false``
+:ref:`bool<class_bool>` **reverb_bus_enabled** = ``false`` :ref:`🔗<class_Area3D_property_reverb_bus_enabled>`
 
 .. rst-class:: classref-property-setget
 
@@ -619,7 +619,7 @@ If ``true``, the area applies reverb to its associated audio.
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **reverb_bus_name** = ``&"Master"``
+:ref:`StringName<class_StringName>` **reverb_bus_name** = ``&"Master"`` :ref:`🔗<class_Area3D_property_reverb_bus_name>`
 
 .. rst-class:: classref-property-setget
 
@@ -636,7 +636,7 @@ The name of the reverb bus to use for this area's associated audio.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **reverb_bus_uniformity** = ``0.0``
+:ref:`float<class_float>` **reverb_bus_uniformity** = ``0.0`` :ref:`🔗<class_Area3D_property_reverb_bus_uniformity>`
 
 .. rst-class:: classref-property-setget
 
@@ -653,7 +653,7 @@ The degree to which this area's reverb is a uniform effect. Ranges from ``0`` to
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **wind_attenuation_factor** = ``0.0``
+:ref:`float<class_float>` **wind_attenuation_factor** = ``0.0`` :ref:`🔗<class_Area3D_property_wind_attenuation_factor>`
 
 .. rst-class:: classref-property-setget
 
@@ -662,6 +662,8 @@ The degree to which this area's reverb is a uniform effect. Ranges from ``0`` to
 
 The exponential rate at which wind force decreases with distance from its origin.
 
+\ **Note:** This wind force only applies to :ref:`SoftBody3D<class_SoftBody3D>` nodes. Other physics bodies are currently not affected by wind.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -670,7 +672,7 @@ The exponential rate at which wind force decreases with distance from its origin
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **wind_force_magnitude** = ``0.0``
+:ref:`float<class_float>` **wind_force_magnitude** = ``0.0`` :ref:`🔗<class_Area3D_property_wind_force_magnitude>`
 
 .. rst-class:: classref-property-setget
 
@@ -679,6 +681,8 @@ The exponential rate at which wind force decreases with distance from its origin
 
 The magnitude of area-specific wind force.
 
+\ **Note:** This wind force only applies to :ref:`SoftBody3D<class_SoftBody3D>` nodes. Other physics bodies are currently not affected by wind.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -687,7 +691,7 @@ The magnitude of area-specific wind force.
 
 .. rst-class:: classref-property
 
-:ref:`NodePath<class_NodePath>` **wind_source_path** = ``NodePath("")``
+:ref:`NodePath<class_NodePath>` **wind_source_path** = ``NodePath("")`` :ref:`🔗<class_Area3D_property_wind_source_path>`
 
 .. rst-class:: classref-property-setget
 
@@ -696,6 +700,8 @@ The magnitude of area-specific wind force.
 
 The :ref:`Node3D<class_Node3D>` which is used to specify the direction and origin of an area-specific wind force. The direction is opposite to the z-axis of the :ref:`Node3D<class_Node3D>`'s local transform, and its origin is the origin of the :ref:`Node3D<class_Node3D>`'s local transform.
 
+\ **Note:** This wind force only applies to :ref:`SoftBody3D<class_SoftBody3D>` nodes. Other physics bodies are currently not affected by wind.
+
 .. rst-class:: classref-section-separator
 
 ----
@@ -709,7 +715,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>`\[:ref:`Area3D<class_Area3D>`\] **get_overlapping_areas**\ (\ ) |const|
+:ref:`Array<class_Array>`\[:ref:`Area3D<class_Area3D>`\] **get_overlapping_areas**\ (\ ) |const| :ref:`🔗<class_Area3D_method_get_overlapping_areas>`
 
 Returns a list of intersecting **Area3D**\ s. The overlapping area's :ref:`CollisionObject3D.collision_layer<class_CollisionObject3D_property_collision_layer>` must be part of this area's :ref:`CollisionObject3D.collision_mask<class_CollisionObject3D_property_collision_mask>` in order to be detected.
 
@@ -723,7 +729,7 @@ For performance reasons (collisions are all processed at the same time) this lis
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>`\[:ref:`Node3D<class_Node3D>`\] **get_overlapping_bodies**\ (\ ) |const|
+:ref:`Array<class_Array>`\[:ref:`Node3D<class_Node3D>`\] **get_overlapping_bodies**\ (\ ) |const| :ref:`🔗<class_Area3D_method_get_overlapping_bodies>`
 
 Returns a list of intersecting :ref:`PhysicsBody3D<class_PhysicsBody3D>`\ s and :ref:`GridMap<class_GridMap>`\ s. The overlapping body's :ref:`CollisionObject3D.collision_layer<class_CollisionObject3D_property_collision_layer>` must be part of this area's :ref:`CollisionObject3D.collision_mask<class_CollisionObject3D_property_collision_mask>` in order to be detected.
 
@@ -737,7 +743,7 @@ For performance reasons (collisions are all processed at the same time) this lis
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_overlapping_areas**\ (\ ) |const|
+:ref:`bool<class_bool>` **has_overlapping_areas**\ (\ ) |const| :ref:`🔗<class_Area3D_method_has_overlapping_areas>`
 
 Returns ``true`` if intersecting any **Area3D**\ s, otherwise returns ``false``. The overlapping area's :ref:`CollisionObject3D.collision_layer<class_CollisionObject3D_property_collision_layer>` must be part of this area's :ref:`CollisionObject3D.collision_mask<class_CollisionObject3D_property_collision_mask>` in order to be detected.
 
@@ -751,7 +757,7 @@ For performance reasons (collisions are all processed at the same time) the list
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_overlapping_bodies**\ (\ ) |const|
+:ref:`bool<class_bool>` **has_overlapping_bodies**\ (\ ) |const| :ref:`🔗<class_Area3D_method_has_overlapping_bodies>`
 
 Returns ``true`` if intersecting any :ref:`PhysicsBody3D<class_PhysicsBody3D>`\ s or :ref:`GridMap<class_GridMap>`\ s, otherwise returns ``false``. The overlapping body's :ref:`CollisionObject3D.collision_layer<class_CollisionObject3D_property_collision_layer>` must be part of this area's :ref:`CollisionObject3D.collision_mask<class_CollisionObject3D_property_collision_mask>` in order to be detected.
 
@@ -765,7 +771,7 @@ For performance reasons (collisions are all processed at the same time) the list
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **overlaps_area**\ (\ area\: :ref:`Node<class_Node>`\ ) |const|
+:ref:`bool<class_bool>` **overlaps_area**\ (\ area\: :ref:`Node<class_Node>`\ ) |const| :ref:`🔗<class_Area3D_method_overlaps_area>`
 
 Returns ``true`` if the given **Area3D** intersects or overlaps this **Area3D**, ``false`` otherwise.
 
@@ -779,7 +785,7 @@ Returns ``true`` if the given **Area3D** intersects or overlaps this **Area3D**,
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **overlaps_body**\ (\ body\: :ref:`Node<class_Node>`\ ) |const|
+:ref:`bool<class_bool>` **overlaps_body**\ (\ body\: :ref:`Node<class_Node>`\ ) |const| :ref:`🔗<class_Area3D_method_overlaps_body>`
 
 Returns ``true`` if the given physics body intersects or overlaps this **Area3D**, ``false`` otherwise.
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 352 - 211
classes/class_array.rst


+ 50 - 34
classes/class_arraymesh.rst

@@ -46,16 +46,16 @@ The most basic example is the creation of a single triangle:
 
  .. code-tab:: csharp
 
-    var vertices = new Vector3[]
-    {
+    Vector3[] vertices =
+    [
         new Vector3(0, 1, 0),
         new Vector3(1, 0, 0),
         new Vector3(0, 0, 1),
-    };
+    ];
     
     // Initialize the ArrayMesh.
     var arrMesh = new ArrayMesh();
-    var arrays = new Godot.Collections.Array();
+    Godot.Collections.Array arrays = [];
     arrays.Resize((int)Mesh.ArrayType.Max);
     arrays[(int)Mesh.ArrayType.Vertex] = vertices;
     
@@ -134,6 +134,8 @@ Methods
    +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`           | :ref:`surface_get_primitive_type<class_ArrayMesh_method_surface_get_primitive_type>`\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const|                                                                                                                                                                                                                                                  |
    +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                  | :ref:`surface_remove<class_ArrayMesh_method_surface_remove>`\ (\ surf_idx\: :ref:`int<class_int>`\ )                                                                                                                                                                                                                                                                                  |
+   +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                  | :ref:`surface_set_name<class_ArrayMesh_method_surface_set_name>`\ (\ surf_idx\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ )                                                                                                                                                                                                                                          |
    +---------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                  | :ref:`surface_update_attribute_region<class_ArrayMesh_method_surface_update_attribute_region>`\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`, data\: :ref:`PackedByteArray<class_PackedByteArray>`\ )                                                                                                                                                          |
@@ -156,7 +158,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>` **blend_shape_mode** = ``1``
+:ref:`BlendShapeMode<enum_Mesh_BlendShapeMode>` **blend_shape_mode** = ``1`` :ref:`🔗<class_ArrayMesh_property_blend_shape_mode>`
 
 .. rst-class:: classref-property-setget
 
@@ -173,7 +175,7 @@ Sets the blend shape mode to one of :ref:`BlendShapeMode<enum_Mesh_BlendShapeMod
 
 .. rst-class:: classref-property
 
-:ref:`AABB<class_AABB>` **custom_aabb** = ``AABB(0, 0, 0, 0, 0, 0)``
+:ref:`AABB<class_AABB>` **custom_aabb** = ``AABB(0, 0, 0, 0, 0, 0)`` :ref:`🔗<class_ArrayMesh_property_custom_aabb>`
 
 .. rst-class:: classref-property-setget
 
@@ -190,14 +192,16 @@ Overrides the :ref:`AABB<class_AABB>` with one defined by user for use with frus
 
 .. rst-class:: classref-property
 
-:ref:`ArrayMesh<class_ArrayMesh>` **shadow_mesh**
+:ref:`ArrayMesh<class_ArrayMesh>` **shadow_mesh** :ref:`🔗<class_ArrayMesh_property_shadow_mesh>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_shadow_mesh**\ (\ value\: :ref:`ArrayMesh<class_ArrayMesh>`\ )
 - :ref:`ArrayMesh<class_ArrayMesh>` **get_shadow_mesh**\ (\ )
 
-An optional mesh which is used for rendering shadows and can be used for the depth prepass. Can be used to increase performance of shadow rendering by using a mesh that only contains vertex position data (without normals, UVs, colors, etc.).
+An optional mesh which can be used for rendering shadows and the depth prepass. Can be used to increase performance by supplying a mesh with fused vertices and only vertex position data (without normals, UVs, colors, etc.).
+
+\ **Note:** This mesh must have exactly the same vertex positions as the source mesh (including the source mesh's LODs, if present). If vertex positions differ, then the mesh will not draw correctly.
 
 .. rst-class:: classref-section-separator
 
@@ -212,9 +216,9 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **add_blend_shape**\ (\ name\: :ref:`StringName<class_StringName>`\ )
+|void| **add_blend_shape**\ (\ name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_ArrayMesh_method_add_blend_shape>`
 
-Adds name for a blend shape that will be added with :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`. Must be called before surface is added.
+Adds name for a blend shape that will be added with :ref:`add_surface_from_arrays()<class_ArrayMesh_method_add_surface_from_arrays>`. Must be called before surface is added.
 
 .. rst-class:: classref-item-separator
 
@@ -224,9 +228,9 @@ Adds name for a blend shape that will be added with :ref:`add_surface_from_array
 
 .. rst-class:: classref-method
 
-|void| **add_surface_from_arrays**\ (\ primitive\: :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`, arrays\: :ref:`Array<class_Array>`, blend_shapes\: :ref:`Array<class_Array>`\[:ref:`Array<class_Array>`\] = [], lods\: :ref:`Dictionary<class_Dictionary>` = {}, flags\: |bitfield|\[:ref:`ArrayFormat<enum_Mesh_ArrayFormat>`\] = 0\ )
+|void| **add_surface_from_arrays**\ (\ primitive\: :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`, arrays\: :ref:`Array<class_Array>`, blend_shapes\: :ref:`Array<class_Array>`\[:ref:`Array<class_Array>`\] = [], lods\: :ref:`Dictionary<class_Dictionary>` = {}, flags\: |bitfield|\[:ref:`ArrayFormat<enum_Mesh_ArrayFormat>`\] = 0\ ) :ref:`🔗<class_ArrayMesh_method_add_surface_from_arrays>`
 
-Creates a new surface. :ref:`Mesh.get_surface_count<class_Mesh_method_get_surface_count>` will become the ``surf_idx`` for this new surface.
+Creates a new surface. :ref:`Mesh.get_surface_count()<class_Mesh_method_get_surface_count>` will become the ``surf_idx`` for this new surface.
 
 Surfaces are created to be rendered using a ``primitive``, which may be any of the values defined in :ref:`PrimitiveType<enum_Mesh_PrimitiveType>`.
 
@@ -236,7 +240,7 @@ The ``blend_shapes`` argument is an array of vertex data for each blend shape. E
 
 The ``lods`` argument is a dictionary with :ref:`float<class_float>` keys and :ref:`PackedInt32Array<class_PackedInt32Array>` values. Each entry in the dictionary represents an LOD level of the surface, where the value is the :ref:`Mesh.ARRAY_INDEX<class_Mesh_constant_ARRAY_INDEX>` array to use for the LOD level and the key is roughly proportional to the distance at which the LOD stats being used. I.e., increasing the key of an LOD also increases the distance that the objects has to be from the camera before the LOD is used.
 
-The ``flags`` argument is the bitwise or of, as required: One value of :ref:`ArrayCustomFormat<enum_Mesh_ArrayCustomFormat>` left shifted by ``ARRAY_FORMAT_CUSTOMn_SHIFT`` for each custom channel in use, :ref:`Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE<class_Mesh_constant_ARRAY_FLAG_USE_DYNAMIC_UPDATE>`, :ref:`Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS<class_Mesh_constant_ARRAY_FLAG_USE_8_BONE_WEIGHTS>`, or :ref:`Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY<class_Mesh_constant_ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY>`.
+The ``flags`` argument is the bitwise OR of, as required: One value of :ref:`ArrayCustomFormat<enum_Mesh_ArrayCustomFormat>` left shifted by ``ARRAY_FORMAT_CUSTOMn_SHIFT`` for each custom channel in use, :ref:`Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE<class_Mesh_constant_ARRAY_FLAG_USE_DYNAMIC_UPDATE>`, :ref:`Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS<class_Mesh_constant_ARRAY_FLAG_USE_8_BONE_WEIGHTS>`, or :ref:`Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY<class_Mesh_constant_ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY>`.
 
 \ **Note:** When using indices, it is recommended to only use points, lines, or triangles.
 
@@ -248,7 +252,7 @@ The ``flags`` argument is the bitwise or of, as required: One value of :ref:`Arr
 
 .. rst-class:: classref-method
 
-|void| **clear_blend_shapes**\ (\ )
+|void| **clear_blend_shapes**\ (\ ) :ref:`🔗<class_ArrayMesh_method_clear_blend_shapes>`
 
 Removes all blend shapes from this **ArrayMesh**.
 
@@ -260,7 +264,7 @@ Removes all blend shapes from this **ArrayMesh**.
 
 .. rst-class:: classref-method
 
-|void| **clear_surfaces**\ (\ )
+|void| **clear_surfaces**\ (\ ) :ref:`🔗<class_ArrayMesh_method_clear_surfaces>`
 
 Removes all surfaces from this **ArrayMesh**.
 
@@ -272,7 +276,7 @@ Removes all surfaces from this **ArrayMesh**.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_blend_shape_count**\ (\ ) |const|
+:ref:`int<class_int>` **get_blend_shape_count**\ (\ ) |const| :ref:`🔗<class_ArrayMesh_method_get_blend_shape_count>`
 
 Returns the number of blend shapes that the **ArrayMesh** holds.
 
@@ -284,7 +288,7 @@ Returns the number of blend shapes that the **ArrayMesh** holds.
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **get_blend_shape_name**\ (\ index\: :ref:`int<class_int>`\ ) |const|
+:ref:`StringName<class_StringName>` **get_blend_shape_name**\ (\ index\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_ArrayMesh_method_get_blend_shape_name>`
 
 Returns the name of the blend shape at this index.
 
@@ -296,7 +300,7 @@ Returns the name of the blend shape at this index.
 
 .. rst-class:: classref-method
 
-:ref:`Error<enum_@GlobalScope_Error>` **lightmap_unwrap**\ (\ transform\: :ref:`Transform3D<class_Transform3D>`, texel_size\: :ref:`float<class_float>`\ )
+:ref:`Error<enum_@GlobalScope_Error>` **lightmap_unwrap**\ (\ transform\: :ref:`Transform3D<class_Transform3D>`, texel_size\: :ref:`float<class_float>`\ ) :ref:`🔗<class_ArrayMesh_method_lightmap_unwrap>`
 
 Performs a UV unwrap on the **ArrayMesh** to prepare the mesh for lightmapping.
 
@@ -308,7 +312,7 @@ Performs a UV unwrap on the **ArrayMesh** to prepare the mesh for lightmapping.
 
 .. rst-class:: classref-method
 
-|void| **regen_normal_maps**\ (\ )
+|void| **regen_normal_maps**\ (\ ) :ref:`🔗<class_ArrayMesh_method_regen_normal_maps>`
 
 Regenerates tangents for each of the **ArrayMesh**'s surfaces.
 
@@ -320,7 +324,7 @@ Regenerates tangents for each of the **ArrayMesh**'s surfaces.
 
 .. rst-class:: classref-method
 
-|void| **set_blend_shape_name**\ (\ index\: :ref:`int<class_int>`, name\: :ref:`StringName<class_StringName>`\ )
+|void| **set_blend_shape_name**\ (\ index\: :ref:`int<class_int>`, name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_ArrayMesh_method_set_blend_shape_name>`
 
 Sets the name of the blend shape at this index.
 
@@ -332,7 +336,7 @@ Sets the name of the blend shape at this index.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **surface_find_by_name**\ (\ name\: :ref:`String<class_String>`\ ) |const|
+:ref:`int<class_int>` **surface_find_by_name**\ (\ name\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_ArrayMesh_method_surface_find_by_name>`
 
 Returns the index of the first surface with this name held within this **ArrayMesh**. If none are found, -1 is returned.
 
@@ -344,9 +348,9 @@ Returns the index of the first surface with this name held within this **ArrayMe
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **surface_get_array_index_len**\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`int<class_int>` **surface_get_array_index_len**\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_ArrayMesh_method_surface_get_array_index_len>`
 
-Returns the length in indices of the index array in the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
+Returns the length in indices of the index array in the requested surface (see :ref:`add_surface_from_arrays()<class_ArrayMesh_method_add_surface_from_arrays>`).
 
 .. rst-class:: classref-item-separator
 
@@ -356,9 +360,9 @@ Returns the length in indices of the index array in the requested surface (see :
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **surface_get_array_len**\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`int<class_int>` **surface_get_array_len**\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_ArrayMesh_method_surface_get_array_len>`
 
-Returns the length in vertices of the vertex array in the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
+Returns the length in vertices of the vertex array in the requested surface (see :ref:`add_surface_from_arrays()<class_ArrayMesh_method_add_surface_from_arrays>`).
 
 .. rst-class:: classref-item-separator
 
@@ -368,9 +372,9 @@ Returns the length in vertices of the vertex array in the requested surface (see
 
 .. rst-class:: classref-method
 
-|bitfield|\[:ref:`ArrayFormat<enum_Mesh_ArrayFormat>`\] **surface_get_format**\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const|
+|bitfield|\[:ref:`ArrayFormat<enum_Mesh_ArrayFormat>`\] **surface_get_format**\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_ArrayMesh_method_surface_get_format>`
 
-Returns the format mask of the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
+Returns the format mask of the requested surface (see :ref:`add_surface_from_arrays()<class_ArrayMesh_method_add_surface_from_arrays>`).
 
 .. rst-class:: classref-item-separator
 
@@ -380,7 +384,7 @@ Returns the format mask of the requested surface (see :ref:`add_surface_from_arr
 
 .. rst-class:: classref-method
 
-:ref:`String<class_String>` **surface_get_name**\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`String<class_String>` **surface_get_name**\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_ArrayMesh_method_surface_get_name>`
 
 Gets the name assigned to this surface.
 
@@ -392,9 +396,21 @@ Gets the name assigned to this surface.
 
 .. rst-class:: classref-method
 
-:ref:`PrimitiveType<enum_Mesh_PrimitiveType>` **surface_get_primitive_type**\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`PrimitiveType<enum_Mesh_PrimitiveType>` **surface_get_primitive_type**\ (\ surf_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_ArrayMesh_method_surface_get_primitive_type>`
+
+Returns the primitive type of the requested surface (see :ref:`add_surface_from_arrays()<class_ArrayMesh_method_add_surface_from_arrays>`).
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_ArrayMesh_method_surface_remove:
+
+.. rst-class:: classref-method
+
+|void| **surface_remove**\ (\ surf_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_ArrayMesh_method_surface_remove>`
 
-Returns the primitive type of the requested surface (see :ref:`add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`).
+Removes the surface at the given index from the Mesh, shifting surfaces with higher index down by one.
 
 .. rst-class:: classref-item-separator
 
@@ -404,7 +420,7 @@ Returns the primitive type of the requested surface (see :ref:`add_surface_from_
 
 .. rst-class:: classref-method
 
-|void| **surface_set_name**\ (\ surf_idx\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ )
+|void| **surface_set_name**\ (\ surf_idx\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_ArrayMesh_method_surface_set_name>`
 
 Sets a name for a given surface.
 
@@ -416,7 +432,7 @@ Sets a name for a given surface.
 
 .. rst-class:: classref-method
 
-|void| **surface_update_attribute_region**\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`, data\: :ref:`PackedByteArray<class_PackedByteArray>`\ )
+|void| **surface_update_attribute_region**\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`, data\: :ref:`PackedByteArray<class_PackedByteArray>`\ ) :ref:`🔗<class_ArrayMesh_method_surface_update_attribute_region>`
 
 .. container:: contribute
 
@@ -430,7 +446,7 @@ Sets a name for a given surface.
 
 .. rst-class:: classref-method
 
-|void| **surface_update_skin_region**\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`, data\: :ref:`PackedByteArray<class_PackedByteArray>`\ )
+|void| **surface_update_skin_region**\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`, data\: :ref:`PackedByteArray<class_PackedByteArray>`\ ) :ref:`🔗<class_ArrayMesh_method_surface_update_skin_region>`
 
 .. container:: contribute
 
@@ -444,7 +460,7 @@ Sets a name for a given surface.
 
 .. rst-class:: classref-method
 
-|void| **surface_update_vertex_region**\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`, data\: :ref:`PackedByteArray<class_PackedByteArray>`\ )
+|void| **surface_update_vertex_region**\ (\ surf_idx\: :ref:`int<class_int>`, offset\: :ref:`int<class_int>`, data\: :ref:`PackedByteArray<class_PackedByteArray>`\ ) :ref:`🔗<class_ArrayMesh_method_surface_update_vertex_region>`
 
 .. container:: contribute
 

+ 9 - 5
classes/class_arrayoccluder3d.rst

@@ -69,7 +69,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`PackedInt32Array<class_PackedInt32Array>` **indices** = ``PackedInt32Array()``
+:ref:`PackedInt32Array<class_PackedInt32Array>` **indices** = ``PackedInt32Array()`` :ref:`🔗<class_ArrayOccluder3D_property_indices>`
 
 .. rst-class:: classref-property-setget
 
@@ -78,7 +78,9 @@ Property Descriptions
 
 The occluder's index position. Indices determine which points from the :ref:`vertices<class_ArrayOccluder3D_property_vertices>` array should be drawn, and in which order.
 
-\ **Note:** The occluder is always updated after setting this value. If creating occluders procedurally, consider using :ref:`set_arrays<class_ArrayOccluder3D_method_set_arrays>` instead to avoid updating the occluder twice when it's created.
+\ **Note:** The occluder is always updated after setting this value. If creating occluders procedurally, consider using :ref:`set_arrays()<class_ArrayOccluder3D_method_set_arrays>` instead to avoid updating the occluder twice when it's created.
+
+**Note:** The returned array is *copied* and any changes to it will not update the original property value. See :ref:`PackedInt32Array<class_PackedInt32Array>` for more details.
 
 .. rst-class:: classref-item-separator
 
@@ -88,7 +90,7 @@ The occluder's index position. Indices determine which points from the :ref:`ver
 
 .. rst-class:: classref-property
 
-:ref:`PackedVector3Array<class_PackedVector3Array>` **vertices** = ``PackedVector3Array()``
+:ref:`PackedVector3Array<class_PackedVector3Array>` **vertices** = ``PackedVector3Array()`` :ref:`🔗<class_ArrayOccluder3D_property_vertices>`
 
 .. rst-class:: classref-property-setget
 
@@ -97,7 +99,9 @@ The occluder's index position. Indices determine which points from the :ref:`ver
 
 The occluder's vertex positions in local 3D coordinates.
 
-\ **Note:** The occluder is always updated after setting this value. If creating occluders procedurally, consider using :ref:`set_arrays<class_ArrayOccluder3D_method_set_arrays>` instead to avoid updating the occluder twice when it's created.
+\ **Note:** The occluder is always updated after setting this value. If creating occluders procedurally, consider using :ref:`set_arrays()<class_ArrayOccluder3D_method_set_arrays>` instead to avoid updating the occluder twice when it's created.
+
+**Note:** The returned array is *copied* and any changes to it will not update the original property value. See :ref:`PackedVector3Array<class_PackedVector3Array>` for more details.
 
 .. rst-class:: classref-section-separator
 
@@ -112,7 +116,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **set_arrays**\ (\ vertices\: :ref:`PackedVector3Array<class_PackedVector3Array>`, indices\: :ref:`PackedInt32Array<class_PackedInt32Array>`\ )
+|void| **set_arrays**\ (\ vertices\: :ref:`PackedVector3Array<class_PackedVector3Array>`, indices\: :ref:`PackedInt32Array<class_PackedInt32Array>`\ ) :ref:`🔗<class_ArrayOccluder3D_method_set_arrays>`
 
 Sets :ref:`indices<class_ArrayOccluder3D_property_indices>` and :ref:`vertices<class_ArrayOccluder3D_property_vertices>`, while updating the final occluder only once after both values are set.
 

+ 6 - 6
classes/class_aspectratiocontainer.rst

@@ -59,7 +59,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **StretchMode**:
+enum **StretchMode**: :ref:`🔗<enum_AspectRatioContainer_StretchMode>`
 
 .. _class_AspectRatioContainer_constant_STRETCH_WIDTH_CONTROLS_HEIGHT:
 
@@ -103,7 +103,7 @@ When the bounding rectangle of child controls exceed the container's size and :r
 
 .. rst-class:: classref-enumeration
 
-enum **AlignmentMode**:
+enum **AlignmentMode**: :ref:`🔗<enum_AspectRatioContainer_AlignmentMode>`
 
 .. _class_AspectRatioContainer_constant_ALIGNMENT_BEGIN:
 
@@ -142,7 +142,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`AlignmentMode<enum_AspectRatioContainer_AlignmentMode>` **alignment_horizontal** = ``1``
+:ref:`AlignmentMode<enum_AspectRatioContainer_AlignmentMode>` **alignment_horizontal** = ``1`` :ref:`🔗<class_AspectRatioContainer_property_alignment_horizontal>`
 
 .. rst-class:: classref-property-setget
 
@@ -159,7 +159,7 @@ Specifies the horizontal relative position of child controls.
 
 .. rst-class:: classref-property
 
-:ref:`AlignmentMode<enum_AspectRatioContainer_AlignmentMode>` **alignment_vertical** = ``1``
+:ref:`AlignmentMode<enum_AspectRatioContainer_AlignmentMode>` **alignment_vertical** = ``1`` :ref:`🔗<class_AspectRatioContainer_property_alignment_vertical>`
 
 .. rst-class:: classref-property-setget
 
@@ -176,7 +176,7 @@ Specifies the vertical relative position of child controls.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **ratio** = ``1.0``
+:ref:`float<class_float>` **ratio** = ``1.0`` :ref:`🔗<class_AspectRatioContainer_property_ratio>`
 
 .. rst-class:: classref-property-setget
 
@@ -193,7 +193,7 @@ The aspect ratio to enforce on child controls. This is the width divided by the
 
 .. rst-class:: classref-property
 
-:ref:`StretchMode<enum_AspectRatioContainer_StretchMode>` **stretch_mode** = ``2``
+:ref:`StretchMode<enum_AspectRatioContainer_StretchMode>` **stretch_mode** = ``2`` :ref:`🔗<class_AspectRatioContainer_property_stretch_mode>`
 
 .. rst-class:: classref-property-setget
 

+ 36 - 32
classes/class_astar2d.rst

@@ -34,7 +34,7 @@ Methods
    +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                           | :ref:`_compute_cost<class_AStar2D_private_method__compute_cost>`\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`\ ) |virtual| |const|                                        |
    +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStar2D_private_method__estimate_cost>`\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`\ ) |virtual| |const|                                      |
+   | :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStar2D_private_method__estimate_cost>`\ (\ from_id\: :ref:`int<class_int>`, end_id\: :ref:`int<class_int>`\ ) |virtual| |const|                                     |
    +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                              | :ref:`add_point<class_AStar2D_method_add_point>`\ (\ id\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`, weight_scale\: :ref:`float<class_float>` = 1.0\ )                    |
    +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -96,7 +96,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **_compute_cost**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`\ ) |virtual| |const|
+:ref:`float<class_float>` **_compute_cost**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`\ ) |virtual| |const| :ref:`🔗<class_AStar2D_private_method__compute_cost>`
 
 Called when computing the cost between two connected points.
 
@@ -110,7 +110,7 @@ Note that this function is hidden in the default **AStar2D** class.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **_estimate_cost**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`\ ) |virtual| |const|
+:ref:`float<class_float>` **_estimate_cost**\ (\ from_id\: :ref:`int<class_int>`, end_id\: :ref:`int<class_int>`\ ) |virtual| |const| :ref:`🔗<class_AStar2D_private_method__estimate_cost>`
 
 Called when estimating the cost between a point and the path's ending point.
 
@@ -124,11 +124,11 @@ Note that this function is hidden in the default **AStar2D** class.
 
 .. rst-class:: classref-method
 
-|void| **add_point**\ (\ id\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`, weight_scale\: :ref:`float<class_float>` = 1.0\ )
+|void| **add_point**\ (\ id\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`, weight_scale\: :ref:`float<class_float>` = 1.0\ ) :ref:`🔗<class_AStar2D_method_add_point>`
 
 Adds a new point at the given position with the given identifier. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 0.0 or greater.
 
-The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar2D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``\ s to form a path.
+The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost()<class_AStar2D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``\ s to form a path.
 
 
 .. tabs::
@@ -155,7 +155,7 @@ If there already exists a point for the given ``id``, its position and weight sc
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **are_points_connected**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ ) |const|
+:ref:`bool<class_bool>` **are_points_connected**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ ) |const| :ref:`🔗<class_AStar2D_method_are_points_connected>`
 
 Returns whether there is a connection/segment between the given points. If ``bidirectional`` is ``false``, returns whether movement from ``id`` to ``to_id`` is possible through this segment.
 
@@ -167,7 +167,7 @@ Returns whether there is a connection/segment between the given points. If ``bid
 
 .. rst-class:: classref-method
 
-|void| **clear**\ (\ )
+|void| **clear**\ (\ ) :ref:`🔗<class_AStar2D_method_clear>`
 
 Clears all the points and segments.
 
@@ -179,7 +179,7 @@ Clears all the points and segments.
 
 .. rst-class:: classref-method
 
-|void| **connect_points**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ )
+|void| **connect_points**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AStar2D_method_connect_points>`
 
 Creates a segment between the given points. If ``bidirectional`` is ``false``, only movement from ``id`` to ``to_id`` is allowed, not the reverse direction.
 
@@ -210,7 +210,7 @@ Creates a segment between the given points. If ``bidirectional`` is ``false``, o
 
 .. rst-class:: classref-method
 
-|void| **disconnect_points**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ )
+|void| **disconnect_points**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AStar2D_method_disconnect_points>`
 
 Deletes the segment between the given points. If ``bidirectional`` is ``false``, only movement from ``id`` to ``to_id`` is prevented, and a unidirectional segment possibly remains.
 
@@ -222,7 +222,7 @@ Deletes the segment between the given points. If ``bidirectional`` is ``false``,
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_available_point_id**\ (\ ) |const|
+:ref:`int<class_int>` **get_available_point_id**\ (\ ) |const| :ref:`🔗<class_AStar2D_method_get_available_point_id>`
 
 Returns the next available point ID with no point associated to it.
 
@@ -234,7 +234,7 @@ Returns the next available point ID with no point associated to it.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_closest_point**\ (\ to_position\: :ref:`Vector2<class_Vector2>`, include_disabled\: :ref:`bool<class_bool>` = false\ ) |const|
+:ref:`int<class_int>` **get_closest_point**\ (\ to_position\: :ref:`Vector2<class_Vector2>`, include_disabled\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_AStar2D_method_get_closest_point>`
 
 Returns the ID of the closest point to ``to_position``, optionally taking disabled points into account. Returns ``-1`` if there are no points in the points pool.
 
@@ -248,7 +248,7 @@ Returns the ID of the closest point to ``to_position``, optionally taking disabl
 
 .. rst-class:: classref-method
 
-:ref:`Vector2<class_Vector2>` **get_closest_position_in_segment**\ (\ to_position\: :ref:`Vector2<class_Vector2>`\ ) |const|
+:ref:`Vector2<class_Vector2>` **get_closest_position_in_segment**\ (\ to_position\: :ref:`Vector2<class_Vector2>`\ ) |const| :ref:`🔗<class_AStar2D_method_get_closest_position_in_segment>`
 
 Returns the closest position to ``to_position`` that resides inside a segment between two connected points.
 
@@ -283,12 +283,14 @@ The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the clo
 
 .. rst-class:: classref-method
 
-:ref:`PackedInt64Array<class_PackedInt64Array>` **get_id_path**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ )
+:ref:`PackedInt64Array<class_PackedInt64Array>` **get_id_path**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AStar2D_method_get_id_path>`
 
 Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
 
 If there is no valid path to the target, and ``allow_partial_path`` is ``true``, returns a path to the point closest to the target that can be reached.
 
+\ **Note:** When ``allow_partial_path`` is ``true`` and ``to_id`` is disabled the search may take an unusually long time to finish.
+
 
 .. tabs::
 
@@ -319,7 +321,7 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
     astar.ConnectPoints(2, 3, false);
     astar.ConnectPoints(4, 3, false);
     astar.ConnectPoints(1, 4, false);
-    int[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]
+    long[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]
 
 
 
@@ -333,9 +335,9 @@ If you change the 2nd point's weight to 3, then the result will be ``[1, 4, 3]``
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_point_capacity**\ (\ ) |const|
+:ref:`int<class_int>` **get_point_capacity**\ (\ ) |const| :ref:`🔗<class_AStar2D_method_get_point_capacity>`
 
-Returns the capacity of the structure backing the points, useful in conjunction with :ref:`reserve_space<class_AStar2D_method_reserve_space>`.
+Returns the capacity of the structure backing the points, useful in conjunction with :ref:`reserve_space()<class_AStar2D_method_reserve_space>`.
 
 .. rst-class:: classref-item-separator
 
@@ -345,7 +347,7 @@ Returns the capacity of the structure backing the points, useful in conjunction
 
 .. rst-class:: classref-method
 
-:ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_connections**\ (\ id\: :ref:`int<class_int>`\ )
+:ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_connections**\ (\ id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AStar2D_method_get_point_connections>`
 
 Returns an array with the IDs of the points that form the connection with the given point.
 
@@ -376,7 +378,7 @@ Returns an array with the IDs of the points that form the connection with the gi
     astar.ConnectPoints(1, 2, true);
     astar.ConnectPoints(1, 3, true);
     
-    int[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]
+    long[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]
 
 
 
@@ -388,7 +390,7 @@ Returns an array with the IDs of the points that form the connection with the gi
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_point_count**\ (\ ) |const|
+:ref:`int<class_int>` **get_point_count**\ (\ ) |const| :ref:`🔗<class_AStar2D_method_get_point_count>`
 
 Returns the number of points currently in the points pool.
 
@@ -400,7 +402,7 @@ Returns the number of points currently in the points pool.
 
 .. rst-class:: classref-method
 
-:ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_ids**\ (\ )
+:ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_ids**\ (\ ) :ref:`🔗<class_AStar2D_method_get_point_ids>`
 
 Returns an array of all point IDs.
 
@@ -412,7 +414,7 @@ Returns an array of all point IDs.
 
 .. rst-class:: classref-method
 
-:ref:`PackedVector2Array<class_PackedVector2Array>` **get_point_path**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ )
+:ref:`PackedVector2Array<class_PackedVector2Array>` **get_point_path**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AStar2D_method_get_point_path>`
 
 Returns an array with the points that are in the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
 
@@ -420,6 +422,8 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
 
 \ **Note:** This method is not thread-safe. If called from a :ref:`Thread<class_Thread>`, it will return an empty array and will print an error message.
 
+Additionally, when ``allow_partial_path`` is ``true`` and ``to_id`` is disabled the search may take an unusually long time to finish.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -428,7 +432,7 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
 
 .. rst-class:: classref-method
 
-:ref:`Vector2<class_Vector2>` **get_point_position**\ (\ id\: :ref:`int<class_int>`\ ) |const|
+:ref:`Vector2<class_Vector2>` **get_point_position**\ (\ id\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AStar2D_method_get_point_position>`
 
 Returns the position of the point associated with the given ``id``.
 
@@ -440,7 +444,7 @@ Returns the position of the point associated with the given ``id``.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_point_weight_scale**\ (\ id\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_point_weight_scale**\ (\ id\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AStar2D_method_get_point_weight_scale>`
 
 Returns the weight scale of the point associated with the given ``id``.
 
@@ -452,7 +456,7 @@ Returns the weight scale of the point associated with the given ``id``.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_point**\ (\ id\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **has_point**\ (\ id\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AStar2D_method_has_point>`
 
 Returns whether a point associated with the given ``id`` exists.
 
@@ -464,7 +468,7 @@ Returns whether a point associated with the given ``id`` exists.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_point_disabled**\ (\ id\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **is_point_disabled**\ (\ id\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AStar2D_method_is_point_disabled>`
 
 Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.
 
@@ -476,7 +480,7 @@ Returns whether a point is disabled or not for pathfinding. By default, all poin
 
 .. rst-class:: classref-method
 
-|void| **remove_point**\ (\ id\: :ref:`int<class_int>`\ )
+|void| **remove_point**\ (\ id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AStar2D_method_remove_point>`
 
 Removes the point associated with the given ``id`` from the points pool.
 
@@ -488,9 +492,9 @@ Removes the point associated with the given ``id`` from the points pool.
 
 .. rst-class:: classref-method
 
-|void| **reserve_space**\ (\ num_nodes\: :ref:`int<class_int>`\ )
+|void| **reserve_space**\ (\ num_nodes\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AStar2D_method_reserve_space>`
 
-Reserves space internally for ``num_nodes`` points, useful if you're adding a known large number of points at once, such as points on a grid. New capacity must be greater or equals to old capacity.
+Reserves space internally for ``num_nodes`` points. Useful if you're adding a known large number of points at once, such as points on a grid. The new capacity must be greater or equal to the old capacity.
 
 .. rst-class:: classref-item-separator
 
@@ -500,7 +504,7 @@ Reserves space internally for ``num_nodes`` points, useful if you're adding a kn
 
 .. rst-class:: classref-method
 
-|void| **set_point_disabled**\ (\ id\: :ref:`int<class_int>`, disabled\: :ref:`bool<class_bool>` = true\ )
+|void| **set_point_disabled**\ (\ id\: :ref:`int<class_int>`, disabled\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AStar2D_method_set_point_disabled>`
 
 Disables or enables the specified point for pathfinding. Useful for making a temporary obstacle.
 
@@ -512,7 +516,7 @@ Disables or enables the specified point for pathfinding. Useful for making a tem
 
 .. rst-class:: classref-method
 
-|void| **set_point_position**\ (\ id\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`\ )
+|void| **set_point_position**\ (\ id\: :ref:`int<class_int>`, position\: :ref:`Vector2<class_Vector2>`\ ) :ref:`🔗<class_AStar2D_method_set_point_position>`
 
 Sets the ``position`` for the point with the given ``id``.
 
@@ -524,9 +528,9 @@ Sets the ``position`` for the point with the given ``id``.
 
 .. rst-class:: classref-method
 
-|void| **set_point_weight_scale**\ (\ id\: :ref:`int<class_int>`, weight_scale\: :ref:`float<class_float>`\ )
+|void| **set_point_weight_scale**\ (\ id\: :ref:`int<class_int>`, weight_scale\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AStar2D_method_set_point_weight_scale>`
 
-Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar2D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
+Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost()<class_AStar2D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 62 - 44
classes/class_astar3d.rst

@@ -21,44 +21,58 @@ Description
 
 A\* (A star) is a computer algorithm used in pathfinding and graph traversal, the process of plotting short paths among vertices (points), passing through a given set of edges (segments). It enjoys widespread use due to its performance and accuracy. Godot's A\* implementation uses points in 3D space and Euclidean distances by default.
 
-You must add points manually with :ref:`add_point<class_AStar3D_method_add_point>` and create segments manually with :ref:`connect_points<class_AStar3D_method_connect_points>`. Once done, you can test if there is a path between two points with the :ref:`are_points_connected<class_AStar3D_method_are_points_connected>` function, get a path containing indices by :ref:`get_id_path<class_AStar3D_method_get_id_path>`, or one containing actual coordinates with :ref:`get_point_path<class_AStar3D_method_get_point_path>`.
+You must add points manually with :ref:`add_point()<class_AStar3D_method_add_point>` and create segments manually with :ref:`connect_points()<class_AStar3D_method_connect_points>`. Once done, you can test if there is a path between two points with the :ref:`are_points_connected()<class_AStar3D_method_are_points_connected>` function, get a path containing indices by :ref:`get_id_path()<class_AStar3D_method_get_id_path>`, or one containing actual coordinates with :ref:`get_point_path()<class_AStar3D_method_get_point_path>`.
 
-It is also possible to use non-Euclidean distances. To do so, create a class that extends **AStar3D** and override methods :ref:`_compute_cost<class_AStar3D_private_method__compute_cost>` and :ref:`_estimate_cost<class_AStar3D_private_method__estimate_cost>`. Both take two indices and return a length, as is shown in the following example.
+It is also possible to use non-Euclidean distances. To do so, create a script that extends **AStar3D** and override the methods :ref:`_compute_cost()<class_AStar3D_private_method__compute_cost>` and :ref:`_estimate_cost()<class_AStar3D_private_method__estimate_cost>`. Both should take two point IDs and return the distance between the corresponding points.
+
+\ **Example:** Use Manhattan distance instead of Euclidean distance:
 
 
 .. tabs::
 
  .. code-tab:: gdscript
 
-    class MyAStar:
-        extends AStar3D
+    class_name MyAStar3D
+    extends AStar3D
     
-        func _compute_cost(u, v):
-            return abs(u - v)
+    func _compute_cost(u, v):
+        var u_pos = get_point_position(u)
+        var v_pos = get_point_position(v)
+        return abs(u_pos.x - v_pos.x) + abs(u_pos.y - v_pos.y) + abs(u_pos.z - v_pos.z)
     
-        func _estimate_cost(u, v):
-            return min(0, abs(u - v) - 1)
+    func _estimate_cost(u, v):
+        var u_pos = get_point_position(u)
+        var v_pos = get_point_position(v)
+        return abs(u_pos.x - v_pos.x) + abs(u_pos.y - v_pos.y) + abs(u_pos.z - v_pos.z)
 
  .. code-tab:: csharp
 
-    public partial class MyAStar : AStar3D
+    using Godot;
+    
+    [GlobalClass]
+    public partial class MyAStar3D : AStar3D
     {
         public override float _ComputeCost(long fromId, long toId)
         {
-            return Mathf.Abs((int)(fromId - toId));
+            Vector3 fromPoint = GetPointPosition(fromId);
+            Vector3 toPoint = GetPointPosition(toId);
+    
+            return Mathf.Abs(fromPoint.X - toPoint.X) + Mathf.Abs(fromPoint.Y - toPoint.Y) + Mathf.Abs(fromPoint.Z - toPoint.Z);
         }
     
         public override float _EstimateCost(long fromId, long toId)
         {
-            return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);
+            Vector3 fromPoint = GetPointPosition(fromId);
+            Vector3 toPoint = GetPointPosition(toId);
+            return Mathf.Abs(fromPoint.X - toPoint.X) + Mathf.Abs(fromPoint.Y - toPoint.Y) + Mathf.Abs(fromPoint.Z - toPoint.Z);
         }
     }
 
 
 
-\ :ref:`_estimate_cost<class_AStar3D_private_method__estimate_cost>` should return a lower bound of the distance, i.e. ``_estimate_cost(u, v) <= _compute_cost(u, v)``. This serves as a hint to the algorithm because the custom :ref:`_compute_cost<class_AStar3D_private_method__compute_cost>` might be computation-heavy. If this is not the case, make :ref:`_estimate_cost<class_AStar3D_private_method__estimate_cost>` return the same value as :ref:`_compute_cost<class_AStar3D_private_method__compute_cost>` to provide the algorithm with the most accurate information.
+\ :ref:`_estimate_cost()<class_AStar3D_private_method__estimate_cost>` should return a lower bound of the distance, i.e. ``_estimate_cost(u, v) <= _compute_cost(u, v)``. This serves as a hint to the algorithm because the custom :ref:`_compute_cost()<class_AStar3D_private_method__compute_cost>` might be computation-heavy. If this is not the case, make :ref:`_estimate_cost()<class_AStar3D_private_method__estimate_cost>` return the same value as :ref:`_compute_cost()<class_AStar3D_private_method__compute_cost>` to provide the algorithm with the most accurate information.
 
-If the default :ref:`_estimate_cost<class_AStar3D_private_method__estimate_cost>` and :ref:`_compute_cost<class_AStar3D_private_method__compute_cost>` methods are used, or if the supplied :ref:`_estimate_cost<class_AStar3D_private_method__estimate_cost>` method returns a lower bound of the cost, then the paths returned by A\* will be the lowest-cost paths. Here, the cost of a path equals the sum of the :ref:`_compute_cost<class_AStar3D_private_method__compute_cost>` results of all segments in the path multiplied by the ``weight_scale``\ s of the endpoints of the respective segments. If the default methods are used and the ``weight_scale``\ s of all points are set to ``1.0``, then this equals the sum of Euclidean distances of all segments in the path.
+If the default :ref:`_estimate_cost()<class_AStar3D_private_method__estimate_cost>` and :ref:`_compute_cost()<class_AStar3D_private_method__compute_cost>` methods are used, or if the supplied :ref:`_estimate_cost()<class_AStar3D_private_method__estimate_cost>` method returns a lower bound of the cost, then the paths returned by A\* will be the lowest-cost paths. Here, the cost of a path equals the sum of the :ref:`_compute_cost()<class_AStar3D_private_method__compute_cost>` results of all segments in the path multiplied by the ``weight_scale``\ s of the endpoints of the respective segments. If the default methods are used and the ``weight_scale``\ s of all points are set to ``1.0``, then this equals the sum of Euclidean distances of all segments in the path.
 
 .. rst-class:: classref-reftable-group
 
@@ -71,7 +85,7 @@ Methods
    +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                           | :ref:`_compute_cost<class_AStar3D_private_method__compute_cost>`\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`\ ) |virtual| |const|                                        |
    +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStar3D_private_method__estimate_cost>`\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`\ ) |virtual| |const|                                      |
+   | :ref:`float<class_float>`                           | :ref:`_estimate_cost<class_AStar3D_private_method__estimate_cost>`\ (\ from_id\: :ref:`int<class_int>`, end_id\: :ref:`int<class_int>`\ ) |virtual| |const|                                     |
    +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                              | :ref:`add_point<class_AStar3D_method_add_point>`\ (\ id\: :ref:`int<class_int>`, position\: :ref:`Vector3<class_Vector3>`, weight_scale\: :ref:`float<class_float>` = 1.0\ )                    |
    +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -133,7 +147,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **_compute_cost**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`\ ) |virtual| |const|
+:ref:`float<class_float>` **_compute_cost**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`\ ) |virtual| |const| :ref:`🔗<class_AStar3D_private_method__compute_cost>`
 
 Called when computing the cost between two connected points.
 
@@ -147,7 +161,7 @@ Note that this function is hidden in the default **AStar3D** class.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **_estimate_cost**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`\ ) |virtual| |const|
+:ref:`float<class_float>` **_estimate_cost**\ (\ from_id\: :ref:`int<class_int>`, end_id\: :ref:`int<class_int>`\ ) |virtual| |const| :ref:`🔗<class_AStar3D_private_method__estimate_cost>`
 
 Called when estimating the cost between a point and the path's ending point.
 
@@ -161,11 +175,11 @@ Note that this function is hidden in the default **AStar3D** class.
 
 .. rst-class:: classref-method
 
-|void| **add_point**\ (\ id\: :ref:`int<class_int>`, position\: :ref:`Vector3<class_Vector3>`, weight_scale\: :ref:`float<class_float>` = 1.0\ )
+|void| **add_point**\ (\ id\: :ref:`int<class_int>`, position\: :ref:`Vector3<class_Vector3>`, weight_scale\: :ref:`float<class_float>` = 1.0\ ) :ref:`🔗<class_AStar3D_method_add_point>`
 
 Adds a new point at the given position with the given identifier. The ``id`` must be 0 or larger, and the ``weight_scale`` must be 0.0 or greater.
 
-The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar3D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``\ s to form a path.
+The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost()<class_AStar3D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower ``weight_scale``\ s to form a path.
 
 
 .. tabs::
@@ -192,7 +206,7 @@ If there already exists a point for the given ``id``, its position and weight sc
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **are_points_connected**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ ) |const|
+:ref:`bool<class_bool>` **are_points_connected**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ ) |const| :ref:`🔗<class_AStar3D_method_are_points_connected>`
 
 Returns whether the two given points are directly connected by a segment. If ``bidirectional`` is ``false``, returns whether movement from ``id`` to ``to_id`` is possible through this segment.
 
@@ -204,7 +218,7 @@ Returns whether the two given points are directly connected by a segment. If ``b
 
 .. rst-class:: classref-method
 
-|void| **clear**\ (\ )
+|void| **clear**\ (\ ) :ref:`🔗<class_AStar3D_method_clear>`
 
 Clears all the points and segments.
 
@@ -216,7 +230,7 @@ Clears all the points and segments.
 
 .. rst-class:: classref-method
 
-|void| **connect_points**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ )
+|void| **connect_points**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AStar3D_method_connect_points>`
 
 Creates a segment between the given points. If ``bidirectional`` is ``false``, only movement from ``id`` to ``to_id`` is allowed, not the reverse direction.
 
@@ -247,7 +261,7 @@ Creates a segment between the given points. If ``bidirectional`` is ``false``, o
 
 .. rst-class:: classref-method
 
-|void| **disconnect_points**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ )
+|void| **disconnect_points**\ (\ id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, bidirectional\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AStar3D_method_disconnect_points>`
 
 Deletes the segment between the given points. If ``bidirectional`` is ``false``, only movement from ``id`` to ``to_id`` is prevented, and a unidirectional segment possibly remains.
 
@@ -259,7 +273,7 @@ Deletes the segment between the given points. If ``bidirectional`` is ``false``,
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_available_point_id**\ (\ ) |const|
+:ref:`int<class_int>` **get_available_point_id**\ (\ ) |const| :ref:`🔗<class_AStar3D_method_get_available_point_id>`
 
 Returns the next available point ID with no point associated to it.
 
@@ -271,7 +285,7 @@ Returns the next available point ID with no point associated to it.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_closest_point**\ (\ to_position\: :ref:`Vector3<class_Vector3>`, include_disabled\: :ref:`bool<class_bool>` = false\ ) |const|
+:ref:`int<class_int>` **get_closest_point**\ (\ to_position\: :ref:`Vector3<class_Vector3>`, include_disabled\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_AStar3D_method_get_closest_point>`
 
 Returns the ID of the closest point to ``to_position``, optionally taking disabled points into account. Returns ``-1`` if there are no points in the points pool.
 
@@ -285,7 +299,7 @@ Returns the ID of the closest point to ``to_position``, optionally taking disabl
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_closest_position_in_segment**\ (\ to_position\: :ref:`Vector3<class_Vector3>`\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_closest_position_in_segment**\ (\ to_position\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_AStar3D_method_get_closest_position_in_segment>`
 
 Returns the closest position to ``to_position`` that resides inside a segment between two connected points.
 
@@ -320,12 +334,14 @@ The result is in the segment that goes from ``y = 0`` to ``y = 5``. It's the clo
 
 .. rst-class:: classref-method
 
-:ref:`PackedInt64Array<class_PackedInt64Array>` **get_id_path**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ )
+:ref:`PackedInt64Array<class_PackedInt64Array>` **get_id_path**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AStar3D_method_get_id_path>`
 
 Returns an array with the IDs of the points that form the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.
 
 If there is no valid path to the target, and ``allow_partial_path`` is ``true``, returns a path to the point closest to the target that can be reached.
 
+\ **Note:** When ``allow_partial_path`` is ``true`` and ``to_id`` is disabled the search may take an unusually long time to finish.
+
 
 .. tabs::
 
@@ -355,7 +371,7 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
     astar.ConnectPoints(2, 3, false);
     astar.ConnectPoints(4, 3, false);
     astar.ConnectPoints(1, 4, false);
-    int[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]
+    long[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]
 
 
 
@@ -369,9 +385,9 @@ If you change the 2nd point's weight to 3, then the result will be ``[1, 4, 3]``
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_point_capacity**\ (\ ) |const|
+:ref:`int<class_int>` **get_point_capacity**\ (\ ) |const| :ref:`🔗<class_AStar3D_method_get_point_capacity>`
 
-Returns the capacity of the structure backing the points, useful in conjunction with :ref:`reserve_space<class_AStar3D_method_reserve_space>`.
+Returns the capacity of the structure backing the points, useful in conjunction with :ref:`reserve_space()<class_AStar3D_method_reserve_space>`.
 
 .. rst-class:: classref-item-separator
 
@@ -381,7 +397,7 @@ Returns the capacity of the structure backing the points, useful in conjunction
 
 .. rst-class:: classref-method
 
-:ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_connections**\ (\ id\: :ref:`int<class_int>`\ )
+:ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_connections**\ (\ id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AStar3D_method_get_point_connections>`
 
 Returns an array with the IDs of the points that form the connection with the given point.
 
@@ -411,7 +427,7 @@ Returns an array with the IDs of the points that form the connection with the gi
     astar.ConnectPoints(1, 2, true);
     astar.ConnectPoints(1, 3, true);
     
-    int[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]
+    long[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]
 
 
 
@@ -423,7 +439,7 @@ Returns an array with the IDs of the points that form the connection with the gi
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_point_count**\ (\ ) |const|
+:ref:`int<class_int>` **get_point_count**\ (\ ) |const| :ref:`🔗<class_AStar3D_method_get_point_count>`
 
 Returns the number of points currently in the points pool.
 
@@ -435,7 +451,7 @@ Returns the number of points currently in the points pool.
 
 .. rst-class:: classref-method
 
-:ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_ids**\ (\ )
+:ref:`PackedInt64Array<class_PackedInt64Array>` **get_point_ids**\ (\ ) :ref:`🔗<class_AStar3D_method_get_point_ids>`
 
 Returns an array of all point IDs.
 
@@ -447,7 +463,7 @@ Returns an array of all point IDs.
 
 .. rst-class:: classref-method
 
-:ref:`PackedVector3Array<class_PackedVector3Array>` **get_point_path**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ )
+:ref:`PackedVector3Array<class_PackedVector3Array>` **get_point_path**\ (\ from_id\: :ref:`int<class_int>`, to_id\: :ref:`int<class_int>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AStar3D_method_get_point_path>`
 
 Returns an array with the points that are in the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.
 
@@ -455,6 +471,8 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
 
 \ **Note:** This method is not thread-safe. If called from a :ref:`Thread<class_Thread>`, it will return an empty array and will print an error message.
 
+Additionally, when ``allow_partial_path`` is ``true`` and ``to_id`` is disabled the search may take an unusually long time to finish.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -463,7 +481,7 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
 
 .. rst-class:: classref-method
 
-:ref:`Vector3<class_Vector3>` **get_point_position**\ (\ id\: :ref:`int<class_int>`\ ) |const|
+:ref:`Vector3<class_Vector3>` **get_point_position**\ (\ id\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AStar3D_method_get_point_position>`
 
 Returns the position of the point associated with the given ``id``.
 
@@ -475,7 +493,7 @@ Returns the position of the point associated with the given ``id``.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_point_weight_scale**\ (\ id\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_point_weight_scale**\ (\ id\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AStar3D_method_get_point_weight_scale>`
 
 Returns the weight scale of the point associated with the given ``id``.
 
@@ -487,7 +505,7 @@ Returns the weight scale of the point associated with the given ``id``.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **has_point**\ (\ id\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **has_point**\ (\ id\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AStar3D_method_has_point>`
 
 Returns whether a point associated with the given ``id`` exists.
 
@@ -499,7 +517,7 @@ Returns whether a point associated with the given ``id`` exists.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_point_disabled**\ (\ id\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **is_point_disabled**\ (\ id\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AStar3D_method_is_point_disabled>`
 
 Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.
 
@@ -511,7 +529,7 @@ Returns whether a point is disabled or not for pathfinding. By default, all poin
 
 .. rst-class:: classref-method
 
-|void| **remove_point**\ (\ id\: :ref:`int<class_int>`\ )
+|void| **remove_point**\ (\ id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AStar3D_method_remove_point>`
 
 Removes the point associated with the given ``id`` from the points pool.
 
@@ -523,7 +541,7 @@ Removes the point associated with the given ``id`` from the points pool.
 
 .. rst-class:: classref-method
 
-|void| **reserve_space**\ (\ num_nodes\: :ref:`int<class_int>`\ )
+|void| **reserve_space**\ (\ num_nodes\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AStar3D_method_reserve_space>`
 
 Reserves space internally for ``num_nodes`` points. Useful if you're adding a known large number of points at once, such as points on a grid. New capacity must be greater or equals to old capacity.
 
@@ -535,7 +553,7 @@ Reserves space internally for ``num_nodes`` points. Useful if you're adding a kn
 
 .. rst-class:: classref-method
 
-|void| **set_point_disabled**\ (\ id\: :ref:`int<class_int>`, disabled\: :ref:`bool<class_bool>` = true\ )
+|void| **set_point_disabled**\ (\ id\: :ref:`int<class_int>`, disabled\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AStar3D_method_set_point_disabled>`
 
 Disables or enables the specified point for pathfinding. Useful for making a temporary obstacle.
 
@@ -547,7 +565,7 @@ Disables or enables the specified point for pathfinding. Useful for making a tem
 
 .. rst-class:: classref-method
 
-|void| **set_point_position**\ (\ id\: :ref:`int<class_int>`, position\: :ref:`Vector3<class_Vector3>`\ )
+|void| **set_point_position**\ (\ id\: :ref:`int<class_int>`, position\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_AStar3D_method_set_point_position>`
 
 Sets the ``position`` for the point with the given ``id``.
 
@@ -559,9 +577,9 @@ Sets the ``position`` for the point with the given ``id``.
 
 .. rst-class:: classref-method
 
-|void| **set_point_weight_scale**\ (\ id\: :ref:`int<class_int>`, weight_scale\: :ref:`float<class_float>`\ )
+|void| **set_point_weight_scale**\ (\ id\: :ref:`int<class_int>`, weight_scale\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AStar3D_method_set_point_weight_scale>`
 
-Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStar3D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
+Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost()<class_AStar3D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 99 - 81
classes/class_astargrid2d.rst

@@ -21,7 +21,7 @@ Description
 
 **AStarGrid2D** is a variant of :ref:`AStar2D<class_AStar2D>` that is specialized for partial 2D grids. It is simpler to use because it doesn't require you to manually create points and connect them together. This class also supports multiple types of heuristics, modes for diagonal movement, and a jumping mode to speed up calculations.
 
-To use **AStarGrid2D**, you only need to set the :ref:`region<class_AStarGrid2D_property_region>` of the grid, optionally set the :ref:`cell_size<class_AStarGrid2D_property_cell_size>`, and then call the :ref:`update<class_AStarGrid2D_method_update>` method:
+To use **AStarGrid2D**, you only need to set the :ref:`region<class_AStarGrid2D_property_region>` of the grid, optionally set the :ref:`cell_size<class_AStarGrid2D_property_cell_size>`, and then call the :ref:`update()<class_AStarGrid2D_method_update>` method:
 
 
 .. tabs::
@@ -32,8 +32,8 @@ To use **AStarGrid2D**, you only need to set the :ref:`region<class_AStarGrid2D_
     astar_grid.region = Rect2i(0, 0, 32, 32)
     astar_grid.cell_size = Vector2(16, 16)
     astar_grid.update()
-    print(astar_grid.get_id_path(Vector2i(0, 0), Vector2i(3, 4))) # prints (0, 0), (1, 1), (2, 2), (3, 3), (3, 4)
-    print(astar_grid.get_point_path(Vector2i(0, 0), Vector2i(3, 4))) # prints (0, 0), (16, 16), (32, 32), (48, 48), (48, 64)
+    print(astar_grid.get_id_path(Vector2i(0, 0), Vector2i(3, 4))) # Prints [(0, 0), (1, 1), (2, 2), (3, 3), (3, 4)]
+    print(astar_grid.get_point_path(Vector2i(0, 0), Vector2i(3, 4))) # Prints [(0, 0), (16, 16), (32, 32), (48, 48), (48, 64)]
 
  .. code-tab:: csharp
 
@@ -41,12 +41,12 @@ To use **AStarGrid2D**, you only need to set the :ref:`region<class_AStarGrid2D_
     astarGrid.Region = new Rect2I(0, 0, 32, 32);
     astarGrid.CellSize = new Vector2I(16, 16);
     astarGrid.Update();
-    GD.Print(astarGrid.GetIdPath(Vector2I.Zero, new Vector2I(3, 4))); // prints (0, 0), (1, 1), (2, 2), (3, 3), (3, 4)
-    GD.Print(astarGrid.GetPointPath(Vector2I.Zero, new Vector2I(3, 4))); // prints (0, 0), (16, 16), (32, 32), (48, 48), (48, 64)
+    GD.Print(astarGrid.GetIdPath(Vector2I.Zero, new Vector2I(3, 4))); // Prints [(0, 0), (1, 1), (2, 2), (3, 3), (3, 4)]
+    GD.Print(astarGrid.GetPointPath(Vector2I.Zero, new Vector2I(3, 4))); // Prints [(0, 0), (16, 16), (32, 32), (48, 48), (48, 64)]
 
 
 
-To remove a point from the pathfinding grid, it must be set as "solid" with :ref:`set_point_solid<class_AStarGrid2D_method_set_point_solid>`.
+To remove a point from the pathfinding grid, it must be set as "solid" with :ref:`set_point_solid()<class_AStarGrid2D_method_set_point_solid>`.
 
 .. rst-class:: classref-reftable-group
 
@@ -84,39 +84,41 @@ Methods
 .. table::
    :widths: auto
 
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                                    | :ref:`_compute_cost<class_AStarGrid2D_private_method__compute_cost>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const|                               |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                                    | :ref:`_estimate_cost<class_AStarGrid2D_private_method__estimate_cost>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const|                             |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                       | :ref:`clear<class_AStarGrid2D_method_clear>`\ (\ )                                                                                                                                                             |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                       | :ref:`fill_solid_region<class_AStarGrid2D_method_fill_solid_region>`\ (\ region\: :ref:`Rect2i<class_Rect2i>`, solid\: :ref:`bool<class_bool>` = true\ )                                                       |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                       | :ref:`fill_weight_scale_region<class_AStarGrid2D_method_fill_weight_scale_region>`\ (\ region\: :ref:`Rect2i<class_Rect2i>`, weight_scale\: :ref:`float<class_float>`\ )                                       |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Array<class_Array>`\[:ref:`Vector2i<class_Vector2i>`\] | :ref:`get_id_path<class_AStarGrid2D_method_get_id_path>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ )       |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`PackedVector2Array<class_PackedVector2Array>`          | :ref:`get_point_path<class_AStarGrid2D_method_get_point_path>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`Vector2<class_Vector2>`                                | :ref:`get_point_position<class_AStarGrid2D_method_get_point_position>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|                                                                                     |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`float<class_float>`                                    | :ref:`get_point_weight_scale<class_AStarGrid2D_method_get_point_weight_scale>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|                                                                             |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                                      | :ref:`is_dirty<class_AStarGrid2D_method_is_dirty>`\ (\ ) |const|                                                                                                                                               |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                                      | :ref:`is_in_bounds<class_AStarGrid2D_method_is_in_bounds>`\ (\ x\: :ref:`int<class_int>`, y\: :ref:`int<class_int>`\ ) |const|                                                                                 |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                                      | :ref:`is_in_boundsv<class_AStarGrid2D_method_is_in_boundsv>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|                                                                                               |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | :ref:`bool<class_bool>`                                      | :ref:`is_point_solid<class_AStarGrid2D_method_is_point_solid>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|                                                                                             |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                       | :ref:`set_point_solid<class_AStarGrid2D_method_set_point_solid>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`, solid\: :ref:`bool<class_bool>` = true\ )                                                           |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                       | :ref:`set_point_weight_scale<class_AStarGrid2D_method_set_point_weight_scale>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`, weight_scale\: :ref:`float<class_float>`\ )                                           |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-   | |void|                                                       | :ref:`update<class_AStarGrid2D_method_update>`\ (\ )                                                                                                                                                           |
-   +--------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                        | :ref:`_compute_cost<class_AStarGrid2D_private_method__compute_cost>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const|                               |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                        | :ref:`_estimate_cost<class_AStarGrid2D_private_method__estimate_cost>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, end_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const|                            |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`clear<class_AStarGrid2D_method_clear>`\ (\ )                                                                                                                                                             |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`fill_solid_region<class_AStarGrid2D_method_fill_solid_region>`\ (\ region\: :ref:`Rect2i<class_Rect2i>`, solid\: :ref:`bool<class_bool>` = true\ )                                                       |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`fill_weight_scale_region<class_AStarGrid2D_method_fill_weight_scale_region>`\ (\ region\: :ref:`Rect2i<class_Rect2i>`, weight_scale\: :ref:`float<class_float>`\ )                                       |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Array<class_Array>`\[:ref:`Vector2i<class_Vector2i>`\]     | :ref:`get_id_path<class_AStarGrid2D_method_get_id_path>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ )       |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] | :ref:`get_point_data_in_region<class_AStarGrid2D_method_get_point_data_in_region>`\ (\ region\: :ref:`Rect2i<class_Rect2i>`\ ) |const|                                                                         |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`PackedVector2Array<class_PackedVector2Array>`              | :ref:`get_point_path<class_AStarGrid2D_method_get_point_path>`\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`Vector2<class_Vector2>`                                    | :ref:`get_point_position<class_AStarGrid2D_method_get_point_position>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|                                                                                     |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                                        | :ref:`get_point_weight_scale<class_AStarGrid2D_method_get_point_weight_scale>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|                                                                             |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`is_dirty<class_AStarGrid2D_method_is_dirty>`\ (\ ) |const|                                                                                                                                               |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`is_in_bounds<class_AStarGrid2D_method_is_in_bounds>`\ (\ x\: :ref:`int<class_int>`, y\: :ref:`int<class_int>`\ ) |const|                                                                                 |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`is_in_boundsv<class_AStarGrid2D_method_is_in_boundsv>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|                                                                                               |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`is_point_solid<class_AStarGrid2D_method_is_point_solid>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|                                                                                             |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`set_point_solid<class_AStarGrid2D_method_set_point_solid>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`, solid\: :ref:`bool<class_bool>` = true\ )                                                           |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`set_point_weight_scale<class_AStarGrid2D_method_set_point_weight_scale>`\ (\ id\: :ref:`Vector2i<class_Vector2i>`, weight_scale\: :ref:`float<class_float>`\ )                                           |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                           | :ref:`update<class_AStarGrid2D_method_update>`\ (\ )                                                                                                                                                           |
+   +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 .. rst-class:: classref-section-separator
 
@@ -131,7 +133,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **Heuristic**:
+enum **Heuristic**: :ref:`🔗<enum_AStarGrid2D_Heuristic>`
 
 .. _class_AStarGrid2D_constant_HEURISTIC_EUCLIDEAN:
 
@@ -210,7 +212,7 @@ Represents the size of the :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` enum.
 
 .. rst-class:: classref-enumeration
 
-enum **DiagonalMode**:
+enum **DiagonalMode**: :ref:`🔗<enum_AStarGrid2D_DiagonalMode>`
 
 .. _class_AStarGrid2D_constant_DIAGONAL_MODE_ALWAYS:
 
@@ -260,7 +262,7 @@ Represents the size of the :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` en
 
 .. rst-class:: classref-enumeration
 
-enum **CellShape**:
+enum **CellShape**: :ref:`🔗<enum_AStarGrid2D_CellShape>`
 
 .. _class_AStarGrid2D_constant_CELL_SHAPE_SQUARE:
 
@@ -307,14 +309,14 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`CellShape<enum_AStarGrid2D_CellShape>` **cell_shape** = ``0``
+:ref:`CellShape<enum_AStarGrid2D_CellShape>` **cell_shape** = ``0`` :ref:`🔗<class_AStarGrid2D_property_cell_shape>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_cell_shape**\ (\ value\: :ref:`CellShape<enum_AStarGrid2D_CellShape>`\ )
 - :ref:`CellShape<enum_AStarGrid2D_CellShape>` **get_cell_shape**\ (\ )
 
-The cell shape. Affects how the positions are placed in the grid. If changed, :ref:`update<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
+The cell shape. Affects how the positions are placed in the grid. If changed, :ref:`update()<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
 
 .. rst-class:: classref-item-separator
 
@@ -324,14 +326,14 @@ The cell shape. Affects how the positions are placed in the grid. If changed, :r
 
 .. rst-class:: classref-property
 
-:ref:`Vector2<class_Vector2>` **cell_size** = ``Vector2(1, 1)``
+:ref:`Vector2<class_Vector2>` **cell_size** = ``Vector2(1, 1)`` :ref:`🔗<class_AStarGrid2D_property_cell_size>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_cell_size**\ (\ value\: :ref:`Vector2<class_Vector2>`\ )
 - :ref:`Vector2<class_Vector2>` **get_cell_size**\ (\ )
 
-The size of the point cell which will be applied to calculate the resulting point position returned by :ref:`get_point_path<class_AStarGrid2D_method_get_point_path>`. If changed, :ref:`update<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
+The size of the point cell which will be applied to calculate the resulting point position returned by :ref:`get_point_path()<class_AStarGrid2D_method_get_point_path>`. If changed, :ref:`update()<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
 
 .. rst-class:: classref-item-separator
 
@@ -341,14 +343,14 @@ The size of the point cell which will be applied to calculate the resulting poin
 
 .. rst-class:: classref-property
 
-:ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **default_compute_heuristic** = ``0``
+:ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **default_compute_heuristic** = ``0`` :ref:`🔗<class_AStarGrid2D_property_default_compute_heuristic>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_default_compute_heuristic**\ (\ value\: :ref:`Heuristic<enum_AStarGrid2D_Heuristic>`\ )
 - :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **get_default_compute_heuristic**\ (\ )
 
-The default :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` which will be used to calculate the cost between two points if :ref:`_compute_cost<class_AStarGrid2D_private_method__compute_cost>` was not overridden.
+The default :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` which will be used to calculate the cost between two points if :ref:`_compute_cost()<class_AStarGrid2D_private_method__compute_cost>` was not overridden.
 
 .. rst-class:: classref-item-separator
 
@@ -358,14 +360,14 @@ The default :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` which will be used to c
 
 .. rst-class:: classref-property
 
-:ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **default_estimate_heuristic** = ``0``
+:ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **default_estimate_heuristic** = ``0`` :ref:`🔗<class_AStarGrid2D_property_default_estimate_heuristic>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_default_estimate_heuristic**\ (\ value\: :ref:`Heuristic<enum_AStarGrid2D_Heuristic>`\ )
 - :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` **get_default_estimate_heuristic**\ (\ )
 
-The default :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` which will be used to calculate the cost between the point and the end point if :ref:`_estimate_cost<class_AStarGrid2D_private_method__estimate_cost>` was not overridden.
+The default :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` which will be used to calculate the cost between the point and the end point if :ref:`_estimate_cost()<class_AStarGrid2D_private_method__estimate_cost>` was not overridden.
 
 .. rst-class:: classref-item-separator
 
@@ -375,7 +377,7 @@ The default :ref:`Heuristic<enum_AStarGrid2D_Heuristic>` which will be used to c
 
 .. rst-class:: classref-property
 
-:ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` **diagonal_mode** = ``0``
+:ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` **diagonal_mode** = ``0`` :ref:`🔗<class_AStarGrid2D_property_diagonal_mode>`
 
 .. rst-class:: classref-property-setget
 
@@ -392,7 +394,7 @@ A specific :ref:`DiagonalMode<enum_AStarGrid2D_DiagonalMode>` mode which will fo
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **jumping_enabled** = ``false``
+:ref:`bool<class_bool>` **jumping_enabled** = ``false`` :ref:`🔗<class_AStarGrid2D_property_jumping_enabled>`
 
 .. rst-class:: classref-property-setget
 
@@ -411,14 +413,14 @@ Enables or disables jumping to skip up the intermediate points and speeds up the
 
 .. rst-class:: classref-property
 
-:ref:`Vector2<class_Vector2>` **offset** = ``Vector2(0, 0)``
+:ref:`Vector2<class_Vector2>` **offset** = ``Vector2(0, 0)`` :ref:`🔗<class_AStarGrid2D_property_offset>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_offset**\ (\ value\: :ref:`Vector2<class_Vector2>`\ )
 - :ref:`Vector2<class_Vector2>` **get_offset**\ (\ )
 
-The offset of the grid which will be applied to calculate the resulting point position returned by :ref:`get_point_path<class_AStarGrid2D_method_get_point_path>`. If changed, :ref:`update<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
+The offset of the grid which will be applied to calculate the resulting point position returned by :ref:`get_point_path()<class_AStarGrid2D_method_get_point_path>`. If changed, :ref:`update()<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
 
 .. rst-class:: classref-item-separator
 
@@ -428,14 +430,14 @@ The offset of the grid which will be applied to calculate the resulting point po
 
 .. rst-class:: classref-property
 
-:ref:`Rect2i<class_Rect2i>` **region** = ``Rect2i(0, 0, 0, 0)``
+:ref:`Rect2i<class_Rect2i>` **region** = ``Rect2i(0, 0, 0, 0)`` :ref:`🔗<class_AStarGrid2D_property_region>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_region**\ (\ value\: :ref:`Rect2i<class_Rect2i>`\ )
 - :ref:`Rect2i<class_Rect2i>` **get_region**\ (\ )
 
-The region of grid cells available for pathfinding. If changed, :ref:`update<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
+The region of grid cells available for pathfinding. If changed, :ref:`update()<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
 
 .. rst-class:: classref-item-separator
 
@@ -445,7 +447,7 @@ The region of grid cells available for pathfinding. If changed, :ref:`update<cla
 
 .. rst-class:: classref-property
 
-:ref:`Vector2i<class_Vector2i>` **size** = ``Vector2i(0, 0)``
+:ref:`Vector2i<class_Vector2i>` **size** = ``Vector2i(0, 0)`` :ref:`🔗<class_AStarGrid2D_property_size>`
 
 .. rst-class:: classref-property-setget
 
@@ -454,7 +456,7 @@ The region of grid cells available for pathfinding. If changed, :ref:`update<cla
 
 **Deprecated:** Use :ref:`region<class_AStarGrid2D_property_region>` instead.
 
-The size of the grid (number of cells of size :ref:`cell_size<class_AStarGrid2D_property_cell_size>` on each axis). If changed, :ref:`update<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
+The size of the grid (number of cells of size :ref:`cell_size<class_AStarGrid2D_property_cell_size>` on each axis). If changed, :ref:`update()<class_AStarGrid2D_method_update>` needs to be called before finding the next path.
 
 .. rst-class:: classref-section-separator
 
@@ -469,7 +471,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **_compute_cost**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const|
+:ref:`float<class_float>` **_compute_cost**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const| :ref:`🔗<class_AStarGrid2D_private_method__compute_cost>`
 
 Called when computing the cost between two connected points.
 
@@ -483,7 +485,7 @@ Note that this function is hidden in the default **AStarGrid2D** class.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **_estimate_cost**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const|
+:ref:`float<class_float>` **_estimate_cost**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, end_id\: :ref:`Vector2i<class_Vector2i>`\ ) |virtual| |const| :ref:`🔗<class_AStarGrid2D_private_method__estimate_cost>`
 
 Called when estimating the cost between a point and the path's ending point.
 
@@ -497,7 +499,7 @@ Note that this function is hidden in the default **AStarGrid2D** class.
 
 .. rst-class:: classref-method
 
-|void| **clear**\ (\ )
+|void| **clear**\ (\ ) :ref:`🔗<class_AStarGrid2D_method_clear>`
 
 Clears the grid and sets the :ref:`region<class_AStarGrid2D_property_region>` to ``Rect2i(0, 0, 0, 0)``.
 
@@ -509,11 +511,11 @@ Clears the grid and sets the :ref:`region<class_AStarGrid2D_property_region>` to
 
 .. rst-class:: classref-method
 
-|void| **fill_solid_region**\ (\ region\: :ref:`Rect2i<class_Rect2i>`, solid\: :ref:`bool<class_bool>` = true\ )
+|void| **fill_solid_region**\ (\ region\: :ref:`Rect2i<class_Rect2i>`, solid\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AStarGrid2D_method_fill_solid_region>`
 
 Fills the given ``region`` on the grid with the specified value for the solid flag.
 
-\ **Note:** Calling :ref:`update<class_AStarGrid2D_method_update>` is not needed after the call of this function.
+\ **Note:** Calling :ref:`update()<class_AStarGrid2D_method_update>` is not needed after the call of this function.
 
 .. rst-class:: classref-item-separator
 
@@ -523,11 +525,11 @@ Fills the given ``region`` on the grid with the specified value for the solid fl
 
 .. rst-class:: classref-method
 
-|void| **fill_weight_scale_region**\ (\ region\: :ref:`Rect2i<class_Rect2i>`, weight_scale\: :ref:`float<class_float>`\ )
+|void| **fill_weight_scale_region**\ (\ region\: :ref:`Rect2i<class_Rect2i>`, weight_scale\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AStarGrid2D_method_fill_weight_scale_region>`
 
 Fills the given ``region`` on the grid with the specified value for the weight scale.
 
-\ **Note:** Calling :ref:`update<class_AStarGrid2D_method_update>` is not needed after the call of this function.
+\ **Note:** Calling :ref:`update()<class_AStarGrid2D_method_update>` is not needed after the call of this function.
 
 .. rst-class:: classref-item-separator
 
@@ -537,12 +539,26 @@ Fills the given ``region`` on the grid with the specified value for the weight s
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>`\[:ref:`Vector2i<class_Vector2i>`\] **get_id_path**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ )
+:ref:`Array<class_Array>`\[:ref:`Vector2i<class_Vector2i>`\] **get_id_path**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AStarGrid2D_method_get_id_path>`
 
 Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
 
 If there is no valid path to the target, and ``allow_partial_path`` is ``true``, returns a path to the point closest to the target that can be reached.
 
+\ **Note:** When ``allow_partial_path`` is ``true`` and ``to_id`` is solid the search may take an unusually long time to finish.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AStarGrid2D_method_get_point_data_in_region:
+
+.. rst-class:: classref-method
+
+:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **get_point_data_in_region**\ (\ region\: :ref:`Rect2i<class_Rect2i>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_get_point_data_in_region>`
+
+Returns an array of dictionaries with point data (``id``: :ref:`Vector2i<class_Vector2i>`, ``position``: :ref:`Vector2<class_Vector2>`, ``solid``: :ref:`bool<class_bool>`, ``weight_scale``: :ref:`float<class_float>`) within a ``region``.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -551,7 +567,7 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
 
 .. rst-class:: classref-method
 
-:ref:`PackedVector2Array<class_PackedVector2Array>` **get_point_path**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ )
+:ref:`PackedVector2Array<class_PackedVector2Array>` **get_point_path**\ (\ from_id\: :ref:`Vector2i<class_Vector2i>`, to_id\: :ref:`Vector2i<class_Vector2i>`, allow_partial_path\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_AStarGrid2D_method_get_point_path>`
 
 Returns an array with the points that are in the path found by **AStarGrid2D** between the given points. The array is ordered from the starting point to the ending point of the path.
 
@@ -559,6 +575,8 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
 
 \ **Note:** This method is not thread-safe. If called from a :ref:`Thread<class_Thread>`, it will return an empty array and will print an error message.
 
+Additionally, when ``allow_partial_path`` is ``true`` and ``to_id`` is solid the search may take an unusually long time to finish.
+
 .. rst-class:: classref-item-separator
 
 ----
@@ -567,7 +585,7 @@ If there is no valid path to the target, and ``allow_partial_path`` is ``true``,
 
 .. rst-class:: classref-method
 
-:ref:`Vector2<class_Vector2>` **get_point_position**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|
+:ref:`Vector2<class_Vector2>` **get_point_position**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_get_point_position>`
 
 Returns the position of the point associated with the given ``id``.
 
@@ -579,7 +597,7 @@ Returns the position of the point associated with the given ``id``.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_point_weight_scale**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|
+:ref:`float<class_float>` **get_point_weight_scale**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_get_point_weight_scale>`
 
 Returns the weight scale of the point associated with the given ``id``.
 
@@ -591,9 +609,9 @@ Returns the weight scale of the point associated with the given ``id``.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_dirty**\ (\ ) |const|
+:ref:`bool<class_bool>` **is_dirty**\ (\ ) |const| :ref:`🔗<class_AStarGrid2D_method_is_dirty>`
 
-Indicates that the grid parameters were changed and :ref:`update<class_AStarGrid2D_method_update>` needs to be called.
+Indicates that the grid parameters were changed and :ref:`update()<class_AStarGrid2D_method_update>` needs to be called.
 
 .. rst-class:: classref-item-separator
 
@@ -603,7 +621,7 @@ Indicates that the grid parameters were changed and :ref:`update<class_AStarGrid
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_in_bounds**\ (\ x\: :ref:`int<class_int>`, y\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **is_in_bounds**\ (\ x\: :ref:`int<class_int>`, y\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_is_in_bounds>`
 
 Returns ``true`` if the ``x`` and ``y`` is a valid grid coordinate (id), i.e. if it is inside :ref:`region<class_AStarGrid2D_property_region>`. Equivalent to ``region.has_point(Vector2i(x, y))``.
 
@@ -615,7 +633,7 @@ Returns ``true`` if the ``x`` and ``y`` is a valid grid coordinate (id), i.e. if
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_in_boundsv**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|
+:ref:`bool<class_bool>` **is_in_boundsv**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_is_in_boundsv>`
 
 Returns ``true`` if the ``id`` vector is a valid grid coordinate, i.e. if it is inside :ref:`region<class_AStarGrid2D_property_region>`. Equivalent to ``region.has_point(id)``.
 
@@ -627,7 +645,7 @@ Returns ``true`` if the ``id`` vector is a valid grid coordinate, i.e. if it is
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_point_solid**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const|
+:ref:`bool<class_bool>` **is_point_solid**\ (\ id\: :ref:`Vector2i<class_Vector2i>`\ ) |const| :ref:`🔗<class_AStarGrid2D_method_is_point_solid>`
 
 Returns ``true`` if a point is disabled for pathfinding. By default, all points are enabled.
 
@@ -639,11 +657,11 @@ Returns ``true`` if a point is disabled for pathfinding. By default, all points
 
 .. rst-class:: classref-method
 
-|void| **set_point_solid**\ (\ id\: :ref:`Vector2i<class_Vector2i>`, solid\: :ref:`bool<class_bool>` = true\ )
+|void| **set_point_solid**\ (\ id\: :ref:`Vector2i<class_Vector2i>`, solid\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_AStarGrid2D_method_set_point_solid>`
 
 Disables or enables the specified point for pathfinding. Useful for making an obstacle. By default, all points are enabled.
 
-\ **Note:** Calling :ref:`update<class_AStarGrid2D_method_update>` is not needed after the call of this function.
+\ **Note:** Calling :ref:`update()<class_AStarGrid2D_method_update>` is not needed after the call of this function.
 
 .. rst-class:: classref-item-separator
 
@@ -653,11 +671,11 @@ Disables or enables the specified point for pathfinding. Useful for making an ob
 
 .. rst-class:: classref-method
 
-|void| **set_point_weight_scale**\ (\ id\: :ref:`Vector2i<class_Vector2i>`, weight_scale\: :ref:`float<class_float>`\ )
+|void| **set_point_weight_scale**\ (\ id\: :ref:`Vector2i<class_Vector2i>`, weight_scale\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AStarGrid2D_method_set_point_weight_scale>`
 
-Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost<class_AStarGrid2D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
+Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scale`` is multiplied by the result of :ref:`_compute_cost()<class_AStarGrid2D_private_method__compute_cost>` when determining the overall cost of traveling across a segment from a neighboring point to this point.
 
-\ **Note:** Calling :ref:`update<class_AStarGrid2D_method_update>` is not needed after the call of this function.
+\ **Note:** Calling :ref:`update()<class_AStarGrid2D_method_update>` is not needed after the call of this function.
 
 .. rst-class:: classref-item-separator
 
@@ -667,9 +685,9 @@ Sets the ``weight_scale`` for the point with the given ``id``. The ``weight_scal
 
 .. rst-class:: classref-method
 
-|void| **update**\ (\ )
+|void| **update**\ (\ ) :ref:`🔗<class_AStarGrid2D_method_update>`
 
-Updates the internal state of the grid according to the parameters to prepare it to search the path. Needs to be called if parameters like :ref:`region<class_AStarGrid2D_property_region>`, :ref:`cell_size<class_AStarGrid2D_property_cell_size>` or :ref:`offset<class_AStarGrid2D_property_offset>` are changed. :ref:`is_dirty<class_AStarGrid2D_method_is_dirty>` will return ``true`` if this is the case and this needs to be called.
+Updates the internal state of the grid according to the parameters to prepare it to search the path. Needs to be called if parameters like :ref:`region<class_AStarGrid2D_property_region>`, :ref:`cell_size<class_AStarGrid2D_property_cell_size>` or :ref:`offset<class_AStarGrid2D_property_offset>` are changed. :ref:`is_dirty()<class_AStarGrid2D_method_is_dirty>` will return ``true`` if this is the case and this needs to be called.
 
 \ **Note:** All point data (solidity and weight scale) will be cleared.
 

+ 6 - 6
classes/class_atlastexture.rst

@@ -23,7 +23,7 @@ Description
 
 Multiple **AtlasTexture** resources can be cropped from the same :ref:`atlas<class_AtlasTexture_property_atlas>`. Packing many smaller textures into a singular large texture helps to optimize video memory costs and render calls.
 
-\ **Note:** **AtlasTexture** cannot be used in an :ref:`AnimatedTexture<class_AnimatedTexture>`, and may not tile properly in nodes such as :ref:`TextureRect<class_TextureRect>`, when inside other **AtlasTexture** resources.
+\ **Note:** **AtlasTexture** cannot be used in an :ref:`AnimatedTexture<class_AnimatedTexture>`, and will not tile properly in nodes such as :ref:`TextureRect<class_TextureRect>` or :ref:`Sprite2D<class_Sprite2D>`. To tile an **AtlasTexture**, modify its :ref:`region<class_AtlasTexture_property_region>` instead.
 
 .. rst-class:: classref-reftable-group
 
@@ -58,7 +58,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`Texture2D<class_Texture2D>` **atlas**
+:ref:`Texture2D<class_Texture2D>` **atlas** :ref:`🔗<class_AtlasTexture_property_atlas>`
 
 .. rst-class:: classref-property-setget
 
@@ -75,7 +75,7 @@ The texture that contains the atlas. Can be any type inheriting from :ref:`Textu
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **filter_clip** = ``false``
+:ref:`bool<class_bool>` **filter_clip** = ``false`` :ref:`🔗<class_AtlasTexture_property_filter_clip>`
 
 .. rst-class:: classref-property-setget
 
@@ -92,7 +92,7 @@ If ``true``, the area outside of the :ref:`region<class_AtlasTexture_property_re
 
 .. rst-class:: classref-property
 
-:ref:`Rect2<class_Rect2>` **margin** = ``Rect2(0, 0, 0, 0)``
+:ref:`Rect2<class_Rect2>` **margin** = ``Rect2(0, 0, 0, 0)`` :ref:`🔗<class_AtlasTexture_property_margin>`
 
 .. rst-class:: classref-property-setget
 
@@ -109,14 +109,14 @@ The margin around the :ref:`region<class_AtlasTexture_property_region>`. Useful
 
 .. rst-class:: classref-property
 
-:ref:`Rect2<class_Rect2>` **region** = ``Rect2(0, 0, 0, 0)``
+:ref:`Rect2<class_Rect2>` **region** = ``Rect2(0, 0, 0, 0)`` :ref:`🔗<class_AtlasTexture_property_region>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_region**\ (\ value\: :ref:`Rect2<class_Rect2>`\ )
 - :ref:`Rect2<class_Rect2>` **get_region**\ (\ )
 
-The region used to draw the :ref:`atlas<class_AtlasTexture_property_atlas>`.
+The region used to draw the :ref:`atlas<class_AtlasTexture_property_atlas>`. If either dimension of the region's size is ``0``, the value from :ref:`atlas<class_AtlasTexture_property_atlas>` size will be used for that axis instead.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 4 - 4
classes/class_audioeffect.rst

@@ -21,7 +21,7 @@ Base class for audio effect resources.
 Description
 -----------
 
-The base :ref:`Resource<class_Resource>` for every audio effect. In the editor, an audio effect can be added to the current bus layout through the Audio panel. At run-time, it is also possible to manipulate audio effects through :ref:`AudioServer.add_bus_effect<class_AudioServer_method_add_bus_effect>`, :ref:`AudioServer.remove_bus_effect<class_AudioServer_method_remove_bus_effect>`, and :ref:`AudioServer.get_bus_effect<class_AudioServer_method_get_bus_effect>`.
+The base :ref:`Resource<class_Resource>` for every audio effect. In the editor, an audio effect can be added to the current bus layout through the Audio panel. At run-time, it is also possible to manipulate audio effects through :ref:`AudioServer.add_bus_effect()<class_AudioServer_method_add_bus_effect>`, :ref:`AudioServer.remove_bus_effect()<class_AudioServer_method_remove_bus_effect>`, and :ref:`AudioServer.get_bus_effect()<class_AudioServer_method_get_bus_effect>`.
 
 When applied on a bus, an audio effect creates a corresponding :ref:`AudioEffectInstance<class_AudioEffectInstance>`. The instance is directly responsible for manipulating the sound, based on the original audio effect's properties.
 
@@ -32,7 +32,7 @@ Tutorials
 
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
-- `Audio Mic Record Demo <https://godotengine.org/asset-library/asset/527>`__
+- `Audio Microphone Record Demo <https://godotengine.org/asset-library/asset/2760>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -59,9 +59,9 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`AudioEffectInstance<class_AudioEffectInstance>` **_instantiate**\ (\ ) |virtual|
+:ref:`AudioEffectInstance<class_AudioEffectInstance>` **_instantiate**\ (\ ) |virtual| :ref:`🔗<class_AudioEffect_private_method__instantiate>`
 
-Override this method to customize the :ref:`AudioEffectInstance<class_AudioEffectInstance>` created when this effect is applied on a bus in the editor's Audio panel, or through :ref:`AudioServer.add_bus_effect<class_AudioServer_method_add_bus_effect>`.
+Override this method to customize the :ref:`AudioEffectInstance<class_AudioEffectInstance>` created when this effect is applied on a bus in the editor's Audio panel, or through :ref:`AudioServer.add_bus_effect()<class_AudioServer_method_add_bus_effect>`.
 
 ::
 

+ 25 - 4
classes/class_audioeffectamplify.rst

@@ -36,9 +36,11 @@ Properties
 .. table::
    :widths: auto
 
-   +---------------------------+---------------------------------------------------------------+---------+
-   | :ref:`float<class_float>` | :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>` | ``0.0`` |
-   +---------------------------+---------------------------------------------------------------+---------+
+   +---------------------------+-----------------------------------------------------------------------+---------+
+   | :ref:`float<class_float>` | :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>`         | ``0.0`` |
+   +---------------------------+-----------------------------------------------------------------------+---------+
+   | :ref:`float<class_float>` | :ref:`volume_linear<class_AudioEffectAmplify_property_volume_linear>` |         |
+   +---------------------------+-----------------------------------------------------------------------+---------+
 
 .. rst-class:: classref-section-separator
 
@@ -53,7 +55,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **volume_db** = ``0.0``
+:ref:`float<class_float>` **volume_db** = ``0.0`` :ref:`🔗<class_AudioEffectAmplify_property_volume_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -62,6 +64,25 @@ Property Descriptions
 
 Amount of amplification in decibels. Positive values make the sound louder, negative values make it quieter. Value can range from -80 to 24.
 
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioEffectAmplify_property_volume_linear:
+
+.. rst-class:: classref-property
+
+:ref:`float<class_float>` **volume_linear** :ref:`🔗<class_AudioEffectAmplify_property_volume_linear>`
+
+.. rst-class:: classref-property-setget
+
+- |void| **set_volume_linear**\ (\ value\: :ref:`float<class_float>`\ )
+- :ref:`float<class_float>` **get_volume_linear**\ (\ )
+
+Amount of amplification as a linear value.
+
+\ **Note:** This member modifies :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>` for convenience. The returned value is equivalent to the result of :ref:`@GlobalScope.db_to_linear()<class_@GlobalScope_method_db_to_linear>` on :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>`. Setting this member is equivalent to setting :ref:`volume_db<class_AudioEffectAmplify_property_volume_db>` to the result of :ref:`@GlobalScope.linear_to_db()<class_@GlobalScope_method_linear_to_db>` on a value.
+
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
 .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`

+ 10 - 10
classes/class_audioeffectcapture.rst

@@ -21,7 +21,7 @@ Description
 
 AudioEffectCapture is an AudioEffect which copies all audio frames from the attached audio effect bus into its internal ring buffer.
 
-Application code should consume these audio frames from this ring buffer using :ref:`get_buffer<class_AudioEffectCapture_method_get_buffer>` and process it as needed, for example to capture data from an :ref:`AudioStreamMicrophone<class_AudioStreamMicrophone>`, implement application-defined effects, or to transmit audio over the network. When capturing audio data from a microphone, the format of the samples will be stereo 32-bit floating-point PCM.
+Application code should consume these audio frames from this ring buffer using :ref:`get_buffer()<class_AudioEffectCapture_method_get_buffer>` and process it as needed, for example to capture data from an :ref:`AudioStreamMicrophone<class_AudioStreamMicrophone>`, implement application-defined effects, or to transmit audio over the network. When capturing audio data from a microphone, the format of the samples will be stereo 32-bit floating-point PCM.
 
 Unlike :ref:`AudioEffectRecord<class_AudioEffectRecord>`, this effect only returns the raw audio samples instead of encoding them into an :ref:`AudioStream<class_AudioStream>`.
 
@@ -81,7 +81,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **buffer_length** = ``0.1``
+:ref:`float<class_float>` **buffer_length** = ``0.1`` :ref:`🔗<class_AudioEffectCapture_property_buffer_length>`
 
 .. rst-class:: classref-property-setget
 
@@ -103,7 +103,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **can_get_buffer**\ (\ frames\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **can_get_buffer**\ (\ frames\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioEffectCapture_method_can_get_buffer>`
 
 Returns ``true`` if at least ``frames`` audio frames are available to read in the internal ring buffer.
 
@@ -115,7 +115,7 @@ Returns ``true`` if at least ``frames`` audio frames are available to read in th
 
 .. rst-class:: classref-method
 
-|void| **clear_buffer**\ (\ )
+|void| **clear_buffer**\ (\ ) :ref:`🔗<class_AudioEffectCapture_method_clear_buffer>`
 
 Clears the internal ring buffer.
 
@@ -129,7 +129,7 @@ Clears the internal ring buffer.
 
 .. rst-class:: classref-method
 
-:ref:`PackedVector2Array<class_PackedVector2Array>` **get_buffer**\ (\ frames\: :ref:`int<class_int>`\ )
+:ref:`PackedVector2Array<class_PackedVector2Array>` **get_buffer**\ (\ frames\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AudioEffectCapture_method_get_buffer>`
 
 Gets the next ``frames`` audio samples from the internal ring buffer.
 
@@ -145,7 +145,7 @@ The samples are signed floating-point PCM between ``-1`` and ``1``. You will hav
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_buffer_length_frames**\ (\ ) |const|
+:ref:`int<class_int>` **get_buffer_length_frames**\ (\ ) |const| :ref:`🔗<class_AudioEffectCapture_method_get_buffer_length_frames>`
 
 Returns the total size of the internal ring buffer in frames.
 
@@ -157,7 +157,7 @@ Returns the total size of the internal ring buffer in frames.
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_discarded_frames**\ (\ ) |const|
+:ref:`int<class_int>` **get_discarded_frames**\ (\ ) |const| :ref:`🔗<class_AudioEffectCapture_method_get_discarded_frames>`
 
 Returns the number of audio frames discarded from the audio bus due to full buffer.
 
@@ -169,9 +169,9 @@ Returns the number of audio frames discarded from the audio bus due to full buff
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_frames_available**\ (\ ) |const|
+:ref:`int<class_int>` **get_frames_available**\ (\ ) |const| :ref:`🔗<class_AudioEffectCapture_method_get_frames_available>`
 
-Returns the number of frames available to read using :ref:`get_buffer<class_AudioEffectCapture_method_get_buffer>`.
+Returns the number of frames available to read using :ref:`get_buffer()<class_AudioEffectCapture_method_get_buffer>`.
 
 .. rst-class:: classref-item-separator
 
@@ -181,7 +181,7 @@ Returns the number of frames available to read using :ref:`get_buffer<class_Audi
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_pushed_frames**\ (\ ) |const|
+:ref:`int<class_int>` **get_pushed_frames**\ (\ ) |const| :ref:`🔗<class_AudioEffectCapture_method_get_pushed_frames>`
 
 Returns the number of audio frames inserted from the audio bus.
 

+ 39 - 39
classes/class_audioeffectchorus.rst

@@ -139,7 +139,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **dry** = ``1.0``
+:ref:`float<class_float>` **dry** = ``1.0`` :ref:`🔗<class_AudioEffectChorus_property_dry>`
 
 .. rst-class:: classref-property-setget
 
@@ -156,7 +156,7 @@ The effect's raw signal.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/1/cutoff_hz** = ``8000.0``
+:ref:`float<class_float>` **voice/1/cutoff_hz** = ``8000.0`` :ref:`🔗<class_AudioEffectChorus_property_voice/1/cutoff_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -173,7 +173,7 @@ The voice's cutoff frequency.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/1/delay_ms** = ``15.0``
+:ref:`float<class_float>` **voice/1/delay_ms** = ``15.0`` :ref:`🔗<class_AudioEffectChorus_property_voice/1/delay_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -190,7 +190,7 @@ The voice's signal delay.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/1/depth_ms** = ``2.0``
+:ref:`float<class_float>` **voice/1/depth_ms** = ``2.0`` :ref:`🔗<class_AudioEffectChorus_property_voice/1/depth_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -207,7 +207,7 @@ The voice filter's depth.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/1/level_db** = ``0.0``
+:ref:`float<class_float>` **voice/1/level_db** = ``0.0`` :ref:`🔗<class_AudioEffectChorus_property_voice/1/level_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -224,7 +224,7 @@ The voice's volume.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/1/pan** = ``-0.5``
+:ref:`float<class_float>` **voice/1/pan** = ``-0.5`` :ref:`🔗<class_AudioEffectChorus_property_voice/1/pan>`
 
 .. rst-class:: classref-property-setget
 
@@ -241,7 +241,7 @@ The voice's pan level.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/1/rate_hz** = ``0.8``
+:ref:`float<class_float>` **voice/1/rate_hz** = ``0.8`` :ref:`🔗<class_AudioEffectChorus_property_voice/1/rate_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -258,7 +258,7 @@ The voice's filter rate.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/2/cutoff_hz** = ``8000.0``
+:ref:`float<class_float>` **voice/2/cutoff_hz** = ``8000.0`` :ref:`🔗<class_AudioEffectChorus_property_voice/2/cutoff_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -275,7 +275,7 @@ The voice's cutoff frequency.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/2/delay_ms** = ``20.0``
+:ref:`float<class_float>` **voice/2/delay_ms** = ``20.0`` :ref:`🔗<class_AudioEffectChorus_property_voice/2/delay_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -292,7 +292,7 @@ The voice's signal delay.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/2/depth_ms** = ``3.0``
+:ref:`float<class_float>` **voice/2/depth_ms** = ``3.0`` :ref:`🔗<class_AudioEffectChorus_property_voice/2/depth_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -309,7 +309,7 @@ The voice filter's depth.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/2/level_db** = ``0.0``
+:ref:`float<class_float>` **voice/2/level_db** = ``0.0`` :ref:`🔗<class_AudioEffectChorus_property_voice/2/level_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -326,7 +326,7 @@ The voice's volume.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/2/pan** = ``0.5``
+:ref:`float<class_float>` **voice/2/pan** = ``0.5`` :ref:`🔗<class_AudioEffectChorus_property_voice/2/pan>`
 
 .. rst-class:: classref-property-setget
 
@@ -343,7 +343,7 @@ The voice's pan level.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/2/rate_hz** = ``1.2``
+:ref:`float<class_float>` **voice/2/rate_hz** = ``1.2`` :ref:`🔗<class_AudioEffectChorus_property_voice/2/rate_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -360,7 +360,7 @@ The voice's filter rate.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/3/cutoff_hz**
+:ref:`float<class_float>` **voice/3/cutoff_hz** :ref:`🔗<class_AudioEffectChorus_property_voice/3/cutoff_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -377,7 +377,7 @@ The voice's cutoff frequency.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/3/delay_ms**
+:ref:`float<class_float>` **voice/3/delay_ms** :ref:`🔗<class_AudioEffectChorus_property_voice/3/delay_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -394,7 +394,7 @@ The voice's signal delay.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/3/depth_ms**
+:ref:`float<class_float>` **voice/3/depth_ms** :ref:`🔗<class_AudioEffectChorus_property_voice/3/depth_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -411,7 +411,7 @@ The voice filter's depth.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/3/level_db**
+:ref:`float<class_float>` **voice/3/level_db** :ref:`🔗<class_AudioEffectChorus_property_voice/3/level_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -428,7 +428,7 @@ The voice's volume.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/3/pan**
+:ref:`float<class_float>` **voice/3/pan** :ref:`🔗<class_AudioEffectChorus_property_voice/3/pan>`
 
 .. rst-class:: classref-property-setget
 
@@ -445,7 +445,7 @@ The voice's pan level.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/3/rate_hz**
+:ref:`float<class_float>` **voice/3/rate_hz** :ref:`🔗<class_AudioEffectChorus_property_voice/3/rate_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -462,7 +462,7 @@ The voice's filter rate.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/4/cutoff_hz**
+:ref:`float<class_float>` **voice/4/cutoff_hz** :ref:`🔗<class_AudioEffectChorus_property_voice/4/cutoff_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -479,7 +479,7 @@ The voice's cutoff frequency.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/4/delay_ms**
+:ref:`float<class_float>` **voice/4/delay_ms** :ref:`🔗<class_AudioEffectChorus_property_voice/4/delay_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -496,7 +496,7 @@ The voice's signal delay.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/4/depth_ms**
+:ref:`float<class_float>` **voice/4/depth_ms** :ref:`🔗<class_AudioEffectChorus_property_voice/4/depth_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -513,7 +513,7 @@ The voice filter's depth.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/4/level_db**
+:ref:`float<class_float>` **voice/4/level_db** :ref:`🔗<class_AudioEffectChorus_property_voice/4/level_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -530,7 +530,7 @@ The voice's volume.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/4/pan**
+:ref:`float<class_float>` **voice/4/pan** :ref:`🔗<class_AudioEffectChorus_property_voice/4/pan>`
 
 .. rst-class:: classref-property-setget
 
@@ -547,7 +547,7 @@ The voice's pan level.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **voice/4/rate_hz**
+:ref:`float<class_float>` **voice/4/rate_hz** :ref:`🔗<class_AudioEffectChorus_property_voice/4/rate_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -564,7 +564,7 @@ The voice's filter rate.
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **voice_count** = ``2``
+:ref:`int<class_int>` **voice_count** = ``2`` :ref:`🔗<class_AudioEffectChorus_property_voice_count>`
 
 .. rst-class:: classref-property-setget
 
@@ -581,7 +581,7 @@ The number of voices in the effect.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **wet** = ``0.5``
+:ref:`float<class_float>` **wet** = ``0.5`` :ref:`🔗<class_AudioEffectChorus_property_wet>`
 
 .. rst-class:: classref-property-setget
 
@@ -603,7 +603,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_voice_cutoff_hz**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_voice_cutoff_hz**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioEffectChorus_method_get_voice_cutoff_hz>`
 
 .. container:: contribute
 
@@ -617,7 +617,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_voice_delay_ms**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_voice_delay_ms**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioEffectChorus_method_get_voice_delay_ms>`
 
 .. container:: contribute
 
@@ -631,7 +631,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_voice_depth_ms**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_voice_depth_ms**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioEffectChorus_method_get_voice_depth_ms>`
 
 .. container:: contribute
 
@@ -645,7 +645,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_voice_level_db**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_voice_level_db**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioEffectChorus_method_get_voice_level_db>`
 
 .. container:: contribute
 
@@ -659,7 +659,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_voice_pan**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_voice_pan**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioEffectChorus_method_get_voice_pan>`
 
 .. container:: contribute
 
@@ -673,7 +673,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_voice_rate_hz**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_voice_rate_hz**\ (\ voice_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioEffectChorus_method_get_voice_rate_hz>`
 
 .. container:: contribute
 
@@ -687,7 +687,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **set_voice_cutoff_hz**\ (\ voice_idx\: :ref:`int<class_int>`, cutoff_hz\: :ref:`float<class_float>`\ )
+|void| **set_voice_cutoff_hz**\ (\ voice_idx\: :ref:`int<class_int>`, cutoff_hz\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioEffectChorus_method_set_voice_cutoff_hz>`
 
 .. container:: contribute
 
@@ -701,7 +701,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **set_voice_delay_ms**\ (\ voice_idx\: :ref:`int<class_int>`, delay_ms\: :ref:`float<class_float>`\ )
+|void| **set_voice_delay_ms**\ (\ voice_idx\: :ref:`int<class_int>`, delay_ms\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioEffectChorus_method_set_voice_delay_ms>`
 
 .. container:: contribute
 
@@ -715,7 +715,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **set_voice_depth_ms**\ (\ voice_idx\: :ref:`int<class_int>`, depth_ms\: :ref:`float<class_float>`\ )
+|void| **set_voice_depth_ms**\ (\ voice_idx\: :ref:`int<class_int>`, depth_ms\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioEffectChorus_method_set_voice_depth_ms>`
 
 .. container:: contribute
 
@@ -729,7 +729,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **set_voice_level_db**\ (\ voice_idx\: :ref:`int<class_int>`, level_db\: :ref:`float<class_float>`\ )
+|void| **set_voice_level_db**\ (\ voice_idx\: :ref:`int<class_int>`, level_db\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioEffectChorus_method_set_voice_level_db>`
 
 .. container:: contribute
 
@@ -743,7 +743,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **set_voice_pan**\ (\ voice_idx\: :ref:`int<class_int>`, pan\: :ref:`float<class_float>`\ )
+|void| **set_voice_pan**\ (\ voice_idx\: :ref:`int<class_int>`, pan\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioEffectChorus_method_set_voice_pan>`
 
 .. container:: contribute
 
@@ -757,7 +757,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **set_voice_rate_hz**\ (\ voice_idx\: :ref:`int<class_int>`, rate_hz\: :ref:`float<class_float>`\ )
+|void| **set_voice_rate_hz**\ (\ voice_idx\: :ref:`int<class_int>`, rate_hz\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioEffectChorus_method_set_voice_rate_hz>`
 
 .. container:: contribute
 

+ 7 - 7
classes/class_audioeffectcompressor.rst

@@ -77,7 +77,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **attack_us** = ``20.0``
+:ref:`float<class_float>` **attack_us** = ``20.0`` :ref:`🔗<class_AudioEffectCompressor_property_attack_us>`
 
 .. rst-class:: classref-property-setget
 
@@ -94,7 +94,7 @@ Compressor's reaction time when the signal exceeds the threshold, in microsecond
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **gain** = ``0.0``
+:ref:`float<class_float>` **gain** = ``0.0`` :ref:`🔗<class_AudioEffectCompressor_property_gain>`
 
 .. rst-class:: classref-property-setget
 
@@ -111,7 +111,7 @@ Gain applied to the output signal.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **mix** = ``1.0``
+:ref:`float<class_float>` **mix** = ``1.0`` :ref:`🔗<class_AudioEffectCompressor_property_mix>`
 
 .. rst-class:: classref-property-setget
 
@@ -128,7 +128,7 @@ Balance between original signal and effect signal. Value can range from 0 (total
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **ratio** = ``4.0``
+:ref:`float<class_float>` **ratio** = ``4.0`` :ref:`🔗<class_AudioEffectCompressor_property_ratio>`
 
 .. rst-class:: classref-property-setget
 
@@ -145,7 +145,7 @@ Amount of compression applied to the audio once it passes the threshold level. T
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **release_ms** = ``250.0``
+:ref:`float<class_float>` **release_ms** = ``250.0`` :ref:`🔗<class_AudioEffectCompressor_property_release_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -162,7 +162,7 @@ Compressor's delay time to stop reducing the signal after the signal level falls
 
 .. rst-class:: classref-property
 
-:ref:`StringName<class_StringName>` **sidechain** = ``&""``
+:ref:`StringName<class_StringName>` **sidechain** = ``&""`` :ref:`🔗<class_AudioEffectCompressor_property_sidechain>`
 
 .. rst-class:: classref-property-setget
 
@@ -179,7 +179,7 @@ Reduce the sound level using another audio bus for threshold detection.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **threshold** = ``0.0``
+:ref:`float<class_float>` **threshold** = ``0.0`` :ref:`🔗<class_AudioEffectCompressor_property_threshold>`
 
 .. rst-class:: classref-property-setget
 

+ 13 - 13
classes/class_audioeffectdelay.rst

@@ -79,7 +79,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **dry** = ``1.0``
+:ref:`float<class_float>` **dry** = ``1.0`` :ref:`🔗<class_AudioEffectDelay_property_dry>`
 
 .. rst-class:: classref-property-setget
 
@@ -96,7 +96,7 @@ Output percent of original sound. At 0, only delayed sounds are output. Value ca
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **feedback_active** = ``false``
+:ref:`bool<class_bool>` **feedback_active** = ``false`` :ref:`🔗<class_AudioEffectDelay_property_feedback_active>`
 
 .. rst-class:: classref-property-setget
 
@@ -113,7 +113,7 @@ If ``true``, feedback is enabled.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **feedback_delay_ms** = ``340.0``
+:ref:`float<class_float>` **feedback_delay_ms** = ``340.0`` :ref:`🔗<class_AudioEffectDelay_property_feedback_delay_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -130,7 +130,7 @@ Feedback delay time in milliseconds.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **feedback_level_db** = ``-6.0``
+:ref:`float<class_float>` **feedback_level_db** = ``-6.0`` :ref:`🔗<class_AudioEffectDelay_property_feedback_level_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -147,7 +147,7 @@ Sound level for feedback.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **feedback_lowpass** = ``16000.0``
+:ref:`float<class_float>` **feedback_lowpass** = ``16000.0`` :ref:`🔗<class_AudioEffectDelay_property_feedback_lowpass>`
 
 .. rst-class:: classref-property-setget
 
@@ -164,7 +164,7 @@ Low-pass filter for feedback, in Hz. Frequencies below this value are filtered o
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **tap1_active** = ``true``
+:ref:`bool<class_bool>` **tap1_active** = ``true`` :ref:`🔗<class_AudioEffectDelay_property_tap1_active>`
 
 .. rst-class:: classref-property-setget
 
@@ -181,7 +181,7 @@ If ``true``, the first tap will be enabled.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **tap1_delay_ms** = ``250.0``
+:ref:`float<class_float>` **tap1_delay_ms** = ``250.0`` :ref:`🔗<class_AudioEffectDelay_property_tap1_delay_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -198,7 +198,7 @@ First tap delay time in milliseconds.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **tap1_level_db** = ``-6.0``
+:ref:`float<class_float>` **tap1_level_db** = ``-6.0`` :ref:`🔗<class_AudioEffectDelay_property_tap1_level_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -215,7 +215,7 @@ Sound level for the first tap.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **tap1_pan** = ``0.2``
+:ref:`float<class_float>` **tap1_pan** = ``0.2`` :ref:`🔗<class_AudioEffectDelay_property_tap1_pan>`
 
 .. rst-class:: classref-property-setget
 
@@ -232,7 +232,7 @@ Pan position for the first tap. Value can range from -1 (fully left) to 1 (fully
 
 .. rst-class:: classref-property
 
-:ref:`bool<class_bool>` **tap2_active** = ``true``
+:ref:`bool<class_bool>` **tap2_active** = ``true`` :ref:`🔗<class_AudioEffectDelay_property_tap2_active>`
 
 .. rst-class:: classref-property-setget
 
@@ -249,7 +249,7 @@ If ``true``, the second tap will be enabled.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **tap2_delay_ms** = ``500.0``
+:ref:`float<class_float>` **tap2_delay_ms** = ``500.0`` :ref:`🔗<class_AudioEffectDelay_property_tap2_delay_ms>`
 
 .. rst-class:: classref-property-setget
 
@@ -266,7 +266,7 @@ Second tap delay time in milliseconds.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **tap2_level_db** = ``-12.0``
+:ref:`float<class_float>` **tap2_level_db** = ``-12.0`` :ref:`🔗<class_AudioEffectDelay_property_tap2_level_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -283,7 +283,7 @@ Sound level for the second tap.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **tap2_pan** = ``-0.4``
+:ref:`float<class_float>` **tap2_pan** = ``-0.4`` :ref:`🔗<class_AudioEffectDelay_property_tap2_pan>`
 
 .. rst-class:: classref-property-setget
 

+ 6 - 6
classes/class_audioeffectdistortion.rst

@@ -65,7 +65,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **Mode**:
+enum **Mode**: :ref:`🔗<enum_AudioEffectDistortion_Mode>`
 
 .. _class_AudioEffectDistortion_constant_MODE_CLIP:
 
@@ -124,7 +124,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **drive** = ``0.0``
+:ref:`float<class_float>` **drive** = ``0.0`` :ref:`🔗<class_AudioEffectDistortion_property_drive>`
 
 .. rst-class:: classref-property-setget
 
@@ -141,7 +141,7 @@ Distortion power. Value can range from 0 to 1.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **keep_hf_hz** = ``16000.0``
+:ref:`float<class_float>` **keep_hf_hz** = ``16000.0`` :ref:`🔗<class_AudioEffectDistortion_property_keep_hf_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -158,7 +158,7 @@ High-pass filter, in Hz. Frequencies higher than this value will not be affected
 
 .. rst-class:: classref-property
 
-:ref:`Mode<enum_AudioEffectDistortion_Mode>` **mode** = ``0``
+:ref:`Mode<enum_AudioEffectDistortion_Mode>` **mode** = ``0`` :ref:`🔗<class_AudioEffectDistortion_property_mode>`
 
 .. rst-class:: classref-property-setget
 
@@ -175,7 +175,7 @@ Distortion type.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **post_gain** = ``0.0``
+:ref:`float<class_float>` **post_gain** = ``0.0`` :ref:`🔗<class_AudioEffectDistortion_property_post_gain>`
 
 .. rst-class:: classref-property-setget
 
@@ -192,7 +192,7 @@ Increases or decreases the volume after the effect, in decibels. Value can range
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **pre_gain** = ``0.0``
+:ref:`float<class_float>` **pre_gain** = ``0.0`` :ref:`🔗<class_AudioEffectDistortion_property_pre_gain>`
 
 .. rst-class:: classref-property-setget
 

+ 3 - 3
classes/class_audioeffecteq.rst

@@ -61,7 +61,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_band_count**\ (\ ) |const|
+:ref:`int<class_int>` **get_band_count**\ (\ ) |const| :ref:`🔗<class_AudioEffectEQ_method_get_band_count>`
 
 Returns the number of bands of the equalizer.
 
@@ -73,7 +73,7 @@ Returns the number of bands of the equalizer.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_band_gain_db**\ (\ band_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_band_gain_db**\ (\ band_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioEffectEQ_method_get_band_gain_db>`
 
 Returns the band's gain at the specified index, in dB.
 
@@ -85,7 +85,7 @@ Returns the band's gain at the specified index, in dB.
 
 .. rst-class:: classref-method
 
-|void| **set_band_gain_db**\ (\ band_idx\: :ref:`int<class_int>`, volume_db\: :ref:`float<class_float>`\ )
+|void| **set_band_gain_db**\ (\ band_idx\: :ref:`int<class_int>`, volume_db\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioEffectEQ_method_set_band_gain_db>`
 
 Sets band's gain at the specified index, in dB.
 

+ 10 - 28
classes/class_audioeffectfilter.rst

@@ -61,7 +61,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **FilterDB**:
+enum **FilterDB**: :ref:`🔗<enum_AudioEffectFilter_FilterDB>`
 
 .. _class_AudioEffectFilter_constant_FILTER_6DB:
 
@@ -69,11 +69,7 @@ enum **FilterDB**:
 
 :ref:`FilterDB<enum_AudioEffectFilter_FilterDB>` **FILTER_6DB** = ``0``
 
-.. container:: contribute
-
-	There is currently no description for this enum. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
-
-
+Cutting off at 6dB per octave.
 
 .. _class_AudioEffectFilter_constant_FILTER_12DB:
 
@@ -81,11 +77,7 @@ enum **FilterDB**:
 
 :ref:`FilterDB<enum_AudioEffectFilter_FilterDB>` **FILTER_12DB** = ``1``
 
-.. container:: contribute
-
-	There is currently no description for this enum. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
-
-
+Cutting off at 12dB per octave.
 
 .. _class_AudioEffectFilter_constant_FILTER_18DB:
 
@@ -93,11 +85,7 @@ enum **FilterDB**:
 
 :ref:`FilterDB<enum_AudioEffectFilter_FilterDB>` **FILTER_18DB** = ``2``
 
-.. container:: contribute
-
-	There is currently no description for this enum. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
-
-
+Cutting off at 18dB per octave.
 
 .. _class_AudioEffectFilter_constant_FILTER_24DB:
 
@@ -105,11 +93,7 @@ enum **FilterDB**:
 
 :ref:`FilterDB<enum_AudioEffectFilter_FilterDB>` **FILTER_24DB** = ``3``
 
-.. container:: contribute
-
-	There is currently no description for this enum. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
-
-
+Cutting off at 24dB per octave.
 
 .. rst-class:: classref-section-separator
 
@@ -124,7 +108,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **cutoff_hz** = ``2000.0``
+:ref:`float<class_float>` **cutoff_hz** = ``2000.0`` :ref:`🔗<class_AudioEffectFilter_property_cutoff_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -141,16 +125,14 @@ Threshold frequency for the filter, in Hz.
 
 .. rst-class:: classref-property
 
-:ref:`FilterDB<enum_AudioEffectFilter_FilterDB>` **db** = ``0``
+:ref:`FilterDB<enum_AudioEffectFilter_FilterDB>` **db** = ``0`` :ref:`🔗<class_AudioEffectFilter_property_db>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_db**\ (\ value\: :ref:`FilterDB<enum_AudioEffectFilter_FilterDB>`\ )
 - :ref:`FilterDB<enum_AudioEffectFilter_FilterDB>` **get_db**\ (\ )
 
-.. container:: contribute
-
-	There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
+Steepness of the cutoff curve in dB per octave, also known as the order of the filter. Higher orders have a more aggressive cutoff.
 
 .. rst-class:: classref-item-separator
 
@@ -160,7 +142,7 @@ Threshold frequency for the filter, in Hz.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **gain** = ``1.0``
+:ref:`float<class_float>` **gain** = ``1.0`` :ref:`🔗<class_AudioEffectFilter_property_gain>`
 
 .. rst-class:: classref-property-setget
 
@@ -177,7 +159,7 @@ Gain amount of the frequencies after the filter.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **resonance** = ``0.5``
+:ref:`float<class_float>` **resonance** = ``0.5`` :ref:`🔗<class_AudioEffectFilter_property_resonance>`
 
 .. rst-class:: classref-property-setget
 

+ 3 - 3
classes/class_audioeffecthardlimiter.rst

@@ -57,7 +57,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **ceiling_db** = ``-0.3``
+:ref:`float<class_float>` **ceiling_db** = ``-0.3`` :ref:`🔗<class_AudioEffectHardLimiter_property_ceiling_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -76,7 +76,7 @@ The default value of ``-0.3`` prevents potential inter-sample peaks (ISP) from c
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **pre_gain_db** = ``0.0``
+:ref:`float<class_float>` **pre_gain_db** = ``0.0`` :ref:`🔗<class_AudioEffectHardLimiter_property_pre_gain_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -93,7 +93,7 @@ Gain to apply before limiting, in decibels.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **release** = ``0.1``
+:ref:`float<class_float>` **release** = ``0.1`` :ref:`🔗<class_AudioEffectHardLimiter_property_release>`
 
 .. rst-class:: classref-property-setget
 

+ 5 - 5
classes/class_audioeffectinstance.rst

@@ -21,7 +21,7 @@ Manipulates the audio it receives for a given effect.
 Description
 -----------
 
-An audio effect instance manipulates the audio it receives for a given effect. This instance is automatically created by an :ref:`AudioEffect<class_AudioEffect>` when it is added to a bus, and should usually not be created directly. If necessary, it can be fetched at run-time with :ref:`AudioServer.get_bus_effect_instance<class_AudioServer_method_get_bus_effect_instance>`.
+An audio effect instance manipulates the audio it receives for a given effect. This instance is automatically created by an :ref:`AudioEffect<class_AudioEffect>` when it is added to a bus, and should usually not be created directly. If necessary, it can be fetched at run-time with :ref:`AudioServer.get_bus_effect_instance()<class_AudioServer_method_get_bus_effect_instance>`.
 
 .. rst-class:: classref-introduction-group
 
@@ -57,9 +57,9 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **_process**\ (\ src_buffer\: ``const void*``, dst_buffer\: ``AudioFrame*``, frame_count\: :ref:`int<class_int>`\ ) |virtual|
+|void| **_process**\ (\ src_buffer\: ``const void*``, dst_buffer\: ``AudioFrame*``, frame_count\: :ref:`int<class_int>`\ ) |virtual| :ref:`🔗<class_AudioEffectInstance_private_method__process>`
 
-Called by the :ref:`AudioServer<class_AudioServer>` to process this effect. When :ref:`_process_silence<class_AudioEffectInstance_private_method__process_silence>` is not overridden or it returns ``false``, this method is called only when the bus is active.
+Called by the :ref:`AudioServer<class_AudioServer>` to process this effect. When :ref:`_process_silence()<class_AudioEffectInstance_private_method__process_silence>` is not overridden or it returns ``false``, this method is called only when the bus is active.
 
 \ **Note:** It is not useful to override this method in GDScript or C#. Only GDExtension can take advantage of it.
 
@@ -71,11 +71,11 @@ Called by the :ref:`AudioServer<class_AudioServer>` to process this effect. When
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **_process_silence**\ (\ ) |virtual| |const|
+:ref:`bool<class_bool>` **_process_silence**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioEffectInstance_private_method__process_silence>`
 
 Override this method to customize the processing behavior of this effect instance.
 
-Should return ``true`` to force the :ref:`AudioServer<class_AudioServer>` to always call :ref:`_process<class_AudioEffectInstance_private_method__process>`, even if the bus has been muted or cannot otherwise be heard.
+Should return ``true`` to force the :ref:`AudioServer<class_AudioServer>` to always call :ref:`_process()<class_AudioEffectInstance_private_method__process>`, even if the bus has been muted or cannot otherwise be heard.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 4 - 4
classes/class_audioeffectlimiter.rst

@@ -63,7 +63,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **ceiling_db** = ``-0.1``
+:ref:`float<class_float>` **ceiling_db** = ``-0.1`` :ref:`🔗<class_AudioEffectLimiter_property_ceiling_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -80,7 +80,7 @@ The waveform's maximum allowed value, in decibels. Value can range from -20 to -
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **soft_clip_db** = ``2.0``
+:ref:`float<class_float>` **soft_clip_db** = ``2.0`` :ref:`🔗<class_AudioEffectLimiter_property_soft_clip_db>`
 
 .. rst-class:: classref-property-setget
 
@@ -97,7 +97,7 @@ Applies a gain to the limited waves, in decibels. Value can range from 0 to 6.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **soft_clip_ratio** = ``10.0``
+:ref:`float<class_float>` **soft_clip_ratio** = ``10.0`` :ref:`🔗<class_AudioEffectLimiter_property_soft_clip_ratio>`
 
 .. rst-class:: classref-property-setget
 
@@ -116,7 +116,7 @@ Applies a gain to the limited waves, in decibels. Value can range from 0 to 6.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **threshold_db** = ``0.0``
+:ref:`float<class_float>` **threshold_db** = ``0.0`` :ref:`🔗<class_AudioEffectLimiter_property_threshold_db>`
 
 .. rst-class:: classref-property-setget
 

+ 1 - 1
classes/class_audioeffectpanner.rst

@@ -53,7 +53,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **pan** = ``0.0``
+:ref:`float<class_float>` **pan** = ``0.0`` :ref:`🔗<class_AudioEffectPanner_property_pan>`
 
 .. rst-class:: classref-property-setget
 

+ 5 - 5
classes/class_audioeffectphaser.rst

@@ -63,7 +63,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **depth** = ``1.0``
+:ref:`float<class_float>` **depth** = ``1.0`` :ref:`🔗<class_AudioEffectPhaser_property_depth>`
 
 .. rst-class:: classref-property-setget
 
@@ -80,7 +80,7 @@ Governs how high the filter frequencies sweep. Low value will primarily affect b
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **feedback** = ``0.7``
+:ref:`float<class_float>` **feedback** = ``0.7`` :ref:`🔗<class_AudioEffectPhaser_property_feedback>`
 
 .. rst-class:: classref-property-setget
 
@@ -97,7 +97,7 @@ Output percent of modified sound. Value can range from 0.1 to 0.9.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **range_max_hz** = ``1600.0``
+:ref:`float<class_float>` **range_max_hz** = ``1600.0`` :ref:`🔗<class_AudioEffectPhaser_property_range_max_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -114,7 +114,7 @@ Determines the maximum frequency affected by the LFO modulations, in Hz. Value c
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **range_min_hz** = ``440.0``
+:ref:`float<class_float>` **range_min_hz** = ``440.0`` :ref:`🔗<class_AudioEffectPhaser_property_range_min_hz>`
 
 .. rst-class:: classref-property-setget
 
@@ -131,7 +131,7 @@ Determines the minimum frequency affected by the LFO modulations, in Hz. Value c
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **rate_hz** = ``0.5``
+:ref:`float<class_float>` **rate_hz** = ``0.5`` :ref:`🔗<class_AudioEffectPhaser_property_rate_hz>`
 
 .. rst-class:: classref-property-setget
 

+ 4 - 4
classes/class_audioeffectpitchshift.rst

@@ -59,7 +59,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **FFTSize**:
+enum **FFTSize**: :ref:`🔗<enum_AudioEffectPitchShift_FFTSize>`
 
 .. _class_AudioEffectPitchShift_constant_FFT_SIZE_256:
 
@@ -122,7 +122,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`FFTSize<enum_AudioEffectPitchShift_FFTSize>` **fft_size** = ``3``
+:ref:`FFTSize<enum_AudioEffectPitchShift_FFTSize>` **fft_size** = ``3`` :ref:`🔗<class_AudioEffectPitchShift_property_fft_size>`
 
 .. rst-class:: classref-property-setget
 
@@ -139,7 +139,7 @@ The size of the `Fast Fourier transform <https://en.wikipedia.org/wiki/Fast_Four
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **oversampling** = ``4``
+:ref:`int<class_int>` **oversampling** = ``4`` :ref:`🔗<class_AudioEffectPitchShift_property_oversampling>`
 
 .. rst-class:: classref-property-setget
 
@@ -156,7 +156,7 @@ The oversampling factor to use. Higher values result in better quality, but are
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **pitch_scale** = ``1.0``
+:ref:`float<class_float>` **pitch_scale** = ``1.0`` :ref:`🔗<class_AudioEffectPitchShift_property_pitch_scale>`
 
 .. rst-class:: classref-property-setget
 

+ 5 - 5
classes/class_audioeffectrecord.rst

@@ -34,7 +34,7 @@ Tutorials
 
 - :doc:`Recording with microphone <../tutorials/audio/recording_with_microphone>`
 
-- `Audio Mic Record Demo <https://godotengine.org/asset-library/asset/527>`__
+- `Audio Microphone Record Demo <https://godotengine.org/asset-library/asset/2760>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -77,7 +77,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`Format<enum_AudioStreamWAV_Format>` **format** = ``1``
+:ref:`Format<enum_AudioStreamWAV_Format>` **format** = ``1`` :ref:`🔗<class_AudioEffectRecord_property_format>`
 
 .. rst-class:: classref-property-setget
 
@@ -99,7 +99,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`AudioStreamWAV<class_AudioStreamWAV>` **get_recording**\ (\ ) |const|
+:ref:`AudioStreamWAV<class_AudioStreamWAV>` **get_recording**\ (\ ) |const| :ref:`🔗<class_AudioEffectRecord_method_get_recording>`
 
 Returns the recorded sample.
 
@@ -111,7 +111,7 @@ Returns the recorded sample.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_recording_active**\ (\ ) |const|
+:ref:`bool<class_bool>` **is_recording_active**\ (\ ) |const| :ref:`🔗<class_AudioEffectRecord_method_is_recording_active>`
 
 Returns whether the recording is active or not.
 
@@ -123,7 +123,7 @@ Returns whether the recording is active or not.
 
 .. rst-class:: classref-method
 
-|void| **set_recording_active**\ (\ record\: :ref:`bool<class_bool>`\ )
+|void| **set_recording_active**\ (\ record\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AudioEffectRecord_method_set_recording_active>`
 
 If ``true``, the sound will be recorded. Note that restarting the recording will remove the previously recorded sample.
 

+ 9 - 9
classes/class_audioeffectreverb.rst

@@ -28,7 +28,7 @@ Tutorials
 
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
-- `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
+- `Third Person Shooter (TPS) Demo <https://godotengine.org/asset-library/asset/2710>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -69,7 +69,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **damping** = ``0.5``
+:ref:`float<class_float>` **damping** = ``0.5`` :ref:`🔗<class_AudioEffectReverb_property_damping>`
 
 .. rst-class:: classref-property-setget
 
@@ -86,7 +86,7 @@ Defines how reflective the imaginary room's walls are. Value can range from 0 to
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **dry** = ``1.0``
+:ref:`float<class_float>` **dry** = ``1.0`` :ref:`🔗<class_AudioEffectReverb_property_dry>`
 
 .. rst-class:: classref-property-setget
 
@@ -103,7 +103,7 @@ Output percent of original sound. At 0, only modified sound is outputted. Value
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **hipass** = ``0.0``
+:ref:`float<class_float>` **hipass** = ``0.0`` :ref:`🔗<class_AudioEffectReverb_property_hipass>`
 
 .. rst-class:: classref-property-setget
 
@@ -120,7 +120,7 @@ High-pass filter passes signals with a frequency higher than a certain cutoff fr
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **predelay_feedback** = ``0.4``
+:ref:`float<class_float>` **predelay_feedback** = ``0.4`` :ref:`🔗<class_AudioEffectReverb_property_predelay_feedback>`
 
 .. rst-class:: classref-property-setget
 
@@ -137,7 +137,7 @@ Output percent of predelay. Value can range from 0 to 1.
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **predelay_msec** = ``150.0``
+:ref:`float<class_float>` **predelay_msec** = ``150.0`` :ref:`🔗<class_AudioEffectReverb_property_predelay_msec>`
 
 .. rst-class:: classref-property-setget
 
@@ -154,7 +154,7 @@ Time between the original signal and the early reflections of the reverb signal,
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **room_size** = ``0.8``
+:ref:`float<class_float>` **room_size** = ``0.8`` :ref:`🔗<class_AudioEffectReverb_property_room_size>`
 
 .. rst-class:: classref-property-setget
 
@@ -171,7 +171,7 @@ Dimensions of simulated room. Bigger means more echoes. Value can range from 0 t
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **spread** = ``1.0``
+:ref:`float<class_float>` **spread** = ``1.0`` :ref:`🔗<class_AudioEffectReverb_property_spread>`
 
 .. rst-class:: classref-property-setget
 
@@ -188,7 +188,7 @@ Widens or narrows the stereo image of the reverb tail. 1 means fully widens. Val
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **wet** = ``0.5``
+:ref:`float<class_float>` **wet** = ``0.5`` :ref:`🔗<class_AudioEffectReverb_property_wet>`
 
 .. rst-class:: classref-property-setget
 

+ 7 - 7
classes/class_audioeffectspectrumanalyzer.rst

@@ -21,6 +21,8 @@ Description
 
 This audio effect does not affect sound output, but can be used for real-time audio visualizations.
 
+This resource configures an :ref:`AudioEffectSpectrumAnalyzerInstance<class_AudioEffectSpectrumAnalyzerInstance>`, which performs the actual analysis at runtime. An instance can be obtained with :ref:`AudioServer.get_bus_effect_instance()<class_AudioServer_method_get_bus_effect_instance>`.
+
 See also :ref:`AudioStreamGenerator<class_AudioStreamGenerator>` for procedurally generating sounds.
 
 .. rst-class:: classref-introduction-group
@@ -28,9 +30,7 @@ See also :ref:`AudioStreamGenerator<class_AudioStreamGenerator>` for procedurall
 Tutorials
 ---------
 
-- `Audio Spectrum Demo <https://godotengine.org/asset-library/asset/528>`__
-
-- `Godot 3.2 will get new audio features <https://godotengine.org/article/godot-32-will-get-new-audio-features>`__
+- `Audio Spectrum Visualizer Demo <https://godotengine.org/asset-library/asset/2762>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -61,7 +61,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **FFTSize**:
+enum **FFTSize**: :ref:`🔗<enum_AudioEffectSpectrumAnalyzer_FFTSize>`
 
 .. _class_AudioEffectSpectrumAnalyzer_constant_FFT_SIZE_256:
 
@@ -124,7 +124,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **buffer_length** = ``2.0``
+:ref:`float<class_float>` **buffer_length** = ``2.0`` :ref:`🔗<class_AudioEffectSpectrumAnalyzer_property_buffer_length>`
 
 .. rst-class:: classref-property-setget
 
@@ -141,7 +141,7 @@ The length of the buffer to keep (in seconds). Higher values keep data around fo
 
 .. rst-class:: classref-property
 
-:ref:`FFTSize<enum_AudioEffectSpectrumAnalyzer_FFTSize>` **fft_size** = ``2``
+:ref:`FFTSize<enum_AudioEffectSpectrumAnalyzer_FFTSize>` **fft_size** = ``2`` :ref:`🔗<class_AudioEffectSpectrumAnalyzer_property_fft_size>`
 
 .. rst-class:: classref-property-setget
 
@@ -158,7 +158,7 @@ The size of the `Fast Fourier transform <https://en.wikipedia.org/wiki/Fast_Four
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **tap_back_pos** = ``0.01``
+:ref:`float<class_float>` **tap_back_pos** = ``0.01`` :ref:`🔗<class_AudioEffectSpectrumAnalyzer_property_tap_back_pos>`
 
 .. rst-class:: classref-property-setget
 

+ 22 - 8
classes/class_audioeffectspectrumanalyzerinstance.rst

@@ -12,9 +12,23 @@ AudioEffectSpectrumAnalyzerInstance
 
 **Inherits:** :ref:`AudioEffectInstance<class_AudioEffectInstance>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
 
-.. container:: contribute
+Queryable instance of an :ref:`AudioEffectSpectrumAnalyzer<class_AudioEffectSpectrumAnalyzer>`.
 
-	There is currently no description for this class. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
+.. rst-class:: classref-introduction-group
+
+Description
+-----------
+
+The runtime part of an :ref:`AudioEffectSpectrumAnalyzer<class_AudioEffectSpectrumAnalyzer>`, which can be used to query the magnitude of a frequency range on its host bus.
+
+An instance of this class can be obtained with :ref:`AudioServer.get_bus_effect_instance()<class_AudioServer_method_get_bus_effect_instance>`.
+
+.. rst-class:: classref-introduction-group
+
+Tutorials
+---------
+
+- `Audio Spectrum Visualizer Demo <https://godotengine.org/asset-library/asset/2762>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -41,7 +55,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **MagnitudeMode**:
+enum **MagnitudeMode**: :ref:`🔗<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>`
 
 .. _class_AudioEffectSpectrumAnalyzerInstance_constant_MAGNITUDE_AVERAGE:
 
@@ -49,7 +63,7 @@ enum **MagnitudeMode**:
 
 :ref:`MagnitudeMode<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>` **MAGNITUDE_AVERAGE** = ``0``
 
-Use the average value as magnitude.
+Use the average value across the frequency range as magnitude.
 
 .. _class_AudioEffectSpectrumAnalyzerInstance_constant_MAGNITUDE_MAX:
 
@@ -57,7 +71,7 @@ Use the average value as magnitude.
 
 :ref:`MagnitudeMode<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>` **MAGNITUDE_MAX** = ``1``
 
-Use the maximum value as magnitude.
+Use the maximum value of the frequency range as magnitude.
 
 .. rst-class:: classref-section-separator
 
@@ -72,11 +86,11 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-:ref:`Vector2<class_Vector2>` **get_magnitude_for_frequency_range**\ (\ from_hz\: :ref:`float<class_float>`, to_hz\: :ref:`float<class_float>`, mode\: :ref:`MagnitudeMode<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>` = 1\ ) |const|
+:ref:`Vector2<class_Vector2>` **get_magnitude_for_frequency_range**\ (\ from_hz\: :ref:`float<class_float>`, to_hz\: :ref:`float<class_float>`, mode\: :ref:`MagnitudeMode<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>` = 1\ ) |const| :ref:`🔗<class_AudioEffectSpectrumAnalyzerInstance_method_get_magnitude_for_frequency_range>`
 
-.. container:: contribute
+Returns the magnitude of the frequencies from ``from_hz`` to ``to_hz`` in linear energy as a Vector2. The ``x`` component of the return value represents the left stereo channel, and ``y`` represents the right channel.
 
-	There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
+\ ``mode`` determines how the frequency range will be processed. See :ref:`MagnitudeMode<enum_AudioEffectSpectrumAnalyzerInstance_MagnitudeMode>`.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 6 - 10
classes/class_audioeffectstereoenhance.rst

@@ -57,14 +57,14 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **pan_pullout** = ``1.0``
+:ref:`float<class_float>` **pan_pullout** = ``1.0`` :ref:`🔗<class_AudioEffectStereoEnhance_property_pan_pullout>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_pan_pullout**\ (\ value\: :ref:`float<class_float>`\ )
 - :ref:`float<class_float>` **get_pan_pullout**\ (\ )
 
-Values greater than 1.0 increase intensity of any panning on audio passing through this effect, whereas values less than 1.0 will decrease the panning intensity. A value of 0.0 will downmix audio to mono.
+Amplifies the difference between stereo channels, increasing or decreasing existing panning. A value of 0.0 will downmix stereo to mono. Does not affect a mono signal.
 
 .. rst-class:: classref-item-separator
 
@@ -74,16 +74,14 @@ Values greater than 1.0 increase intensity of any panning on audio passing throu
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **surround** = ``0.0``
+:ref:`float<class_float>` **surround** = ``0.0`` :ref:`🔗<class_AudioEffectStereoEnhance_property_surround>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_surround**\ (\ value\: :ref:`float<class_float>`\ )
 - :ref:`float<class_float>` **get_surround**\ (\ )
 
-.. container:: contribute
-
-	There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
+Widens sound stage through phase shifting in conjunction with :ref:`time_pullout_ms<class_AudioEffectStereoEnhance_property_time_pullout_ms>`. Just pans sound to the left channel if :ref:`time_pullout_ms<class_AudioEffectStereoEnhance_property_time_pullout_ms>` is 0.
 
 .. rst-class:: classref-item-separator
 
@@ -93,16 +91,14 @@ Values greater than 1.0 increase intensity of any panning on audio passing throu
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **time_pullout_ms** = ``0.0``
+:ref:`float<class_float>` **time_pullout_ms** = ``0.0`` :ref:`🔗<class_AudioEffectStereoEnhance_property_time_pullout_ms>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_time_pullout**\ (\ value\: :ref:`float<class_float>`\ )
 - :ref:`float<class_float>` **get_time_pullout**\ (\ )
 
-.. container:: contribute
-
-	There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
+Widens sound stage through phase shifting in conjunction with :ref:`surround<class_AudioEffectStereoEnhance_property_surround>`. Just delays the right channel if :ref:`surround<class_AudioEffectStereoEnhance_property_surround>` is 0.
 
 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
 .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`

+ 4 - 4
classes/class_audiolistener2d.rst

@@ -22,7 +22,7 @@ Overrides the location sounds are heard from.
 Description
 -----------
 
-Once added to the scene tree and enabled using :ref:`make_current<class_AudioListener2D_method_make_current>`, this node will override the location sounds are heard from. Only one **AudioListener2D** can be current. Using :ref:`make_current<class_AudioListener2D_method_make_current>` will disable the previous **AudioListener2D**.
+Once added to the scene tree and enabled using :ref:`make_current()<class_AudioListener2D_method_make_current>`, this node will override the location sounds are heard from. Only one **AudioListener2D** can be current. Using :ref:`make_current()<class_AudioListener2D_method_make_current>` will disable the previous **AudioListener2D**.
 
 If there is no active **AudioListener2D** in the current :ref:`Viewport<class_Viewport>`, center of the screen will be used as a hearing point for the audio. **AudioListener2D** needs to be inside :ref:`SceneTree<class_SceneTree>` to function.
 
@@ -55,7 +55,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **clear_current**\ (\ )
+|void| **clear_current**\ (\ ) :ref:`🔗<class_AudioListener2D_method_clear_current>`
 
 Disables the **AudioListener2D**. If it's not set as current, this method will have no effect.
 
@@ -67,7 +67,7 @@ Disables the **AudioListener2D**. If it's not set as current, this method will h
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_current**\ (\ ) |const|
+:ref:`bool<class_bool>` **is_current**\ (\ ) |const| :ref:`🔗<class_AudioListener2D_method_is_current>`
 
 Returns ``true`` if this **AudioListener2D** is currently active.
 
@@ -79,7 +79,7 @@ Returns ``true`` if this **AudioListener2D** is currently active.
 
 .. rst-class:: classref-method
 
-|void| **make_current**\ (\ )
+|void| **make_current**\ (\ ) :ref:`🔗<class_AudioListener2D_method_make_current>`
 
 Makes the **AudioListener2D** active, setting it as the hearing point for the sounds. If there is already another active **AudioListener2D**, it will be disabled.
 

+ 6 - 6
classes/class_audiolistener3d.rst

@@ -22,7 +22,7 @@ Overrides the location sounds are heard from.
 Description
 -----------
 
-Once added to the scene tree and enabled using :ref:`make_current<class_AudioListener3D_method_make_current>`, this node will override the location sounds are heard from. This can be used to listen from a location different from the :ref:`Camera3D<class_Camera3D>`.
+Once added to the scene tree and enabled using :ref:`make_current()<class_AudioListener3D_method_make_current>`, this node will override the location sounds are heard from. This can be used to listen from a location different from the :ref:`Camera3D<class_Camera3D>`.
 
 .. rst-class:: classref-reftable-group
 
@@ -55,7 +55,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **clear_current**\ (\ )
+|void| **clear_current**\ (\ ) :ref:`🔗<class_AudioListener3D_method_clear_current>`
 
 Disables the listener to use the current camera's listener instead.
 
@@ -67,7 +67,7 @@ Disables the listener to use the current camera's listener instead.
 
 .. rst-class:: classref-method
 
-:ref:`Transform3D<class_Transform3D>` **get_listener_transform**\ (\ ) |const|
+:ref:`Transform3D<class_Transform3D>` **get_listener_transform**\ (\ ) |const| :ref:`🔗<class_AudioListener3D_method_get_listener_transform>`
 
 Returns the listener's global orthonormalized :ref:`Transform3D<class_Transform3D>`.
 
@@ -79,9 +79,9 @@ Returns the listener's global orthonormalized :ref:`Transform3D<class_Transform3
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_current**\ (\ ) |const|
+:ref:`bool<class_bool>` **is_current**\ (\ ) |const| :ref:`🔗<class_AudioListener3D_method_is_current>`
 
-Returns ``true`` if the listener was made current using :ref:`make_current<class_AudioListener3D_method_make_current>`, ``false`` otherwise.
+Returns ``true`` if the listener was made current using :ref:`make_current()<class_AudioListener3D_method_make_current>`, ``false`` otherwise.
 
 \ **Note:** There may be more than one AudioListener3D marked as "current" in the scene tree, but only the one that was made current last will be used.
 
@@ -93,7 +93,7 @@ Returns ``true`` if the listener was made current using :ref:`make_current<class
 
 .. rst-class:: classref-method
 
-|void| **make_current**\ (\ )
+|void| **make_current**\ (\ ) :ref:`🔗<class_AudioListener3D_method_make_current>`
 
 Enables the listener. This will override the current camera's listener.
 

+ 33 - 0
classes/class_audiosample.rst

@@ -0,0 +1,33 @@
+:github_url: hide
+
+.. DO NOT EDIT THIS FILE!!!
+.. Generated automatically from Godot engine sources.
+.. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
+.. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/AudioSample.xml.
+
+.. _class_AudioSample:
+
+AudioSample
+===========
+
+**Experimental:** This class may be changed or removed in future versions.
+
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+Base class for audio samples.
+
+.. rst-class:: classref-introduction-group
+
+Description
+-----------
+
+Base class for audio samples.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
+.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
+.. |void| replace:: :abbr:`void (No return value.)`

+ 33 - 0
classes/class_audiosampleplayback.rst

@@ -0,0 +1,33 @@
+:github_url: hide
+
+.. DO NOT EDIT THIS FILE!!!
+.. Generated automatically from Godot engine sources.
+.. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
+.. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/AudioSamplePlayback.xml.
+
+.. _class_AudioSamplePlayback:
+
+AudioSamplePlayback
+===================
+
+**Experimental:** This class may be changed or removed in future versions.
+
+**Inherits:** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
+
+Meta class for playing back audio samples.
+
+.. rst-class:: classref-introduction-group
+
+Description
+-----------
+
+Meta class for playing back audio samples.
+
+.. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
+.. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
+.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
+.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
+.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
+.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
+.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
+.. |void| replace:: :abbr:`void (No return value.)`

+ 204 - 54
classes/class_audioserver.rst

@@ -28,11 +28,11 @@ Tutorials
 
 - :doc:`Audio buses <../tutorials/audio/audio_buses>`
 
-- `Audio Device Changer Demo <https://godotengine.org/asset-library/asset/525>`__
+- `Audio Device Changer Demo <https://godotengine.org/asset-library/asset/2758>`__
 
-- `Audio Mic Record Demo <https://godotengine.org/asset-library/asset/527>`__
+- `Audio Microphone Record Demo <https://godotengine.org/asset-library/asset/2760>`__
 
-- `Audio Spectrum Demo <https://godotengine.org/asset-library/asset/528>`__
+- `Audio Spectrum Visualizer Demo <https://godotengine.org/asset-library/asset/2762>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -87,8 +87,14 @@ Methods
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                             | :ref:`get_bus_volume_db<class_AudioServer_method_get_bus_volume_db>`\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|                                                                              |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                             | :ref:`get_bus_volume_linear<class_AudioServer_method_get_bus_volume_linear>`\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|                                                                      |
+   +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`String<class_String>`                           | :ref:`get_driver_name<class_AudioServer_method_get_driver_name>`\ (\ ) |const|                                                                                                                   |
+   +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`PackedStringArray<class_PackedStringArray>`     | :ref:`get_input_device_list<class_AudioServer_method_get_input_device_list>`\ (\ )                                                                                                               |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`float<class_float>`                             | :ref:`get_input_mix_rate<class_AudioServer_method_get_input_mix_rate>`\ (\ ) |const|                                                                                                             |
+   +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                             | :ref:`get_mix_rate<class_AudioServer_method_get_mix_rate>`\ (\ ) |const|                                                                                                                         |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`PackedStringArray<class_PackedStringArray>`     | :ref:`get_output_device_list<class_AudioServer_method_get_output_device_list>`\ (\ )                                                                                                             |
@@ -109,10 +115,14 @@ Methods
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                               | :ref:`is_bus_solo<class_AudioServer_method_is_bus_solo>`\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|                                                                                          |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                               | :ref:`is_stream_registered_as_sample<class_AudioServer_method_is_stream_registered_as_sample>`\ (\ stream\: :ref:`AudioStream<class_AudioStream>`\ )                                             |
+   +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                | :ref:`lock<class_AudioServer_method_lock>`\ (\ )                                                                                                                                                 |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                | :ref:`move_bus<class_AudioServer_method_move_bus>`\ (\ index\: :ref:`int<class_int>`, to_index\: :ref:`int<class_int>`\ )                                                                        |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`register_stream_as_sample<class_AudioServer_method_register_stream_as_sample>`\ (\ stream\: :ref:`AudioStream<class_AudioStream>`\ )                                                       |
+   +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                | :ref:`remove_bus<class_AudioServer_method_remove_bus>`\ (\ index\: :ref:`int<class_int>`\ )                                                                                                      |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                | :ref:`remove_bus_effect<class_AudioServer_method_remove_bus_effect>`\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`\ )                                                  |
@@ -133,6 +143,8 @@ Methods
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                | :ref:`set_bus_volume_db<class_AudioServer_method_set_bus_volume_db>`\ (\ bus_idx\: :ref:`int<class_int>`, volume_db\: :ref:`float<class_float>`\ )                                               |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+   | |void|                                                | :ref:`set_bus_volume_linear<class_AudioServer_method_set_bus_volume_linear>`\ (\ bus_idx\: :ref:`int<class_int>`, volume_linear\: :ref:`float<class_float>`\ )                                   |
+   +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                | :ref:`set_enable_tagging_used_audio_streams<class_AudioServer_method_set_enable_tagging_used_audio_streams>`\ (\ enable\: :ref:`bool<class_bool>`\ )                                             |
    +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | |void|                                                | :ref:`swap_bus_effects<class_AudioServer_method_swap_bus_effects>`\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`, by_effect_idx\: :ref:`int<class_int>`\ )             |
@@ -153,7 +165,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**bus_layout_changed**\ (\ )
+**bus_layout_changed**\ (\ ) :ref:`🔗<class_AudioServer_signal_bus_layout_changed>`
 
 Emitted when an audio bus is added, deleted, or moved.
 
@@ -165,7 +177,7 @@ Emitted when an audio bus is added, deleted, or moved.
 
 .. rst-class:: classref-signal
 
-**bus_renamed**\ (\ bus_index\: :ref:`int<class_int>`, old_name\: :ref:`StringName<class_StringName>`, new_name\: :ref:`StringName<class_StringName>`\ )
+**bus_renamed**\ (\ bus_index\: :ref:`int<class_int>`, old_name\: :ref:`StringName<class_StringName>`, new_name\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AudioServer_signal_bus_renamed>`
 
 Emitted when the audio bus at ``bus_index`` is renamed from ``old_name`` to ``new_name``.
 
@@ -182,7 +194,7 @@ Enumerations
 
 .. rst-class:: classref-enumeration
 
-enum **SpeakerMode**:
+enum **SpeakerMode**: :ref:`🔗<enum_AudioServer_SpeakerMode>`
 
 .. _class_AudioServer_constant_SPEAKER_MODE_STEREO:
 
@@ -216,6 +228,60 @@ A 5.1 channel surround setup was detected.
 
 A 7.1 channel surround setup was detected.
 
+.. rst-class:: classref-item-separator
+
+----
+
+.. _enum_AudioServer_PlaybackType:
+
+.. rst-class:: classref-enumeration
+
+enum **PlaybackType**: :ref:`🔗<enum_AudioServer_PlaybackType>`
+
+.. _class_AudioServer_constant_PLAYBACK_TYPE_DEFAULT:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`PlaybackType<enum_AudioServer_PlaybackType>` **PLAYBACK_TYPE_DEFAULT** = ``0``
+
+**Experimental:** This constant may be changed or removed in future versions.
+
+The playback will be considered of the type declared at :ref:`ProjectSettings.audio/general/default_playback_type<class_ProjectSettings_property_audio/general/default_playback_type>`.
+
+.. _class_AudioServer_constant_PLAYBACK_TYPE_STREAM:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`PlaybackType<enum_AudioServer_PlaybackType>` **PLAYBACK_TYPE_STREAM** = ``1``
+
+**Experimental:** This constant may be changed or removed in future versions.
+
+Force the playback to be considered as a stream.
+
+.. _class_AudioServer_constant_PLAYBACK_TYPE_SAMPLE:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`PlaybackType<enum_AudioServer_PlaybackType>` **PLAYBACK_TYPE_SAMPLE** = ``2``
+
+**Experimental:** This constant may be changed or removed in future versions.
+
+Force the playback to be considered as a sample. This can provide lower latency and more stable playback (with less risk of audio crackling), at the cost of having less flexibility.
+
+\ **Note:** Only currently supported on the web platform.
+
+\ **Note:** :ref:`AudioEffect<class_AudioEffect>`\ s are not supported when playback is considered as a sample.
+
+.. _class_AudioServer_constant_PLAYBACK_TYPE_MAX:
+
+.. rst-class:: classref-enumeration-constant
+
+:ref:`PlaybackType<enum_AudioServer_PlaybackType>` **PLAYBACK_TYPE_MAX** = ``3``
+
+**Experimental:** This constant may be changed or removed in future versions.
+
+Represents the size of the :ref:`PlaybackType<enum_AudioServer_PlaybackType>` enum.
+
 .. rst-class:: classref-section-separator
 
 ----
@@ -229,7 +295,7 @@ Property Descriptions
 
 .. rst-class:: classref-property
 
-:ref:`int<class_int>` **bus_count** = ``1``
+:ref:`int<class_int>` **bus_count** = ``1`` :ref:`🔗<class_AudioServer_property_bus_count>`
 
 .. rst-class:: classref-property-setget
 
@@ -246,14 +312,14 @@ Number of available audio buses.
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **input_device** = ``"Default"``
+:ref:`String<class_String>` **input_device** = ``"Default"`` :ref:`🔗<class_AudioServer_property_input_device>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_input_device**\ (\ value\: :ref:`String<class_String>`\ )
 - :ref:`String<class_String>` **get_input_device**\ (\ )
 
-Name of the current device for audio input (see :ref:`get_input_device_list<class_AudioServer_method_get_input_device_list>`). On systems with multiple audio inputs (such as analog, USB and HDMI audio), this can be used to select the audio input device. The value ``"Default"`` will record audio on the system-wide default audio input. If an invalid device name is set, the value will be reverted back to ``"Default"``.
+Name of the current device for audio input (see :ref:`get_input_device_list()<class_AudioServer_method_get_input_device_list>`). On systems with multiple audio inputs (such as analog, USB and HDMI audio), this can be used to select the audio input device. The value ``"Default"`` will record audio on the system-wide default audio input. If an invalid device name is set, the value will be reverted back to ``"Default"``.
 
 \ **Note:** :ref:`ProjectSettings.audio/driver/enable_input<class_ProjectSettings_property_audio/driver/enable_input>` must be ``true`` for audio input to work. See also that setting's description for caveats related to permissions and operating system privacy settings.
 
@@ -265,14 +331,14 @@ Name of the current device for audio input (see :ref:`get_input_device_list<clas
 
 .. rst-class:: classref-property
 
-:ref:`String<class_String>` **output_device** = ``"Default"``
+:ref:`String<class_String>` **output_device** = ``"Default"`` :ref:`🔗<class_AudioServer_property_output_device>`
 
 .. rst-class:: classref-property-setget
 
 - |void| **set_output_device**\ (\ value\: :ref:`String<class_String>`\ )
 - :ref:`String<class_String>` **get_output_device**\ (\ )
 
-Name of the current device for audio output (see :ref:`get_output_device_list<class_AudioServer_method_get_output_device_list>`). On systems with multiple audio outputs (such as analog, USB and HDMI audio), this can be used to select the audio output device. The value ``"Default"`` will play audio on the system-wide default audio output. If an invalid device name is set, the value will be reverted back to ``"Default"``.
+Name of the current device for audio output (see :ref:`get_output_device_list()<class_AudioServer_method_get_output_device_list>`). On systems with multiple audio outputs (such as analog, USB and HDMI audio), this can be used to select the audio output device. The value ``"Default"`` will play audio on the system-wide default audio output. If an invalid device name is set, the value will be reverted back to ``"Default"``.
 
 .. rst-class:: classref-item-separator
 
@@ -282,7 +348,7 @@ Name of the current device for audio output (see :ref:`get_output_device_list<cl
 
 .. rst-class:: classref-property
 
-:ref:`float<class_float>` **playback_speed_scale** = ``1.0``
+:ref:`float<class_float>` **playback_speed_scale** = ``1.0`` :ref:`🔗<class_AudioServer_property_playback_speed_scale>`
 
 .. rst-class:: classref-property-setget
 
@@ -304,7 +370,7 @@ Method Descriptions
 
 .. rst-class:: classref-method
 
-|void| **add_bus**\ (\ at_position\: :ref:`int<class_int>` = -1\ )
+|void| **add_bus**\ (\ at_position\: :ref:`int<class_int>` = -1\ ) :ref:`🔗<class_AudioServer_method_add_bus>`
 
 Adds a bus at ``at_position``.
 
@@ -316,7 +382,7 @@ Adds a bus at ``at_position``.
 
 .. rst-class:: classref-method
 
-|void| **add_bus_effect**\ (\ bus_idx\: :ref:`int<class_int>`, effect\: :ref:`AudioEffect<class_AudioEffect>`, at_position\: :ref:`int<class_int>` = -1\ )
+|void| **add_bus_effect**\ (\ bus_idx\: :ref:`int<class_int>`, effect\: :ref:`AudioEffect<class_AudioEffect>`, at_position\: :ref:`int<class_int>` = -1\ ) :ref:`🔗<class_AudioServer_method_add_bus_effect>`
 
 Adds an :ref:`AudioEffect<class_AudioEffect>` effect to the bus ``bus_idx`` at ``at_position``.
 
@@ -328,7 +394,7 @@ Adds an :ref:`AudioEffect<class_AudioEffect>` effect to the bus ``bus_idx`` at `
 
 .. rst-class:: classref-method
 
-:ref:`AudioBusLayout<class_AudioBusLayout>` **generate_bus_layout**\ (\ ) |const|
+:ref:`AudioBusLayout<class_AudioBusLayout>` **generate_bus_layout**\ (\ ) |const| :ref:`🔗<class_AudioServer_method_generate_bus_layout>`
 
 Generates an :ref:`AudioBusLayout<class_AudioBusLayout>` using the available buses and effects.
 
@@ -340,7 +406,7 @@ Generates an :ref:`AudioBusLayout<class_AudioBusLayout>` using the available bus
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_bus_channels**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`int<class_int>` **get_bus_channels**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_get_bus_channels>`
 
 Returns the number of channels of the bus at index ``bus_idx``.
 
@@ -352,7 +418,7 @@ Returns the number of channels of the bus at index ``bus_idx``.
 
 .. rst-class:: classref-method
 
-:ref:`AudioEffect<class_AudioEffect>` **get_bus_effect**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`\ )
+:ref:`AudioEffect<class_AudioEffect>` **get_bus_effect**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AudioServer_method_get_bus_effect>`
 
 Returns the :ref:`AudioEffect<class_AudioEffect>` at position ``effect_idx`` in bus ``bus_idx``.
 
@@ -364,7 +430,7 @@ Returns the :ref:`AudioEffect<class_AudioEffect>` at position ``effect_idx`` in
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_bus_effect_count**\ (\ bus_idx\: :ref:`int<class_int>`\ )
+:ref:`int<class_int>` **get_bus_effect_count**\ (\ bus_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AudioServer_method_get_bus_effect_count>`
 
 Returns the number of effects on the bus at ``bus_idx``.
 
@@ -376,7 +442,7 @@ Returns the number of effects on the bus at ``bus_idx``.
 
 .. rst-class:: classref-method
 
-:ref:`AudioEffectInstance<class_AudioEffectInstance>` **get_bus_effect_instance**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`, channel\: :ref:`int<class_int>` = 0\ )
+:ref:`AudioEffectInstance<class_AudioEffectInstance>` **get_bus_effect_instance**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`, channel\: :ref:`int<class_int>` = 0\ ) :ref:`🔗<class_AudioServer_method_get_bus_effect_instance>`
 
 Returns the :ref:`AudioEffectInstance<class_AudioEffectInstance>` assigned to the given bus and effect indices (and optionally channel).
 
@@ -388,7 +454,7 @@ Returns the :ref:`AudioEffectInstance<class_AudioEffectInstance>` assigned to th
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **get_bus_index**\ (\ bus_name\: :ref:`StringName<class_StringName>`\ ) |const|
+:ref:`int<class_int>` **get_bus_index**\ (\ bus_name\: :ref:`StringName<class_StringName>`\ ) |const| :ref:`🔗<class_AudioServer_method_get_bus_index>`
 
 Returns the index of the bus with the name ``bus_name``. Returns ``-1`` if no bus with the specified name exist.
 
@@ -400,7 +466,7 @@ Returns the index of the bus with the name ``bus_name``. Returns ``-1`` if no bu
 
 .. rst-class:: classref-method
 
-:ref:`String<class_String>` **get_bus_name**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`String<class_String>` **get_bus_name**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_get_bus_name>`
 
 Returns the name of the bus with the index ``bus_idx``.
 
@@ -412,7 +478,7 @@ Returns the name of the bus with the index ``bus_idx``.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_bus_peak_volume_left_db**\ (\ bus_idx\: :ref:`int<class_int>`, channel\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_bus_peak_volume_left_db**\ (\ bus_idx\: :ref:`int<class_int>`, channel\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_get_bus_peak_volume_left_db>`
 
 Returns the peak volume of the left speaker at bus index ``bus_idx`` and channel index ``channel``.
 
@@ -424,7 +490,7 @@ Returns the peak volume of the left speaker at bus index ``bus_idx`` and channel
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_bus_peak_volume_right_db**\ (\ bus_idx\: :ref:`int<class_int>`, channel\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_bus_peak_volume_right_db**\ (\ bus_idx\: :ref:`int<class_int>`, channel\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_get_bus_peak_volume_right_db>`
 
 Returns the peak volume of the right speaker at bus index ``bus_idx`` and channel index ``channel``.
 
@@ -436,7 +502,7 @@ Returns the peak volume of the right speaker at bus index ``bus_idx`` and channe
 
 .. rst-class:: classref-method
 
-:ref:`StringName<class_StringName>` **get_bus_send**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`StringName<class_StringName>` **get_bus_send**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_get_bus_send>`
 
 Returns the name of the bus that the bus at index ``bus_idx`` sends to.
 
@@ -448,7 +514,7 @@ Returns the name of the bus that the bus at index ``bus_idx`` sends to.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_bus_volume_db**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`float<class_float>` **get_bus_volume_db**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_get_bus_volume_db>`
 
 Returns the volume of the bus at index ``bus_idx`` in dB.
 
@@ -456,11 +522,37 @@ Returns the volume of the bus at index ``bus_idx`` in dB.
 
 ----
 
+.. _class_AudioServer_method_get_bus_volume_linear:
+
+.. rst-class:: classref-method
+
+:ref:`float<class_float>` **get_bus_volume_linear**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_get_bus_volume_linear>`
+
+Returns the volume of the bus at index ``bus_idx`` as a linear value.
+
+\ **Note:** The returned value is equivalent to the result of :ref:`@GlobalScope.db_to_linear()<class_@GlobalScope_method_db_to_linear>` on the result of :ref:`get_bus_volume_db()<class_AudioServer_method_get_bus_volume_db>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioServer_method_get_driver_name:
+
+.. rst-class:: classref-method
+
+:ref:`String<class_String>` **get_driver_name**\ (\ ) |const| :ref:`🔗<class_AudioServer_method_get_driver_name>`
+
+Returns the name of the current audio driver. The default usually depends on the operating system, but may be overridden via the ``--audio-driver`` :doc:`command line argument <../tutorials/editor/command_line_tutorial>`. ``--headless`` also automatically sets the audio driver to ``Dummy``. See also :ref:`ProjectSettings.audio/driver/driver<class_ProjectSettings_property_audio/driver/driver>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AudioServer_method_get_input_device_list:
 
 .. rst-class:: classref-method
 
-:ref:`PackedStringArray<class_PackedStringArray>` **get_input_device_list**\ (\ )
+:ref:`PackedStringArray<class_PackedStringArray>` **get_input_device_list**\ (\ ) :ref:`🔗<class_AudioServer_method_get_input_device_list>`
 
 Returns the names of all audio input devices detected on the system.
 
@@ -470,11 +562,23 @@ Returns the names of all audio input devices detected on the system.
 
 ----
 
+.. _class_AudioServer_method_get_input_mix_rate:
+
+.. rst-class:: classref-method
+
+:ref:`float<class_float>` **get_input_mix_rate**\ (\ ) |const| :ref:`🔗<class_AudioServer_method_get_input_mix_rate>`
+
+Returns the sample rate at the input of the **AudioServer**.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AudioServer_method_get_mix_rate:
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_mix_rate**\ (\ ) |const|
+:ref:`float<class_float>` **get_mix_rate**\ (\ ) |const| :ref:`🔗<class_AudioServer_method_get_mix_rate>`
 
 Returns the sample rate at the output of the **AudioServer**.
 
@@ -486,7 +590,7 @@ Returns the sample rate at the output of the **AudioServer**.
 
 .. rst-class:: classref-method
 
-:ref:`PackedStringArray<class_PackedStringArray>` **get_output_device_list**\ (\ )
+:ref:`PackedStringArray<class_PackedStringArray>` **get_output_device_list**\ (\ ) :ref:`🔗<class_AudioServer_method_get_output_device_list>`
 
 Returns the names of all audio output devices detected on the system.
 
@@ -498,11 +602,11 @@ Returns the names of all audio output devices detected on the system.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_output_latency**\ (\ ) |const|
+:ref:`float<class_float>` **get_output_latency**\ (\ ) |const| :ref:`🔗<class_AudioServer_method_get_output_latency>`
 
 Returns the audio driver's effective output latency. This is based on :ref:`ProjectSettings.audio/driver/output_latency<class_ProjectSettings_property_audio/driver/output_latency>`, but the exact returned value will differ depending on the operating system and audio driver.
 
-\ **Note:** This can be expensive; it is not recommended to call :ref:`get_output_latency<class_AudioServer_method_get_output_latency>` every frame.
+\ **Note:** This can be expensive; it is not recommended to call :ref:`get_output_latency()<class_AudioServer_method_get_output_latency>` every frame.
 
 .. rst-class:: classref-item-separator
 
@@ -512,7 +616,7 @@ Returns the audio driver's effective output latency. This is based on :ref:`Proj
 
 .. rst-class:: classref-method
 
-:ref:`SpeakerMode<enum_AudioServer_SpeakerMode>` **get_speaker_mode**\ (\ ) |const|
+:ref:`SpeakerMode<enum_AudioServer_SpeakerMode>` **get_speaker_mode**\ (\ ) |const| :ref:`🔗<class_AudioServer_method_get_speaker_mode>`
 
 Returns the speaker configuration.
 
@@ -524,7 +628,7 @@ Returns the speaker configuration.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_time_since_last_mix**\ (\ ) |const|
+:ref:`float<class_float>` **get_time_since_last_mix**\ (\ ) |const| :ref:`🔗<class_AudioServer_method_get_time_since_last_mix>`
 
 Returns the relative time since the last mix occurred.
 
@@ -536,7 +640,7 @@ Returns the relative time since the last mix occurred.
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_time_to_next_mix**\ (\ ) |const|
+:ref:`float<class_float>` **get_time_to_next_mix**\ (\ ) |const| :ref:`🔗<class_AudioServer_method_get_time_to_next_mix>`
 
 Returns the relative time until the next mix occurs.
 
@@ -548,7 +652,7 @@ Returns the relative time until the next mix occurs.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_bus_bypassing_effects**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **is_bus_bypassing_effects**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_is_bus_bypassing_effects>`
 
 If ``true``, the bus at index ``bus_idx`` is bypassing effects.
 
@@ -560,7 +664,7 @@ If ``true``, the bus at index ``bus_idx`` is bypassing effects.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_bus_effect_enabled**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **is_bus_effect_enabled**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_is_bus_effect_enabled>`
 
 If ``true``, the effect at index ``effect_idx`` on the bus at index ``bus_idx`` is enabled.
 
@@ -572,7 +676,7 @@ If ``true``, the effect at index ``effect_idx`` on the bus at index ``bus_idx``
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_bus_mute**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **is_bus_mute**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_is_bus_mute>`
 
 If ``true``, the bus at index ``bus_idx`` is muted.
 
@@ -584,7 +688,7 @@ If ``true``, the bus at index ``bus_idx`` is muted.
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_bus_solo**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const|
+:ref:`bool<class_bool>` **is_bus_solo**\ (\ bus_idx\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_AudioServer_method_is_bus_solo>`
 
 If ``true``, the bus at index ``bus_idx`` is in solo mode.
 
@@ -592,11 +696,27 @@ If ``true``, the bus at index ``bus_idx`` is in solo mode.
 
 ----
 
+.. _class_AudioServer_method_is_stream_registered_as_sample:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **is_stream_registered_as_sample**\ (\ stream\: :ref:`AudioStream<class_AudioStream>`\ ) :ref:`🔗<class_AudioServer_method_is_stream_registered_as_sample>`
+
+**Experimental:** This method may be changed or removed in future versions.
+
+If ``true``, the stream is registered as a sample. The engine will not have to register it before playing the sample.
+
+If ``false``, the stream will have to be registered before playing it. To prevent lag spikes, register the stream as sample with :ref:`register_stream_as_sample()<class_AudioServer_method_register_stream_as_sample>`.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AudioServer_method_lock:
 
 .. rst-class:: classref-method
 
-|void| **lock**\ (\ )
+|void| **lock**\ (\ ) :ref:`🔗<class_AudioServer_method_lock>`
 
 Locks the audio driver's main loop.
 
@@ -610,7 +730,7 @@ Locks the audio driver's main loop.
 
 .. rst-class:: classref-method
 
-|void| **move_bus**\ (\ index\: :ref:`int<class_int>`, to_index\: :ref:`int<class_int>`\ )
+|void| **move_bus**\ (\ index\: :ref:`int<class_int>`, to_index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AudioServer_method_move_bus>`
 
 Moves the bus from index ``index`` to index ``to_index``.
 
@@ -618,11 +738,27 @@ Moves the bus from index ``index`` to index ``to_index``.
 
 ----
 
+.. _class_AudioServer_method_register_stream_as_sample:
+
+.. rst-class:: classref-method
+
+|void| **register_stream_as_sample**\ (\ stream\: :ref:`AudioStream<class_AudioStream>`\ ) :ref:`🔗<class_AudioServer_method_register_stream_as_sample>`
+
+**Experimental:** This method may be changed or removed in future versions.
+
+Forces the registration of a stream as a sample.
+
+\ **Note:** Lag spikes may occur when calling this method, especially on single-threaded builds. It is suggested to call this method while loading assets, where the lag spike could be masked, instead of registering the sample right before it needs to be played.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AudioServer_method_remove_bus:
 
 .. rst-class:: classref-method
 
-|void| **remove_bus**\ (\ index\: :ref:`int<class_int>`\ )
+|void| **remove_bus**\ (\ index\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AudioServer_method_remove_bus>`
 
 Removes the bus at index ``index``.
 
@@ -634,7 +770,7 @@ Removes the bus at index ``index``.
 
 .. rst-class:: classref-method
 
-|void| **remove_bus_effect**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`\ )
+|void| **remove_bus_effect**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AudioServer_method_remove_bus_effect>`
 
 Removes the effect at index ``effect_idx`` from the bus at index ``bus_idx``.
 
@@ -646,7 +782,7 @@ Removes the effect at index ``effect_idx`` from the bus at index ``bus_idx``.
 
 .. rst-class:: classref-method
 
-|void| **set_bus_bypass_effects**\ (\ bus_idx\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ )
+|void| **set_bus_bypass_effects**\ (\ bus_idx\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_bypass_effects>`
 
 If ``true``, the bus at index ``bus_idx`` is bypassing effects.
 
@@ -658,7 +794,7 @@ If ``true``, the bus at index ``bus_idx`` is bypassing effects.
 
 .. rst-class:: classref-method
 
-|void| **set_bus_effect_enabled**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`, enabled\: :ref:`bool<class_bool>`\ )
+|void| **set_bus_effect_enabled**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`, enabled\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_effect_enabled>`
 
 If ``true``, the effect at index ``effect_idx`` on the bus at index ``bus_idx`` is enabled.
 
@@ -670,7 +806,7 @@ If ``true``, the effect at index ``effect_idx`` on the bus at index ``bus_idx``
 
 .. rst-class:: classref-method
 
-|void| **set_bus_layout**\ (\ bus_layout\: :ref:`AudioBusLayout<class_AudioBusLayout>`\ )
+|void| **set_bus_layout**\ (\ bus_layout\: :ref:`AudioBusLayout<class_AudioBusLayout>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_layout>`
 
 Overwrites the currently used :ref:`AudioBusLayout<class_AudioBusLayout>`.
 
@@ -682,7 +818,7 @@ Overwrites the currently used :ref:`AudioBusLayout<class_AudioBusLayout>`.
 
 .. rst-class:: classref-method
 
-|void| **set_bus_mute**\ (\ bus_idx\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ )
+|void| **set_bus_mute**\ (\ bus_idx\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_mute>`
 
 If ``true``, the bus at index ``bus_idx`` is muted.
 
@@ -694,7 +830,7 @@ If ``true``, the bus at index ``bus_idx`` is muted.
 
 .. rst-class:: classref-method
 
-|void| **set_bus_name**\ (\ bus_idx\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ )
+|void| **set_bus_name**\ (\ bus_idx\: :ref:`int<class_int>`, name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_name>`
 
 Sets the name of the bus at index ``bus_idx`` to ``name``.
 
@@ -706,7 +842,7 @@ Sets the name of the bus at index ``bus_idx`` to ``name``.
 
 .. rst-class:: classref-method
 
-|void| **set_bus_send**\ (\ bus_idx\: :ref:`int<class_int>`, send\: :ref:`StringName<class_StringName>`\ )
+|void| **set_bus_send**\ (\ bus_idx\: :ref:`int<class_int>`, send\: :ref:`StringName<class_StringName>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_send>`
 
 Connects the output of the bus at ``bus_idx`` to the bus named ``send``.
 
@@ -718,7 +854,7 @@ Connects the output of the bus at ``bus_idx`` to the bus named ``send``.
 
 .. rst-class:: classref-method
 
-|void| **set_bus_solo**\ (\ bus_idx\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ )
+|void| **set_bus_solo**\ (\ bus_idx\: :ref:`int<class_int>`, enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_solo>`
 
 If ``true``, the bus at index ``bus_idx`` is in solo mode.
 
@@ -730,9 +866,23 @@ If ``true``, the bus at index ``bus_idx`` is in solo mode.
 
 .. rst-class:: classref-method
 
-|void| **set_bus_volume_db**\ (\ bus_idx\: :ref:`int<class_int>`, volume_db\: :ref:`float<class_float>`\ )
+|void| **set_bus_volume_db**\ (\ bus_idx\: :ref:`int<class_int>`, volume_db\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_volume_db>`
+
+Sets the volume in decibels of the bus at index ``bus_idx`` to ``volume_db``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioServer_method_set_bus_volume_linear:
+
+.. rst-class:: classref-method
+
+|void| **set_bus_volume_linear**\ (\ bus_idx\: :ref:`int<class_int>`, volume_linear\: :ref:`float<class_float>`\ ) :ref:`🔗<class_AudioServer_method_set_bus_volume_linear>`
+
+Sets the volume as a linear value of the bus at index ``bus_idx`` to ``volume_linear``.
 
-Sets the volume of the bus at index ``bus_idx`` to ``volume_db``.
+\ **Note:** Using this method is equivalent to calling :ref:`set_bus_volume_db()<class_AudioServer_method_set_bus_volume_db>` with the result of :ref:`@GlobalScope.linear_to_db()<class_@GlobalScope_method_linear_to_db>` on a value.
 
 .. rst-class:: classref-item-separator
 
@@ -742,9 +892,9 @@ Sets the volume of the bus at index ``bus_idx`` to ``volume_db``.
 
 .. rst-class:: classref-method
 
-|void| **set_enable_tagging_used_audio_streams**\ (\ enable\: :ref:`bool<class_bool>`\ )
+|void| **set_enable_tagging_used_audio_streams**\ (\ enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_AudioServer_method_set_enable_tagging_used_audio_streams>`
 
-If set to ``true``, all instances of :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` will call :ref:`AudioStreamPlayback._tag_used_streams<class_AudioStreamPlayback_private_method__tag_used_streams>` every mix step.
+If set to ``true``, all instances of :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` will call :ref:`AudioStreamPlayback._tag_used_streams()<class_AudioStreamPlayback_private_method__tag_used_streams>` every mix step.
 
 \ **Note:** This is enabled by default in the editor, as it is used by editor plugins for the audio stream previews.
 
@@ -756,7 +906,7 @@ If set to ``true``, all instances of :ref:`AudioStreamPlayback<class_AudioStream
 
 .. rst-class:: classref-method
 
-|void| **swap_bus_effects**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`, by_effect_idx\: :ref:`int<class_int>`\ )
+|void| **swap_bus_effects**\ (\ bus_idx\: :ref:`int<class_int>`, effect_idx\: :ref:`int<class_int>`, by_effect_idx\: :ref:`int<class_int>`\ ) :ref:`🔗<class_AudioServer_method_swap_bus_effects>`
 
 Swaps the position of two effects in bus ``bus_idx``.
 
@@ -768,7 +918,7 @@ Swaps the position of two effects in bus ``bus_idx``.
 
 .. rst-class:: classref-method
 
-|void| **unlock**\ (\ )
+|void| **unlock**\ (\ ) :ref:`🔗<class_AudioServer_method_unlock>`
 
 Unlocks the audio driver's main loop. (After locking it, you should always unlock it.)
 

+ 93 - 19
classes/class_audiostream.rst

@@ -30,11 +30,11 @@ Tutorials
 
 - :doc:`Audio streams <../tutorials/audio/audio_streams>`
 
-- `Audio Generator Demo <https://godotengine.org/asset-library/asset/526>`__
+- `Audio Generator Demo <https://godotengine.org/asset-library/asset/2759>`__
 
-- `Audio Mic Record Demo <https://godotengine.org/asset-library/asset/527>`__
+- `Audio Microphone Record Demo <https://godotengine.org/asset-library/asset/2760>`__
 
-- `Audio Spectrum Demo <https://godotengine.org/asset-library/asset/528>`__
+- `Audio Spectrum Visualizer Demo <https://godotengine.org/asset-library/asset/2762>`__
 
 .. rst-class:: classref-reftable-group
 
@@ -44,6 +44,8 @@ Methods
 .. table::
    :widths: auto
 
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
+   | :ref:`int<class_int>`                                            | :ref:`_get_bar_beats<class_AudioStream_private_method__get_bar_beats>`\ (\ ) |virtual| |const|               |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
    | :ref:`int<class_int>`                                            | :ref:`_get_beat_count<class_AudioStream_private_method__get_beat_count>`\ (\ ) |virtual| |const|             |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
@@ -55,14 +57,22 @@ Methods
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
    | :ref:`String<class_String>`                                      | :ref:`_get_stream_name<class_AudioStream_private_method__get_stream_name>`\ (\ ) |virtual| |const|           |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`_has_loop<class_AudioStream_private_method__has_loop>`\ (\ ) |virtual| |const|                         |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
    | :ref:`AudioStreamPlayback<class_AudioStreamPlayback>`            | :ref:`_instantiate_playback<class_AudioStream_private_method__instantiate_playback>`\ (\ ) |virtual| |const| |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`_is_monophonic<class_AudioStream_private_method__is_monophonic>`\ (\ ) |virtual| |const|               |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`can_be_sampled<class_AudioStream_method_can_be_sampled>`\ (\ ) |const|                                 |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
+   | :ref:`AudioSample<class_AudioSample>`                            | :ref:`generate_sample<class_AudioStream_method_generate_sample>`\ (\ ) |const|                               |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
    | :ref:`float<class_float>`                                        | :ref:`get_length<class_AudioStream_method_get_length>`\ (\ ) |const|                                         |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
    | :ref:`AudioStreamPlayback<class_AudioStreamPlayback>`            | :ref:`instantiate_playback<class_AudioStream_method_instantiate_playback>`\ (\ )                             |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
+   | :ref:`bool<class_bool>`                                          | :ref:`is_meta_stream<class_AudioStream_method_is_meta_stream>`\ (\ ) |const|                                 |
+   +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
    | :ref:`bool<class_bool>`                                          | :ref:`is_monophonic<class_AudioStream_method_is_monophonic>`\ (\ ) |const|                                   |
    +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
 
@@ -79,7 +89,7 @@ Signals
 
 .. rst-class:: classref-signal
 
-**parameter_list_changed**\ (\ )
+**parameter_list_changed**\ (\ ) :ref:`🔗<class_AudioStream_signal_parameter_list_changed>`
 
 Signal to be emitted to notify when the parameter list changed.
 
@@ -92,11 +102,23 @@ Signal to be emitted to notify when the parameter list changed.
 Method Descriptions
 -------------------
 
+.. _class_AudioStream_private_method__get_bar_beats:
+
+.. rst-class:: classref-method
+
+:ref:`int<class_int>` **_get_bar_beats**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStream_private_method__get_bar_beats>`
+
+Override this method to return the bar beats of this stream.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AudioStream_private_method__get_beat_count:
 
 .. rst-class:: classref-method
 
-:ref:`int<class_int>` **_get_beat_count**\ (\ ) |virtual| |const|
+:ref:`int<class_int>` **_get_beat_count**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStream_private_method__get_beat_count>`
 
 Overridable method. Should return the total number of beats of this audio stream. Used by the engine to determine the position of every beat.
 
@@ -110,7 +132,7 @@ Ideally, the returned value should be based off the stream's sample rate (:ref:`
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **_get_bpm**\ (\ ) |virtual| |const|
+:ref:`float<class_float>` **_get_bpm**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStream_private_method__get_bpm>`
 
 Overridable method. Should return the tempo of this audio stream, in beats per minute (BPM). Used by the engine to determine the position of every beat.
 
@@ -124,9 +146,9 @@ Ideally, the returned value should be based off the stream's sample rate (:ref:`
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **_get_length**\ (\ ) |virtual| |const|
+:ref:`float<class_float>` **_get_length**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStream_private_method__get_length>`
 
-Override this method to customize the returned value of :ref:`get_length<class_AudioStream_method_get_length>`. Should return the length of this audio stream, in seconds.
+Override this method to customize the returned value of :ref:`get_length()<class_AudioStream_method_get_length>`. Should return the length of this audio stream, in seconds.
 
 .. rst-class:: classref-item-separator
 
@@ -136,9 +158,9 @@ Override this method to customize the returned value of :ref:`get_length<class_A
 
 .. rst-class:: classref-method
 
-:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **_get_parameter_list**\ (\ ) |virtual| |const|
+:ref:`Array<class_Array>`\[:ref:`Dictionary<class_Dictionary>`\] **_get_parameter_list**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStream_private_method__get_parameter_list>`
 
-Return the controllable parameters of this stream. This array contains dictionaries with a property info description format (see :ref:`Object.get_property_list<class_Object_method_get_property_list>`). Additionally, the default value for this parameter must be added tho each dictionary in "default_value" field.
+Return the controllable parameters of this stream. This array contains dictionaries with a property info description format (see :ref:`Object.get_property_list()<class_Object_method_get_property_list>`). Additionally, the default value for this parameter must be added tho each dictionary in "default_value" field.
 
 .. rst-class:: classref-item-separator
 
@@ -148,7 +170,7 @@ Return the controllable parameters of this stream. This array contains dictionar
 
 .. rst-class:: classref-method
 
-:ref:`String<class_String>` **_get_stream_name**\ (\ ) |virtual| |const|
+:ref:`String<class_String>` **_get_stream_name**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStream_private_method__get_stream_name>`
 
 Override this method to customize the name assigned to this audio stream. Unused by the engine.
 
@@ -156,13 +178,25 @@ Override this method to customize the name assigned to this audio stream. Unused
 
 ----
 
+.. _class_AudioStream_private_method__has_loop:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **_has_loop**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStream_private_method__has_loop>`
+
+Override this method to return ``true`` if this stream has a loop.
+
+.. rst-class:: classref-item-separator
+
+----
+
 .. _class_AudioStream_private_method__instantiate_playback:
 
 .. rst-class:: classref-method
 
-:ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **_instantiate_playback**\ (\ ) |virtual| |const|
+:ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **_instantiate_playback**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStream_private_method__instantiate_playback>`
 
-Override this method to customize the returned value of :ref:`instantiate_playback<class_AudioStream_method_instantiate_playback>`. Should returned a new :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` created when the stream is played (such as by an :ref:`AudioStreamPlayer<class_AudioStreamPlayer>`)..
+Override this method to customize the returned value of :ref:`instantiate_playback()<class_AudioStream_method_instantiate_playback>`. Should return a new :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` created when the stream is played (such as by an :ref:`AudioStreamPlayer<class_AudioStreamPlayer>`).
 
 .. rst-class:: classref-item-separator
 
@@ -172,9 +206,37 @@ Override this method to customize the returned value of :ref:`instantiate_playba
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **_is_monophonic**\ (\ ) |virtual| |const|
+:ref:`bool<class_bool>` **_is_monophonic**\ (\ ) |virtual| |const| :ref:`🔗<class_AudioStream_private_method__is_monophonic>`
+
+Override this method to customize the returned value of :ref:`is_monophonic()<class_AudioStream_method_is_monophonic>`. Should return ``true`` if this audio stream only supports one channel.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioStream_method_can_be_sampled:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **can_be_sampled**\ (\ ) |const| :ref:`🔗<class_AudioStream_method_can_be_sampled>`
+
+**Experimental:** This method may be changed or removed in future versions.
+
+Returns if the current **AudioStream** can be used as a sample. Only static streams can be sampled.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioStream_method_generate_sample:
+
+.. rst-class:: classref-method
+
+:ref:`AudioSample<class_AudioSample>` **generate_sample**\ (\ ) |const| :ref:`🔗<class_AudioStream_method_generate_sample>`
+
+**Experimental:** This method may be changed or removed in future versions.
 
-Override this method to customize the returned value of :ref:`is_monophonic<class_AudioStream_method_is_monophonic>`. Should return ``true`` if this audio stream only supports one channel.
+Generates an :ref:`AudioSample<class_AudioSample>` based on the current stream.
 
 .. rst-class:: classref-item-separator
 
@@ -184,7 +246,7 @@ Override this method to customize the returned value of :ref:`is_monophonic<clas
 
 .. rst-class:: classref-method
 
-:ref:`float<class_float>` **get_length**\ (\ ) |const|
+:ref:`float<class_float>` **get_length**\ (\ ) |const| :ref:`🔗<class_AudioStream_method_get_length>`
 
 Returns the length of the audio stream in seconds.
 
@@ -196,9 +258,21 @@ Returns the length of the audio stream in seconds.
 
 .. rst-class:: classref-method
 
-:ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **instantiate_playback**\ (\ )
+:ref:`AudioStreamPlayback<class_AudioStreamPlayback>` **instantiate_playback**\ (\ ) :ref:`🔗<class_AudioStream_method_instantiate_playback>`
+
+Returns a newly created :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` intended to play this audio stream. Useful for when you want to extend :ref:`_instantiate_playback()<class_AudioStream_private_method__instantiate_playback>` but call :ref:`instantiate_playback()<class_AudioStream_method_instantiate_playback>` from an internally held AudioStream subresource. An example of this can be found in the source code for ``AudioStreamRandomPitch::instantiate_playback``.
+
+.. rst-class:: classref-item-separator
+
+----
+
+.. _class_AudioStream_method_is_meta_stream:
+
+.. rst-class:: classref-method
+
+:ref:`bool<class_bool>` **is_meta_stream**\ (\ ) |const| :ref:`🔗<class_AudioStream_method_is_meta_stream>`
 
-Returns a newly created :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` intended to play this audio stream. Useful for when you want to extend :ref:`_instantiate_playback<class_AudioStream_private_method__instantiate_playback>` but call :ref:`instantiate_playback<class_AudioStream_method_instantiate_playback>` from an internally held AudioStream subresource. An example of this can be found in the source code for ``AudioStreamRandomPitch::instantiate_playback``.
+Returns ``true`` if the stream is a collection of other streams, ``false`` otherwise.
 
 .. rst-class:: classref-item-separator
 
@@ -208,7 +282,7 @@ Returns a newly created :ref:`AudioStreamPlayback<class_AudioStreamPlayback>` in
 
 .. rst-class:: classref-method
 
-:ref:`bool<class_bool>` **is_monophonic**\ (\ ) |const|
+:ref:`bool<class_bool>` **is_monophonic**\ (\ ) |const| :ref:`🔗<class_AudioStream_method_is_monophonic>`
 
 Returns ``true`` if this audio stream only supports one channel (*monophony*), or ``false`` if the audio stream supports two or more channels (*polyphony*).
 

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است