Compare commits
201 Commits
3.6.2-stab
...
3.1.1-stab
| Author | SHA1 | Date | |
|---|---|---|---|
| 66baa3b633 | |||
| e4816a8b1c | |||
| 5b6ad923f0 | |||
| 1c77481d3e | |||
| a24899ee25 | |||
| f7d5bee636 | |||
| 23cf9f3b6f | |||
| 348270df38 | |||
| a485d862f1 | |||
| fcbe50befa | |||
| 08113feb5f | |||
| 4764e17970 | |||
| 39f1a110a1 | |||
| cab4921477 | |||
| 4aa7760c74 | |||
| 4fefc0896d | |||
| d8cae6e7f6 | |||
| a7f0bfb7db | |||
| 5cc03473e0 | |||
| 6fac922bff | |||
| 0064d26517 | |||
| c76c33fb50 | |||
| 5e02d6d98a | |||
| 71753edeae | |||
| ff3987598e | |||
| 49df4b7a7a | |||
| 6ab01490f5 | |||
| 340bf6e80c | |||
| 9535a6079e | |||
| bb8f015595 | |||
| 94f6c3a810 | |||
| 42fa261563 | |||
| e0fe795433 | |||
| a1ad05df86 | |||
| ffc47d6fbe | |||
| 9b65bd18bc | |||
| 4c10a322d1 | |||
| 7851d828a2 | |||
| 17cb8878c7 | |||
| 24ac1439e8 | |||
| 1353c98279 | |||
| fce901ce40 | |||
| a758b329d0 | |||
| c7e5b371be | |||
| edba82b940 | |||
| 9e2cf9ef0b | |||
| 904bfa6a72 | |||
| aa78461ebd | |||
| ab8ccee1da | |||
| 42514bfd80 | |||
| 667dc0b336 | |||
| 40c2a5ff57 | |||
| d0bebee560 | |||
| d9aa43e793 | |||
| a329f6fa0b | |||
| 4f3fc559bc | |||
| 759c1fb0b8 | |||
| ae6d45b0f2 | |||
| 2213a21ab3 | |||
| b887d3f8e8 | |||
| c33a924c28 | |||
| 4be1343f3c | |||
| 34c2679506 | |||
| 650c8512cd | |||
| 852997e446 | |||
| 01b39be9e6 | |||
| 4298db56cf | |||
| 3c635b4bdf | |||
| 7b8e7d6514 | |||
| 4da40c39f1 | |||
| 7ddd4f7232 | |||
| 965b13d62a | |||
| 20ffda695a | |||
| 367b371fdd | |||
| d0c5dc77f3 | |||
| 3d74b1e2ef | |||
| 320105ff05 | |||
| 2020f43261 | |||
| 95766f5a6a | |||
| 7434760380 | |||
| a028160522 | |||
| 792beb4b83 | |||
| c6fa282fbb | |||
| 456eb53439 | |||
| 782a6dcdde | |||
| a1388dff7e | |||
| 3445984901 | |||
| bd2e707e2f | |||
| 72b4844d42 | |||
| 96222dedb5 | |||
| aedea36d0c | |||
| 16097dd174 | |||
| afe6d654d5 | |||
| 59b2f02ac7 | |||
| 8f537cfa19 | |||
| b439515d73 | |||
| e31d6367ea | |||
| 0e7de28b8d | |||
| 0f51f138b5 | |||
| 511fb03e20 | |||
| 4574894e43 | |||
| f673bc1e3d | |||
| 7a94bac34e | |||
| 781b8a6c0f | |||
| a29700e034 | |||
| def0820385 | |||
| 53d73f59eb | |||
| aa0d4ffe51 | |||
| af12b2d18b | |||
| d99a0a5fba | |||
| f12848f9e1 | |||
| 28f547a021 | |||
| fd4a65df7b | |||
| 8d87f624eb | |||
| a033640276 | |||
| 0eeb1a7d0d | |||
| b5d9099626 | |||
| 6137387ede | |||
| 4243f8b32a | |||
| 2fbc4219db | |||
| 6226be9595 | |||
| b836420fd8 | |||
| 37e62939e0 | |||
| 276cd771f9 | |||
| c94e80a0a3 | |||
| 948562261d | |||
| 67dc8cf252 | |||
| 93875a79bb | |||
| d538fb8d6c | |||
| 4ba90b9dda | |||
| b5bd8e5f1b | |||
| a4610ca61e | |||
| e8e57c49de | |||
| 40ec89d24d | |||
| fd3845cdad | |||
| 2ad86122ac | |||
| 24b049ec9e | |||
| c4ff65207d | |||
| b502152195 | |||
| 4889c65922 | |||
| 4eefd2d581 | |||
| 2b3f2ee372 | |||
| 929e3595c8 | |||
| dc928e6174 | |||
| 38e5f94e19 | |||
| dc259b95d8 | |||
| d59b97cca7 | |||
| 37c97d09e6 | |||
| 1dd72dca45 | |||
| 29a6e7d306 | |||
| e3ae29e666 | |||
| 044ec35f62 | |||
| 8b1b8181b3 | |||
| 5ec63c62a1 | |||
| 3ccb859711 | |||
| 7f691e8bb9 | |||
| f4578e1008 | |||
| 1d05568aed | |||
| e3e33daeb9 | |||
| 3e0fc6906e | |||
| cf8bd34941 | |||
| 08f3562fd1 | |||
| c7c8c0700f | |||
| 364aea1eff | |||
| 72433a35b1 | |||
| 683c95ebdb | |||
| 03d00ca36b | |||
| dffc754a0a | |||
| 9ca440b763 | |||
| 2f8362a2ab | |||
| 2e9cf9829c | |||
| 1f9809032d | |||
| b2d13ba7b7 | |||
| 9bd25ce7d2 | |||
| 804b68c981 | |||
| 373e6aa17a | |||
| 695f1a9185 | |||
| 5650c1ecde | |||
| 754e1b073a | |||
| ae3047d758 | |||
| f7f80b009b | |||
| 4fda05e15f | |||
| 3d0dc81e9e | |||
| 0c3c4d61f7 | |||
| 08b685ab61 | |||
| 848bd54dae | |||
| d362e3eb11 | |||
| d26c3fca0c | |||
| 589c5698a0 | |||
| d02ee1ff0e | |||
| 4740489a97 | |||
| e9796044ed | |||
| f7ff3ec749 | |||
| dbf2f0c31e | |||
| 0d8492cf9e | |||
| a51b2b8a82 | |||
| d060cd4fef | |||
| 4023d52399 | |||
| 77c26d3260 | |||
| 57f19fd8ee | |||
| 51e04c588b |
7
.gitignore
vendored
7
.gitignore
vendored
@ -316,3 +316,10 @@ platform/windows/godot_res.res
|
|||||||
|
|
||||||
# Scons progress indicator
|
# Scons progress indicator
|
||||||
.scons_node_count
|
.scons_node_count
|
||||||
|
|
||||||
|
# ccls cache (https://github.com/MaskRay/ccls)
|
||||||
|
.ccls-cache/
|
||||||
|
|
||||||
|
# compile commands (https://clang.llvm.org/docs/JSONCompilationDatabase.html)
|
||||||
|
compile_commands.json
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,7 @@ matrix:
|
|||||||
packages:
|
packages:
|
||||||
- clang-format-6.0
|
- clang-format-6.0
|
||||||
|
|
||||||
- env: PLATFORM=x11 TOOLS=yes TARGET=debug CACHE_NAME=${PLATFORM}-tools-mono-gcc-8 MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" EXTRA_ARGS="module_mono_enabled=yes mono_glue=no werror=yes"
|
- env: PLATFORM=x11 TOOLS=yes TARGET=debug CACHE_NAME=${PLATFORM}-tools-mono-gcc-8 MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" EXTRA_ARGS="module_mono_enabled=yes mono_glue=no warnings=extra werror=yes"
|
||||||
os: linux
|
os: linux
|
||||||
compiler: gcc-8
|
compiler: gcc-8
|
||||||
addons:
|
addons:
|
||||||
@ -49,7 +49,7 @@ matrix:
|
|||||||
build_command: "scons p=x11 -j2 $OPTIONS"
|
build_command: "scons p=x11 -j2 $OPTIONS"
|
||||||
branch_pattern: coverity_scan
|
branch_pattern: coverity_scan
|
||||||
|
|
||||||
- env: PLATFORM=x11 TOOLS=no TARGET=release CACHE_NAME=${PLATFORM}-clang EXTRA_ARGS="werror=yes"
|
- env: PLATFORM=x11 TOOLS=no TARGET=release CACHE_NAME=${PLATFORM}-clang EXTRA_ARGS="warnings=extra werror=yes"
|
||||||
os: linux
|
os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
addons:
|
addons:
|
||||||
@ -57,7 +57,7 @@ matrix:
|
|||||||
packages:
|
packages:
|
||||||
- *linux_deps
|
- *linux_deps
|
||||||
|
|
||||||
- env: PLATFORM=android TOOLS=no TARGET=release_debug CACHE_NAME=${PLATFORM}-clang EXTRA_ARGS="werror=yes"
|
- env: PLATFORM=android TOOLS=no TARGET=release_debug CACHE_NAME=${PLATFORM}-clang EXTRA_ARGS="warnings=extra werror=yes"
|
||||||
os: linux
|
os: linux
|
||||||
compiler: clang
|
compiler: clang
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ matrix:
|
|||||||
os: osx
|
os: osx
|
||||||
compiler: clang
|
compiler: clang
|
||||||
|
|
||||||
- env: PLATFORM=server TOOLS=yes TARGET=release_debug CACHE_NAME=${PLATFORM}-tools-gcc-8 MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" EXTRA_ARGS="werror=yes"
|
- env: PLATFORM=server TOOLS=yes TARGET=release_debug CACHE_NAME=${PLATFORM}-tools-gcc-8 MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" EXTRA_ARGS="warnings=extra werror=yes"
|
||||||
os: linux
|
os: linux
|
||||||
compiler: gcc-8
|
compiler: gcc-8
|
||||||
addons:
|
addons:
|
||||||
|
|||||||
@ -45,6 +45,7 @@ name is available.
|
|||||||
Błażej Szczygieł (zaps166)
|
Błażej Szczygieł (zaps166)
|
||||||
Bojidar Marinov (bojidar-bg)
|
Bojidar Marinov (bojidar-bg)
|
||||||
bruvzg
|
bruvzg
|
||||||
|
Camille Mohr-Daurat (pouleyKetchoupp)
|
||||||
Carl Olsson (not-surt)
|
Carl Olsson (not-surt)
|
||||||
Carter Anderson (cart)
|
Carter Anderson (cart)
|
||||||
Chris Bradfield (cbscribe)
|
Chris Bradfield (cbscribe)
|
||||||
@ -115,6 +116,7 @@ name is available.
|
|||||||
Pieter-Jan Briers (PJB3005)
|
Pieter-Jan Briers (PJB3005)
|
||||||
Poommetee Ketson (Noshyaar)
|
Poommetee Ketson (Noshyaar)
|
||||||
Przemysław Gołąb (n-pigeon)
|
Przemysław Gołąb (n-pigeon)
|
||||||
|
Rafał Mikrut (qarmin)
|
||||||
Ralf Hölzemer (rollenrolm)
|
Ralf Hölzemer (rollenrolm)
|
||||||
Ramesh Ravone (RameshRavone)
|
Ramesh Ravone (RameshRavone)
|
||||||
Ray Koopa (RayKoopa)
|
Ray Koopa (RayKoopa)
|
||||||
|
|||||||
@ -369,17 +369,19 @@ Comment: libSquish
|
|||||||
Copyright: 2006, Simon Brown
|
Copyright: 2006, Simon Brown
|
||||||
License: Expat
|
License: Expat
|
||||||
|
|
||||||
Files: ./thirdparty/thekla_atlas/
|
|
||||||
Comment: Thekla Atlas
|
|
||||||
Copyright: 2013, Thekla, Inc
|
|
||||||
License: Expat
|
|
||||||
|
|
||||||
Files: ./thirdparty/tinyexr/
|
Files: ./thirdparty/tinyexr/
|
||||||
Comment: TinyEXR
|
Comment: TinyEXR
|
||||||
Copyright: 2014-2018, Syoyo Fujita
|
Copyright: 2014-2018, Syoyo Fujita
|
||||||
2002, Industrial Light & Magic, a division of Lucas Digital Ltd. LLC
|
2002, Industrial Light & Magic, a division of Lucas Digital Ltd. LLC
|
||||||
License: BSD-3-clause
|
License: BSD-3-clause
|
||||||
|
|
||||||
|
Files: ./thirdparty/xatlas/
|
||||||
|
Comment: xatlas
|
||||||
|
Copyright: 2018, Jonathan Young
|
||||||
|
2013, Thekla, Inc
|
||||||
|
2006, NVIDIA Corporation, Ignacio Castano
|
||||||
|
License: Expat
|
||||||
|
|
||||||
Files: ./thirdparty/zlib/
|
Files: ./thirdparty/zlib/
|
||||||
Comment: zlib
|
Comment: zlib
|
||||||
Copyright: 1995-2017, Jean-loup Gailly and Mark Adler
|
Copyright: 1995-2017, Jean-loup Gailly and Mark Adler
|
||||||
|
|||||||
92
DONORS.md
92
DONORS.md
@ -18,22 +18,21 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
|
|
||||||
Gamblify <https://www.gamblify.com>
|
Gamblify <https://www.gamblify.com>
|
||||||
Image Campus <https://www.imagecampus.edu.ar>
|
Image Campus <https://www.imagecampus.edu.ar>
|
||||||
Yakaz.com <https://yakaz.com>
|
|
||||||
|
|
||||||
## Mini sponsors
|
## Mini sponsors
|
||||||
|
|
||||||
Alan Beauchamp
|
Alan Beauchamp
|
||||||
Anandarup Mallik
|
Anandarup Mallik
|
||||||
Andrew Dunai
|
Andrew Dunai
|
||||||
Arda Erol
|
|
||||||
Brandon Lamb
|
Brandon Lamb
|
||||||
Christian Uldall Pedersen
|
Christian Uldall Pedersen
|
||||||
Christoph Woinke
|
Christoph Woinke
|
||||||
|
Connor Hill
|
||||||
Edward Flick
|
Edward Flick
|
||||||
GameDev.net
|
GameDev.net
|
||||||
GameDev.tv
|
GameDev.tv
|
||||||
Hein-Pieter van Braam
|
Hein-Pieter van Braam
|
||||||
Jamal Alyafei
|
Jacob McKenney
|
||||||
Javary Games
|
Javary Games
|
||||||
Jay Sistar
|
Jay Sistar
|
||||||
Justin Arnold
|
Justin Arnold
|
||||||
@ -43,22 +42,18 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Matthieu Huvé
|
Matthieu Huvé
|
||||||
Maxim Karsten
|
Maxim Karsten
|
||||||
Mike King
|
Mike King
|
||||||
Nathan Warden
|
|
||||||
Neal Gompa (Conan Kudo)
|
Neal Gompa (Conan Kudo)
|
||||||
Patrick Aarstad
|
Patrick Aarstad
|
||||||
"Rainway "
|
"Rainway "
|
||||||
Ruslan Mustakov
|
|
||||||
Slobodan Milnovic
|
Slobodan Milnovic
|
||||||
StarFlare Software
|
StarFlare Software
|
||||||
Stephan Lanfermann
|
Stephan Lanfermann
|
||||||
Stoney Meyerhoeffer
|
TigerJ
|
||||||
thechris
|
|
||||||
VilliHaukka
|
VilliHaukka
|
||||||
Zashi
|
Zashi
|
||||||
|
|
||||||
## Gold donors
|
## Gold donors
|
||||||
|
|
||||||
Asdf
|
|
||||||
Brandon Waite
|
Brandon Waite
|
||||||
cheese65536
|
cheese65536
|
||||||
David Gehrig
|
David Gehrig
|
||||||
@ -69,8 +64,10 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Nathanael Beisiegel
|
Nathanael Beisiegel
|
||||||
Officine Pixel S.n.c.
|
Officine Pixel S.n.c.
|
||||||
Retro Village
|
Retro Village
|
||||||
|
Sofox
|
||||||
Zaven Muradyan
|
Zaven Muradyan
|
||||||
|
|
||||||
|
Alexander Trey Saunders
|
||||||
Allen Schade
|
Allen Schade
|
||||||
Andreas Schüle
|
Andreas Schüle
|
||||||
Asher Glick
|
Asher Glick
|
||||||
@ -80,7 +77,6 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
David Giardi
|
David Giardi
|
||||||
Edward E
|
Edward E
|
||||||
Florian Breisch
|
Florian Breisch
|
||||||
Gary Oberbrunner
|
|
||||||
Gero
|
Gero
|
||||||
Jay Horton
|
Jay Horton
|
||||||
Jon Smith
|
Jon Smith
|
||||||
@ -88,6 +84,8 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Jorge Bernal
|
Jorge Bernal
|
||||||
Joshua Lesperance
|
Joshua Lesperance
|
||||||
Justo Delgado Baudí
|
Justo Delgado Baudí
|
||||||
|
Karl Werf
|
||||||
|
Kommentgames
|
||||||
Krzysztof Dluzniewski
|
Krzysztof Dluzniewski
|
||||||
Moonwards
|
Moonwards
|
||||||
Mored1984
|
Mored1984
|
||||||
@ -95,6 +93,7 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
paul gruenbacher
|
paul gruenbacher
|
||||||
Paul LaMotte
|
Paul LaMotte
|
||||||
Rob Messick
|
Rob Messick
|
||||||
|
Ross Esmond
|
||||||
Scott Wadden
|
Scott Wadden
|
||||||
Sergey
|
Sergey
|
||||||
Svenne Krap
|
Svenne Krap
|
||||||
@ -103,19 +102,20 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Wyatt Goodin
|
Wyatt Goodin
|
||||||
Xananax
|
Xananax
|
||||||
|
|
||||||
BanjoNode2D
|
Abel Oroz Vicente
|
||||||
Beliar
|
|
||||||
Chris Serino
|
Chris Serino
|
||||||
Christian Padilla
|
Christian Padilla
|
||||||
Conrad Curry
|
Conrad Curry
|
||||||
Craig Smith
|
Craig Smith
|
||||||
Daniel Egger
|
Daniel Egger
|
||||||
Dean Harmon
|
Dean Harmon
|
||||||
|
Ian Richard Kunert
|
||||||
Ivan Trombley
|
Ivan Trombley
|
||||||
Joan Fons
|
Joan Fons
|
||||||
Krzysztof Jankowski
|
Krzysztof Jankowski
|
||||||
Lord Bloodhound
|
Lord Bloodhound
|
||||||
Lucas Ferreira Franca
|
Lucas Ferreira Franca
|
||||||
|
Michele Zilli
|
||||||
Nathan Lundquist
|
Nathan Lundquist
|
||||||
Pascal Grüter
|
Pascal Grüter
|
||||||
Petr Malac
|
Petr Malac
|
||||||
@ -125,27 +125,34 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Ronnie Ashlock
|
Ronnie Ashlock
|
||||||
ScottMakesGames
|
ScottMakesGames
|
||||||
Thomas Bjarnelöf
|
Thomas Bjarnelöf
|
||||||
|
Vincent Henderson
|
||||||
Wojciech Chojnacki
|
Wojciech Chojnacki
|
||||||
Xavier PATRICELLI
|
Xavier PATRICELLI
|
||||||
|
|
||||||
Alessandra Pereyra
|
Alessandra Pereyra
|
||||||
Alexey Dyadchenko
|
Alexey Dyadchenko
|
||||||
Andrew Bowen
|
Andrew Bowen
|
||||||
|
Asdf
|
||||||
Benjamin W Flint
|
Benjamin W Flint
|
||||||
Chau Siu Hung
|
Chau Siu Hung
|
||||||
Chris Goddard
|
Chris Goddard
|
||||||
Chris Petrich
|
Chris Petrich
|
||||||
Christian Leth Jeppesen
|
Christian Leth Jeppesen
|
||||||
|
Christoph Schröder
|
||||||
Cody Parker
|
Cody Parker
|
||||||
ComicSads
|
ComicSads
|
||||||
D
|
D
|
||||||
|
Daniel
|
||||||
|
Daniel Eichler
|
||||||
Deadly Lampshade
|
Deadly Lampshade
|
||||||
|
Eagle 3d
|
||||||
E.G.
|
E.G.
|
||||||
Eric
|
Eric
|
||||||
Eric Monson
|
Eric Monson
|
||||||
Ethan Bennis
|
Ethan Bennis
|
||||||
Eugenio Hugo Salgüero Jáñez
|
Eugenio Hugo Salgüero Jáñez
|
||||||
flesk
|
flesk
|
||||||
|
Francisco Javier Moreno Carracedo
|
||||||
gavlig
|
gavlig
|
||||||
GGGames.org
|
GGGames.org
|
||||||
Giles Montgomery
|
Giles Montgomery
|
||||||
@ -153,21 +160,24 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Guilherme Felipe de C. G. da Silva
|
Guilherme Felipe de C. G. da Silva
|
||||||
Heath Hayes
|
Heath Hayes
|
||||||
Hysteria
|
Hysteria
|
||||||
Jalal Chaabane
|
|
||||||
Jeppe Zapp
|
|
||||||
Jose Malheiro
|
Jose Malheiro
|
||||||
|
Joshua Flores
|
||||||
Juan T Chen
|
Juan T Chen
|
||||||
Juraj Móza
|
Juraj Móza
|
||||||
Kasper Jeppesen
|
Kasper Jeppesen
|
||||||
Klavdij Voncina
|
Klavdij Voncina
|
||||||
Leandro Voltolino
|
Leandro Voltolino
|
||||||
Lukáš Rendvanský
|
Maarten Elings
|
||||||
|
Malcolm Peralty
|
||||||
Marius Kamm
|
Marius Kamm
|
||||||
|
Markus Fehr
|
||||||
Markus Wiesner
|
Markus Wiesner
|
||||||
Martin Eigel
|
Martin Eigel
|
||||||
Marvin
|
Marvin
|
||||||
Matt Eunson
|
Matt Eunson
|
||||||
|
Matthew Hillier
|
||||||
Max R.R. Collada
|
Max R.R. Collada
|
||||||
|
MegaC
|
||||||
Nick Nikitin
|
Nick Nikitin
|
||||||
Oliver Dick
|
Oliver Dick
|
||||||
oziatek
|
oziatek
|
||||||
@ -175,39 +185,45 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Paul Von Zimmerman
|
Paul Von Zimmerman
|
||||||
Pete Goodwin
|
Pete Goodwin
|
||||||
Ranoller
|
Ranoller
|
||||||
ray-tracer
|
|
||||||
Ruben Soares Luis
|
|
||||||
Samuel Judd
|
Samuel Judd
|
||||||
Sofox
|
Scott Pilet
|
||||||
spilldata
|
spilldata
|
||||||
Stoned Xander
|
Stoned Xander
|
||||||
|
Thomas Krampl
|
||||||
Tobias Bocanegra
|
Tobias Bocanegra
|
||||||
|
Urho
|
||||||
WytRabbit
|
WytRabbit
|
||||||
Xavier Fumado Beltran
|
Xavier Fumado Beltran
|
||||||
|
yuanzhe zhou
|
||||||
|
|
||||||
## Silver donors
|
## Silver donors
|
||||||
|
|
||||||
1D_Inc
|
1D_Inc
|
||||||
|
Abraham Haskins
|
||||||
Adam Brunnmeier
|
Adam Brunnmeier
|
||||||
Adam Carr
|
Adam Carr
|
||||||
Adam Nakonieczny
|
Adam Nakonieczny
|
||||||
Adam Smeltzer
|
Adam Smeltzer
|
||||||
Adisibio
|
Adisibio
|
||||||
|
Aidan O'Flannagain
|
||||||
Alder Stefano
|
Alder Stefano
|
||||||
Alessandro Senese
|
Alessandro Senese
|
||||||
Alexander Gillberg
|
Alexander Gillberg
|
||||||
Alexander Koppe
|
Alexander Koppe
|
||||||
|
Alex Davies-Moore
|
||||||
Alice Robinson
|
Alice Robinson
|
||||||
|
Andreas Evers
|
||||||
Andreas Krampitz
|
Andreas Krampitz
|
||||||
Anthony Bongiovanni
|
Anthony Bongiovanni
|
||||||
Arbor Interactive
|
Arda Erol
|
||||||
Arthur S. Muszynski
|
Arthur S. Muszynski
|
||||||
Aubrey Falconer
|
Aubrey Falconer
|
||||||
Avencherus
|
Avencherus
|
||||||
Bailey
|
|
||||||
Balázs Batári
|
Balázs Batári
|
||||||
Bastian Böhm
|
Bastian Böhm
|
||||||
|
Beliar
|
||||||
Benedikt
|
Benedikt
|
||||||
|
Ben Phelan
|
||||||
Ben Vercammen
|
Ben Vercammen
|
||||||
Bernd Jänichen
|
Bernd Jänichen
|
||||||
Blair Allen
|
Blair Allen
|
||||||
@ -221,14 +237,17 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Christian Baune
|
Christian Baune
|
||||||
Christian Winter
|
Christian Winter
|
||||||
Christoffer Sundbom
|
Christoffer Sundbom
|
||||||
|
Christopher Fisher
|
||||||
Chris Wilson
|
Chris Wilson
|
||||||
|
Clay Heaton
|
||||||
Collin Shooltz
|
Collin Shooltz
|
||||||
Connor Hill
|
|
||||||
Daniel Johnson
|
Daniel Johnson
|
||||||
DanielMaximiano
|
DanielMaximiano
|
||||||
Daniel Reed
|
Daniel Reed
|
||||||
|
David Bullock
|
||||||
David Cravens
|
David Cravens
|
||||||
David May
|
David May
|
||||||
|
Diliup Gabadamudalige
|
||||||
Dominik Wetzel
|
Dominik Wetzel
|
||||||
Duobix
|
Duobix
|
||||||
Edward Herbert
|
Edward Herbert
|
||||||
@ -238,20 +257,24 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Eric Martini
|
Eric Martini
|
||||||
Eric McCarthy
|
Eric McCarthy
|
||||||
Eric Williams
|
Eric Williams
|
||||||
Fabian Becker
|
Fabian Lökes
|
||||||
fengjiongmax
|
fengjiongmax
|
||||||
Foomf
|
Foomf
|
||||||
G3Dev sàrl
|
G3Dev sàrl
|
||||||
|
Gary Hulst
|
||||||
Gerrit Großkopf
|
Gerrit Großkopf
|
||||||
Grant Clarke
|
Grant Clarke
|
||||||
Greg Olson
|
Greg Olson
|
||||||
|
Greg Pennefather
|
||||||
Guldoman
|
Guldoman
|
||||||
Haley Aycock
|
|
||||||
Heribert Hirth
|
Heribert Hirth
|
||||||
Hiroshi Naruo
|
Hiroshi Naruo
|
||||||
|
HMan
|
||||||
Hunter Jones
|
Hunter Jones
|
||||||
ialex32x
|
ialex32x
|
||||||
Igor Buzatovic
|
Igor Buzatovic
|
||||||
|
Iiari
|
||||||
|
Isaac Morton
|
||||||
Jaime Ruiz-Borau Vizárraga
|
Jaime Ruiz-Borau Vizárraga
|
||||||
Jako Danar
|
Jako Danar
|
||||||
James A F Manley
|
James A F Manley
|
||||||
@ -259,6 +282,7 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Jeremy Kahn
|
Jeremy Kahn
|
||||||
Jesse Dubay
|
Jesse Dubay
|
||||||
Joel Fivat
|
Joel Fivat
|
||||||
|
Joel Setterberg
|
||||||
Johannes Wuensch
|
Johannes Wuensch
|
||||||
Jonas Rudlang
|
Jonas Rudlang
|
||||||
Jonas Yamazaki
|
Jonas Yamazaki
|
||||||
@ -267,14 +291,16 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Jonathon
|
Jonathon
|
||||||
Jon Bonazza
|
Jon Bonazza
|
||||||
Jon Sully
|
Jon Sully
|
||||||
|
Jose Aleman
|
||||||
Josh 'Cheeseness' Bush
|
Josh 'Cheeseness' Bush
|
||||||
Juanfran
|
Juanfran
|
||||||
Juan Negrier
|
Juan Negrier
|
||||||
Judd
|
Judd
|
||||||
Julian Murgia
|
Julian Murgia
|
||||||
|
Julius Hackel
|
||||||
Kajornthep Piyanun
|
Kajornthep Piyanun
|
||||||
KC Chan
|
KC Chan
|
||||||
Kevin Boyer
|
kickmaniac
|
||||||
Kiyohiro Kawamura (kyorohiro)
|
Kiyohiro Kawamura (kyorohiro)
|
||||||
Klagsam
|
Klagsam
|
||||||
KR McGinley
|
KR McGinley
|
||||||
@ -289,10 +315,13 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Major Haul
|
Major Haul
|
||||||
Malcolm
|
Malcolm
|
||||||
Markus Michael Egger
|
Markus Michael Egger
|
||||||
|
Martin Holas
|
||||||
|
Matthew Little
|
||||||
Matthias Grandis
|
Matthias Grandis
|
||||||
Matt Welke
|
Matt Welke
|
||||||
Maxwell
|
Maxwell
|
||||||
medecau
|
medecau
|
||||||
|
Menno Finlay-Smits
|
||||||
Mertcan Mermerkaya
|
Mertcan Mermerkaya
|
||||||
mhilbrunner
|
mhilbrunner
|
||||||
Michael Dürwald
|
Michael Dürwald
|
||||||
@ -300,17 +329,19 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Michael Labbe
|
Michael Labbe
|
||||||
Mikael Olsson
|
Mikael Olsson
|
||||||
Mikayla Hutchinson
|
Mikayla Hutchinson
|
||||||
|
Mike Cunningham
|
||||||
MoM
|
MoM
|
||||||
Moritz Laass
|
Moritz Laass
|
||||||
Moritz Weissenberger
|
Moritz Weissenberger
|
||||||
|
MuffinManKen
|
||||||
Natrim
|
Natrim
|
||||||
nee
|
nee
|
||||||
Neil Blakey-Milner
|
Neil Blakey-Milner
|
||||||
Nerdforge
|
Nerdforge
|
||||||
Nick Pavlica
|
|
||||||
Niclas Eriksen
|
Niclas Eriksen
|
||||||
Nicolás Montaña
|
Nicolás Montaña
|
||||||
Nicolas SAN AGUSTIN
|
Nicolas SAN AGUSTIN
|
||||||
|
Nithin Jino
|
||||||
Oscar Norlander
|
Oscar Norlander
|
||||||
Pan Ip
|
Pan Ip
|
||||||
Patrick Nafarrete
|
Patrick Nafarrete
|
||||||
@ -321,20 +352,29 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
Pierre-Igor Berthet
|
Pierre-Igor Berthet
|
||||||
Pietro Vertechi
|
Pietro Vertechi
|
||||||
Piotr Kaczmarski
|
Piotr Kaczmarski
|
||||||
|
Pitsanu Tongprasin
|
||||||
|
Poryg
|
||||||
Prokhorenko Leonid
|
Prokhorenko Leonid
|
||||||
Psyagnostic
|
Psyagnostic
|
||||||
Rafael
|
Rafael
|
||||||
|
Raphael Leroux
|
||||||
Rémi Verschelde
|
Rémi Verschelde
|
||||||
|
Reneator
|
||||||
Ricardo Alcantara
|
Ricardo Alcantara
|
||||||
Richman Stewart
|
Richman Stewart
|
||||||
|
Rob Crowle
|
||||||
Robert Farr (Larington)
|
Robert Farr (Larington)
|
||||||
|
Robert Hernandez
|
||||||
|
Rodrigo Loli
|
||||||
Roger Burgess
|
Roger Burgess
|
||||||
Roger Smith
|
Roger Smith
|
||||||
Roland Rząsa
|
Roland Rząsa
|
||||||
Roman Tinkov
|
Roman Tinkov
|
||||||
Ryan Cheung
|
Ryan Cheung
|
||||||
|
Ryan Groom
|
||||||
Ryan Hentz
|
Ryan Hentz
|
||||||
Sasori Olkof
|
Sasori Olkof
|
||||||
|
Scott D. Yelich
|
||||||
Sebastian Michailidis
|
Sebastian Michailidis
|
||||||
Shane Spoor
|
Shane Spoor
|
||||||
Simon Wenner
|
Simon Wenner
|
||||||
@ -348,6 +388,7 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
tiansheng li
|
tiansheng li
|
||||||
Tim
|
Tim
|
||||||
Tim Drumheller
|
Tim Drumheller
|
||||||
|
Tim Gudex
|
||||||
Tom Larrow
|
Tom Larrow
|
||||||
Torsten Crass
|
Torsten Crass
|
||||||
Tryggve Sollid
|
Tryggve Sollid
|
||||||
@ -355,10 +396,13 @@ generous deed immortalized in the next stable release of Godot Engine.
|
|||||||
UltyX
|
UltyX
|
||||||
Vaiktorg
|
Vaiktorg
|
||||||
Victor
|
Victor
|
||||||
|
Vigilant Watch
|
||||||
Viktor Ferenczi
|
Viktor Ferenczi
|
||||||
waka nya
|
waka nya
|
||||||
Wayne Haak
|
Wayne Haak
|
||||||
werner mendizabal
|
werner mendizabal
|
||||||
|
Wiley Thompson
|
||||||
|
Will
|
||||||
William Gervasio
|
William Gervasio
|
||||||
William Hogben
|
William Hogben
|
||||||
Wout Standaert
|
Wout Standaert
|
||||||
|
|||||||
11
SConstruct
11
SConstruct
@ -5,7 +5,6 @@ EnsureSConsVersion(0, 98, 1)
|
|||||||
# System
|
# System
|
||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
import string
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Local
|
# Local
|
||||||
@ -181,7 +180,6 @@ opts.Add(BoolVariable('builtin_opus', "Use the built-in Opus library", True))
|
|||||||
opts.Add(BoolVariable('builtin_pcre2', "Use the built-in PCRE2 library)", True))
|
opts.Add(BoolVariable('builtin_pcre2', "Use the built-in PCRE2 library)", True))
|
||||||
opts.Add(BoolVariable('builtin_recast', "Use the built-in Recast library", True))
|
opts.Add(BoolVariable('builtin_recast', "Use the built-in Recast library", True))
|
||||||
opts.Add(BoolVariable('builtin_squish', "Use the built-in squish library", True))
|
opts.Add(BoolVariable('builtin_squish', "Use the built-in squish library", True))
|
||||||
opts.Add(BoolVariable('builtin_thekla_atlas', "Use the built-in thekla_altas library", True))
|
|
||||||
opts.Add(BoolVariable('builtin_xatlas', "Use the built-in xatlas library", True))
|
opts.Add(BoolVariable('builtin_xatlas', "Use the built-in xatlas library", True))
|
||||||
opts.Add(BoolVariable('builtin_zlib', "Use the built-in zlib library", True))
|
opts.Add(BoolVariable('builtin_zlib', "Use the built-in zlib library", True))
|
||||||
opts.Add(BoolVariable('builtin_zstd', "Use the built-in Zstd library", True))
|
opts.Add(BoolVariable('builtin_zstd', "Use the built-in Zstd library", True))
|
||||||
@ -342,12 +340,17 @@ if selected_platform in platform_list:
|
|||||||
shadow_local_warning = []
|
shadow_local_warning = []
|
||||||
all_plus_warnings = ['-Wwrite-strings']
|
all_plus_warnings = ['-Wwrite-strings']
|
||||||
|
|
||||||
if methods.use_gcc(env):
|
if methods.using_gcc(env):
|
||||||
version = methods.get_compiler_version(env)
|
version = methods.get_compiler_version(env)
|
||||||
if version != None and version[0] >= '7':
|
if version != None and version[0] >= '7':
|
||||||
shadow_local_warning = ['-Wshadow-local']
|
shadow_local_warning = ['-Wshadow-local']
|
||||||
if (env["warnings"] == 'extra'):
|
if (env["warnings"] == 'extra'):
|
||||||
env.Append(CCFLAGS=['-Wall', '-Wextra'] + all_plus_warnings + shadow_local_warning)
|
# FIXME: enable -Wimplicit-fallthrough once #26135 is fixed
|
||||||
|
# FIXME: enable -Wclobbered once #26351 is fixed
|
||||||
|
env.Append(CCFLAGS=['-Wall', '-Wextra', '-Wno-implicit-fallthrough', '-Wno-unused-parameter'] + all_plus_warnings + shadow_local_warning)
|
||||||
|
if methods.using_gcc(env):
|
||||||
|
env['CCFLAGS'] += ['-Wno-clobbered']
|
||||||
|
|
||||||
elif (env["warnings"] == 'all'):
|
elif (env["warnings"] == 'all'):
|
||||||
env.Append(CCFLAGS=['-Wall'] + shadow_local_warning)
|
env.Append(CCFLAGS=['-Wall'] + shadow_local_warning)
|
||||||
elif (env["warnings"] == 'moderate'):
|
elif (env["warnings"] == 'moderate'):
|
||||||
|
|||||||
@ -792,7 +792,7 @@ Dictionary _OS::get_datetime_from_unix_time(int64_t unix_time_val) const {
|
|||||||
|
|
||||||
size_t imonth = 0;
|
size_t imonth = 0;
|
||||||
|
|
||||||
while (dayno >= MONTH_DAYS_TABLE[LEAPYEAR(year)][imonth]) {
|
while ((unsigned long)dayno >= MONTH_DAYS_TABLE[LEAPYEAR(year)][imonth]) {
|
||||||
dayno -= MONTH_DAYS_TABLE[LEAPYEAR(year)][imonth];
|
dayno -= MONTH_DAYS_TABLE[LEAPYEAR(year)][imonth];
|
||||||
imonth++;
|
imonth++;
|
||||||
}
|
}
|
||||||
@ -1908,18 +1908,18 @@ bool _File::file_exists(const String &p_name) const {
|
|||||||
return FileAccess::exists(p_name);
|
return FileAccess::exists(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _File::store_var(const Variant &p_var) {
|
void _File::store_var(const Variant &p_var, bool p_full_objects) {
|
||||||
|
|
||||||
ERR_FAIL_COND(!f);
|
ERR_FAIL_COND(!f);
|
||||||
int len;
|
int len;
|
||||||
Error err = encode_variant(p_var, NULL, len);
|
Error err = encode_variant(p_var, NULL, len, p_full_objects);
|
||||||
ERR_FAIL_COND(err != OK);
|
ERR_FAIL_COND(err != OK);
|
||||||
|
|
||||||
PoolVector<uint8_t> buff;
|
PoolVector<uint8_t> buff;
|
||||||
buff.resize(len);
|
buff.resize(len);
|
||||||
PoolVector<uint8_t>::Write w = buff.write();
|
PoolVector<uint8_t>::Write w = buff.write();
|
||||||
|
|
||||||
err = encode_variant(p_var, &w[0], len);
|
err = encode_variant(p_var, &w[0], len, p_full_objects);
|
||||||
ERR_FAIL_COND(err != OK);
|
ERR_FAIL_COND(err != OK);
|
||||||
w = PoolVector<uint8_t>::Write();
|
w = PoolVector<uint8_t>::Write();
|
||||||
|
|
||||||
@ -1927,7 +1927,7 @@ void _File::store_var(const Variant &p_var) {
|
|||||||
store_buffer(buff);
|
store_buffer(buff);
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant _File::get_var() const {
|
Variant _File::get_var(bool p_allow_objects) const {
|
||||||
|
|
||||||
ERR_FAIL_COND_V(!f, Variant());
|
ERR_FAIL_COND_V(!f, Variant());
|
||||||
uint32_t len = get_32();
|
uint32_t len = get_32();
|
||||||
@ -1937,7 +1937,7 @@ Variant _File::get_var() const {
|
|||||||
PoolVector<uint8_t>::Read r = buff.read();
|
PoolVector<uint8_t>::Read r = buff.read();
|
||||||
|
|
||||||
Variant v;
|
Variant v;
|
||||||
Error err = decode_variant(v, &r[0], len);
|
Error err = decode_variant(v, &r[0], len, NULL, p_allow_objects);
|
||||||
ERR_FAIL_COND_V(err != OK, Variant());
|
ERR_FAIL_COND_V(err != OK, Variant());
|
||||||
|
|
||||||
return v;
|
return v;
|
||||||
@ -1980,7 +1980,7 @@ void _File::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_endian_swap"), &_File::get_endian_swap);
|
ClassDB::bind_method(D_METHOD("get_endian_swap"), &_File::get_endian_swap);
|
||||||
ClassDB::bind_method(D_METHOD("set_endian_swap", "enable"), &_File::set_endian_swap);
|
ClassDB::bind_method(D_METHOD("set_endian_swap", "enable"), &_File::set_endian_swap);
|
||||||
ClassDB::bind_method(D_METHOD("get_error"), &_File::get_error);
|
ClassDB::bind_method(D_METHOD("get_error"), &_File::get_error);
|
||||||
ClassDB::bind_method(D_METHOD("get_var"), &_File::get_var);
|
ClassDB::bind_method(D_METHOD("get_var", "allow_objects"), &_File::get_var, DEFVAL(false));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("store_8", "value"), &_File::store_8);
|
ClassDB::bind_method(D_METHOD("store_8", "value"), &_File::store_8);
|
||||||
ClassDB::bind_method(D_METHOD("store_16", "value"), &_File::store_16);
|
ClassDB::bind_method(D_METHOD("store_16", "value"), &_File::store_16);
|
||||||
@ -1993,7 +1993,7 @@ void _File::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("store_line", "line"), &_File::store_line);
|
ClassDB::bind_method(D_METHOD("store_line", "line"), &_File::store_line);
|
||||||
ClassDB::bind_method(D_METHOD("store_csv_line", "values", "delim"), &_File::store_csv_line, DEFVAL(","));
|
ClassDB::bind_method(D_METHOD("store_csv_line", "values", "delim"), &_File::store_csv_line, DEFVAL(","));
|
||||||
ClassDB::bind_method(D_METHOD("store_string", "string"), &_File::store_string);
|
ClassDB::bind_method(D_METHOD("store_string", "string"), &_File::store_string);
|
||||||
ClassDB::bind_method(D_METHOD("store_var", "value"), &_File::store_var);
|
ClassDB::bind_method(D_METHOD("store_var", "value", "full_objects"), &_File::store_var, DEFVAL(false));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("store_pascal_string", "string"), &_File::store_pascal_string);
|
ClassDB::bind_method(D_METHOD("store_pascal_string", "string"), &_File::store_pascal_string);
|
||||||
ClassDB::bind_method(D_METHOD("get_pascal_string"), &_File::get_pascal_string);
|
ClassDB::bind_method(D_METHOD("get_pascal_string"), &_File::get_pascal_string);
|
||||||
@ -2223,17 +2223,17 @@ _Marshalls *_Marshalls::get_singleton() {
|
|||||||
return singleton;
|
return singleton;
|
||||||
}
|
}
|
||||||
|
|
||||||
String _Marshalls::variant_to_base64(const Variant &p_var) {
|
String _Marshalls::variant_to_base64(const Variant &p_var, bool p_full_objects) {
|
||||||
|
|
||||||
int len;
|
int len;
|
||||||
Error err = encode_variant(p_var, NULL, len);
|
Error err = encode_variant(p_var, NULL, len, p_full_objects);
|
||||||
ERR_FAIL_COND_V(err != OK, "");
|
ERR_FAIL_COND_V(err != OK, "");
|
||||||
|
|
||||||
PoolVector<uint8_t> buff;
|
PoolVector<uint8_t> buff;
|
||||||
buff.resize(len);
|
buff.resize(len);
|
||||||
PoolVector<uint8_t>::Write w = buff.write();
|
PoolVector<uint8_t>::Write w = buff.write();
|
||||||
|
|
||||||
err = encode_variant(p_var, &w[0], len);
|
err = encode_variant(p_var, &w[0], len, p_full_objects);
|
||||||
ERR_FAIL_COND_V(err != OK, "");
|
ERR_FAIL_COND_V(err != OK, "");
|
||||||
|
|
||||||
int b64len = len / 3 * 4 + 4 + 1;
|
int b64len = len / 3 * 4 + 4 + 1;
|
||||||
@ -2249,7 +2249,7 @@ String _Marshalls::variant_to_base64(const Variant &p_var) {
|
|||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
Variant _Marshalls::base64_to_variant(const String &p_str) {
|
Variant _Marshalls::base64_to_variant(const String &p_str, bool p_allow_objects) {
|
||||||
|
|
||||||
int strlen = p_str.length();
|
int strlen = p_str.length();
|
||||||
CharString cstr = p_str.ascii();
|
CharString cstr = p_str.ascii();
|
||||||
@ -2261,7 +2261,7 @@ Variant _Marshalls::base64_to_variant(const String &p_str) {
|
|||||||
int len = base64_decode((char *)(&w[0]), (char *)cstr.get_data(), strlen);
|
int len = base64_decode((char *)(&w[0]), (char *)cstr.get_data(), strlen);
|
||||||
|
|
||||||
Variant v;
|
Variant v;
|
||||||
Error err = decode_variant(v, &w[0], len);
|
Error err = decode_variant(v, &w[0], len, NULL, p_allow_objects);
|
||||||
ERR_FAIL_COND_V(err != OK, Variant());
|
ERR_FAIL_COND_V(err != OK, Variant());
|
||||||
|
|
||||||
return v;
|
return v;
|
||||||
@ -2340,8 +2340,8 @@ String _Marshalls::base64_to_utf8(const String &p_str) {
|
|||||||
|
|
||||||
void _Marshalls::_bind_methods() {
|
void _Marshalls::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("variant_to_base64", "variant"), &_Marshalls::variant_to_base64);
|
ClassDB::bind_method(D_METHOD("variant_to_base64", "variant", "full_objects"), &_Marshalls::variant_to_base64, DEFVAL(false));
|
||||||
ClassDB::bind_method(D_METHOD("base64_to_variant", "base64_str"), &_Marshalls::base64_to_variant);
|
ClassDB::bind_method(D_METHOD("base64_to_variant", "base64_str", "allow_objects"), &_Marshalls::base64_to_variant, DEFVAL(false));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("raw_to_base64", "array"), &_Marshalls::raw_to_base64);
|
ClassDB::bind_method(D_METHOD("raw_to_base64", "array"), &_Marshalls::raw_to_base64);
|
||||||
ClassDB::bind_method(D_METHOD("base64_to_raw", "base64_str"), &_Marshalls::base64_to_raw);
|
ClassDB::bind_method(D_METHOD("base64_to_raw", "base64_str"), &_Marshalls::base64_to_raw);
|
||||||
|
|||||||
@ -463,7 +463,7 @@ public:
|
|||||||
double get_double() const;
|
double get_double() const;
|
||||||
real_t get_real() const;
|
real_t get_real() const;
|
||||||
|
|
||||||
Variant get_var() const;
|
Variant get_var(bool p_allow_objects = false) const;
|
||||||
|
|
||||||
PoolVector<uint8_t> get_buffer(int p_length) const; ///< get an array of bytes
|
PoolVector<uint8_t> get_buffer(int p_length) const; ///< get an array of bytes
|
||||||
String get_line() const;
|
String get_line() const;
|
||||||
@ -500,7 +500,7 @@ public:
|
|||||||
|
|
||||||
void store_buffer(const PoolVector<uint8_t> &p_buffer); ///< store an array of bytes
|
void store_buffer(const PoolVector<uint8_t> &p_buffer); ///< store an array of bytes
|
||||||
|
|
||||||
void store_var(const Variant &p_var);
|
void store_var(const Variant &p_var, bool p_full_objects = false);
|
||||||
|
|
||||||
bool file_exists(const String &p_name) const; ///< return true if a file exists
|
bool file_exists(const String &p_name) const; ///< return true if a file exists
|
||||||
|
|
||||||
@ -569,8 +569,8 @@ protected:
|
|||||||
public:
|
public:
|
||||||
static _Marshalls *get_singleton();
|
static _Marshalls *get_singleton();
|
||||||
|
|
||||||
String variant_to_base64(const Variant &p_var);
|
String variant_to_base64(const Variant &p_var, bool p_full_objects = false);
|
||||||
Variant base64_to_variant(const String &p_str);
|
Variant base64_to_variant(const String &p_str, bool p_allow_objects = false);
|
||||||
|
|
||||||
String raw_to_base64(const PoolVector<uint8_t> &p_arr);
|
String raw_to_base64(const PoolVector<uint8_t> &p_arr);
|
||||||
PoolVector<uint8_t> base64_to_raw(const String &p_str);
|
PoolVector<uint8_t> base64_to_raw(const String &p_str);
|
||||||
|
|||||||
@ -249,6 +249,11 @@ void ClassDB::set_current_api(APIType p_api) {
|
|||||||
current_api = p_api;
|
current_api = p_api;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ClassDB::APIType ClassDB::get_current_api() {
|
||||||
|
|
||||||
|
return current_api;
|
||||||
|
}
|
||||||
|
|
||||||
HashMap<StringName, ClassDB::ClassInfo> ClassDB::classes;
|
HashMap<StringName, ClassDB::ClassInfo> ClassDB::classes;
|
||||||
HashMap<StringName, StringName> ClassDB::resource_base_extensions;
|
HashMap<StringName, StringName> ClassDB::resource_base_extensions;
|
||||||
HashMap<StringName, StringName> ClassDB::compat_classes;
|
HashMap<StringName, StringName> ClassDB::compat_classes;
|
||||||
|
|||||||
@ -371,6 +371,7 @@ public:
|
|||||||
static void init();
|
static void init();
|
||||||
|
|
||||||
static void set_current_api(APIType p_api);
|
static void set_current_api(APIType p_api);
|
||||||
|
static APIType get_current_api();
|
||||||
static void cleanup();
|
static void cleanup();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -175,7 +175,9 @@ int Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p
|
|||||||
} break;
|
} break;
|
||||||
case MODE_ZSTD: {
|
case MODE_ZSTD: {
|
||||||
ZSTD_DCtx *dctx = ZSTD_createDCtx();
|
ZSTD_DCtx *dctx = ZSTD_createDCtx();
|
||||||
if (zstd_long_distance_matching) ZSTD_DCtx_setMaxWindowSize(dctx, (size_t)1 << zstd_window_log_size);
|
if (zstd_long_distance_matching) {
|
||||||
|
ZSTD_DCtx_setParameter(dctx, ZSTD_d_windowLogMax, zstd_window_log_size);
|
||||||
|
}
|
||||||
int ret = ZSTD_decompressDCtx(dctx, p_dst, p_dst_max_size, p_src, p_src_size);
|
int ret = ZSTD_decompressDCtx(dctx, p_dst, p_dst_max_size, p_src, p_src_size);
|
||||||
ZSTD_freeDCtx(dctx);
|
ZSTD_freeDCtx(dctx);
|
||||||
return ret;
|
return ret;
|
||||||
@ -189,4 +191,4 @@ int Compression::zlib_level = Z_DEFAULT_COMPRESSION;
|
|||||||
int Compression::gzip_level = Z_DEFAULT_COMPRESSION;
|
int Compression::gzip_level = Z_DEFAULT_COMPRESSION;
|
||||||
int Compression::zstd_level = 3;
|
int Compression::zstd_level = 3;
|
||||||
bool Compression::zstd_long_distance_matching = false;
|
bool Compression::zstd_long_distance_matching = false;
|
||||||
int Compression::zstd_window_log_size = 27;
|
int Compression::zstd_window_log_size = 27; // ZSTD_WINDOWLOG_LIMIT_DEFAULT
|
||||||
|
|||||||
@ -272,7 +272,7 @@ int FileAccessPack::get_buffer(uint8_t *p_dst, int p_length) const {
|
|||||||
if (eof)
|
if (eof)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int64_t to_read = p_length;
|
uint64_t to_read = p_length;
|
||||||
if (to_read + pos > pf.size) {
|
if (to_read + pos > pf.size) {
|
||||||
eof = true;
|
eof = true;
|
||||||
to_read = int64_t(pf.size) - int64_t(pos);
|
to_read = int64_t(pf.size) - int64_t(pos);
|
||||||
|
|||||||
@ -794,7 +794,7 @@ static void _encode_string(const String &p_string, uint8_t *&buf, int &r_len) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_object_as_id) {
|
Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_full_objects) {
|
||||||
|
|
||||||
uint8_t *buf = r_buffer;
|
uint8_t *buf = r_buffer;
|
||||||
|
|
||||||
@ -819,7 +819,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
|||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case Variant::OBJECT: {
|
case Variant::OBJECT: {
|
||||||
if (p_object_as_id) {
|
if (!p_full_objects) {
|
||||||
flags |= ENCODE_FLAG_OBJECT_AS_ID;
|
flags |= ENCODE_FLAG_OBJECT_AS_ID;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@ -1086,22 +1086,8 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
|||||||
} break;
|
} break;
|
||||||
case Variant::OBJECT: {
|
case Variant::OBJECT: {
|
||||||
|
|
||||||
if (p_object_as_id) {
|
if (p_full_objects) {
|
||||||
|
|
||||||
if (buf) {
|
|
||||||
|
|
||||||
Object *obj = p_variant;
|
|
||||||
ObjectID id = 0;
|
|
||||||
if (obj && ObjectDB::instance_validate(obj)) {
|
|
||||||
id = obj->get_instance_id();
|
|
||||||
}
|
|
||||||
|
|
||||||
encode_uint64(id, buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
r_len += 8;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Object *obj = p_variant;
|
Object *obj = p_variant;
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
if (buf) {
|
if (buf) {
|
||||||
@ -1139,7 +1125,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
|||||||
_encode_string(E->get().name, buf, r_len);
|
_encode_string(E->get().name, buf, r_len);
|
||||||
|
|
||||||
int len;
|
int len;
|
||||||
Error err = encode_variant(obj->get(E->get().name), buf, len, p_object_as_id);
|
Error err = encode_variant(obj->get(E->get().name), buf, len, p_full_objects);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
ERR_FAIL_COND_V(len % 4, ERR_BUG);
|
ERR_FAIL_COND_V(len % 4, ERR_BUG);
|
||||||
@ -1148,6 +1134,19 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
|||||||
buf += len;
|
buf += len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (buf) {
|
||||||
|
|
||||||
|
Object *obj = p_variant;
|
||||||
|
ObjectID id = 0;
|
||||||
|
if (obj && ObjectDB::instance_validate(obj)) {
|
||||||
|
id = obj->get_instance_id();
|
||||||
|
}
|
||||||
|
|
||||||
|
encode_uint64(id, buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
r_len += 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
@ -1180,14 +1179,14 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
|||||||
r_len++; //pad
|
r_len++; //pad
|
||||||
*/
|
*/
|
||||||
int len;
|
int len;
|
||||||
encode_variant(E->get(), buf, len, p_object_as_id);
|
encode_variant(E->get(), buf, len, p_full_objects);
|
||||||
ERR_FAIL_COND_V(len % 4, ERR_BUG);
|
ERR_FAIL_COND_V(len % 4, ERR_BUG);
|
||||||
r_len += len;
|
r_len += len;
|
||||||
if (buf)
|
if (buf)
|
||||||
buf += len;
|
buf += len;
|
||||||
Variant *v = d.getptr(E->get());
|
Variant *v = d.getptr(E->get());
|
||||||
ERR_FAIL_COND_V(!v, ERR_BUG);
|
ERR_FAIL_COND_V(!v, ERR_BUG);
|
||||||
encode_variant(*v, buf, len, p_object_as_id);
|
encode_variant(*v, buf, len, p_full_objects);
|
||||||
ERR_FAIL_COND_V(len % 4, ERR_BUG);
|
ERR_FAIL_COND_V(len % 4, ERR_BUG);
|
||||||
r_len += len;
|
r_len += len;
|
||||||
if (buf)
|
if (buf)
|
||||||
@ -1209,7 +1208,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
|||||||
for (int i = 0; i < v.size(); i++) {
|
for (int i = 0; i < v.size(); i++) {
|
||||||
|
|
||||||
int len;
|
int len;
|
||||||
encode_variant(v.get(i), buf, len, p_object_as_id);
|
encode_variant(v.get(i), buf, len, p_full_objects);
|
||||||
ERR_FAIL_COND_V(len % 4, ERR_BUG);
|
ERR_FAIL_COND_V(len % 4, ERR_BUG);
|
||||||
r_len += len;
|
r_len += len;
|
||||||
if (buf)
|
if (buf)
|
||||||
|
|||||||
@ -199,7 +199,7 @@ public:
|
|||||||
EncodedObjectAsID();
|
EncodedObjectAsID();
|
||||||
};
|
};
|
||||||
|
|
||||||
Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int *r_len = NULL, bool p_allow_objects = true);
|
Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int *r_len = NULL, bool p_allow_objects = false);
|
||||||
Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_object_as_id = false);
|
Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_full_objects = false);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -299,7 +299,7 @@ void MultiplayerAPI::_process_rpc(Node *p_node, const StringName &p_name, int p_
|
|||||||
ERR_FAIL_COND(p_offset >= p_packet_len);
|
ERR_FAIL_COND(p_offset >= p_packet_len);
|
||||||
|
|
||||||
int vlen;
|
int vlen;
|
||||||
Error err = decode_variant(args.write[i], &p_packet[p_offset], p_packet_len - p_offset, &vlen);
|
Error err = decode_variant(args.write[i], &p_packet[p_offset], p_packet_len - p_offset, &vlen, allow_object_decoding || network_peer->is_object_decoding_allowed());
|
||||||
ERR_EXPLAIN("Invalid packet received. Unable to decode RPC argument.");
|
ERR_EXPLAIN("Invalid packet received. Unable to decode RPC argument.");
|
||||||
ERR_FAIL_COND(err != OK);
|
ERR_FAIL_COND(err != OK);
|
||||||
|
|
||||||
@ -335,7 +335,7 @@ void MultiplayerAPI::_process_rset(Node *p_node, const StringName &p_name, int p
|
|||||||
ERR_FAIL_COND(!_can_call_mode(p_node, rset_mode, p_from));
|
ERR_FAIL_COND(!_can_call_mode(p_node, rset_mode, p_from));
|
||||||
|
|
||||||
Variant value;
|
Variant value;
|
||||||
Error err = decode_variant(value, &p_packet[p_offset], p_packet_len - p_offset);
|
Error err = decode_variant(value, &p_packet[p_offset], p_packet_len - p_offset, NULL, allow_object_decoding || network_peer->is_object_decoding_allowed());
|
||||||
|
|
||||||
ERR_EXPLAIN("Invalid packet received. Unable to decode RSET value.");
|
ERR_EXPLAIN("Invalid packet received. Unable to decode RSET value.");
|
||||||
ERR_FAIL_COND(err != OK);
|
ERR_FAIL_COND(err != OK);
|
||||||
@ -526,11 +526,11 @@ void MultiplayerAPI::_send_rpc(Node *p_from, int p_to, bool p_unreliable, bool p
|
|||||||
|
|
||||||
if (p_set) {
|
if (p_set) {
|
||||||
// Set argument.
|
// Set argument.
|
||||||
Error err = encode_variant(*p_arg[0], NULL, len);
|
Error err = encode_variant(*p_arg[0], NULL, len, allow_object_decoding || network_peer->is_object_decoding_allowed());
|
||||||
ERR_EXPLAIN("Unable to encode RSET value. THIS IS LIKELY A BUG IN THE ENGINE!");
|
ERR_EXPLAIN("Unable to encode RSET value. THIS IS LIKELY A BUG IN THE ENGINE!");
|
||||||
ERR_FAIL_COND(err != OK);
|
ERR_FAIL_COND(err != OK);
|
||||||
MAKE_ROOM(ofs + len);
|
MAKE_ROOM(ofs + len);
|
||||||
encode_variant(*p_arg[0], &(packet_cache.write[ofs]), len);
|
encode_variant(*p_arg[0], &(packet_cache.write[ofs]), len, allow_object_decoding || network_peer->is_object_decoding_allowed());
|
||||||
ofs += len;
|
ofs += len;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -539,11 +539,11 @@ void MultiplayerAPI::_send_rpc(Node *p_from, int p_to, bool p_unreliable, bool p
|
|||||||
packet_cache.write[ofs] = p_argcount;
|
packet_cache.write[ofs] = p_argcount;
|
||||||
ofs += 1;
|
ofs += 1;
|
||||||
for (int i = 0; i < p_argcount; i++) {
|
for (int i = 0; i < p_argcount; i++) {
|
||||||
Error err = encode_variant(*p_arg[i], NULL, len);
|
Error err = encode_variant(*p_arg[i], NULL, len, allow_object_decoding || network_peer->is_object_decoding_allowed());
|
||||||
ERR_EXPLAIN("Unable to encode RPC argument. THIS IS LIKELY A BUG IN THE ENGINE!");
|
ERR_EXPLAIN("Unable to encode RPC argument. THIS IS LIKELY A BUG IN THE ENGINE!");
|
||||||
ERR_FAIL_COND(err != OK);
|
ERR_FAIL_COND(err != OK);
|
||||||
MAKE_ROOM(ofs + len);
|
MAKE_ROOM(ofs + len);
|
||||||
encode_variant(*p_arg[i], &(packet_cache.write[ofs]), len);
|
encode_variant(*p_arg[i], &(packet_cache.write[ofs]), len, allow_object_decoding || network_peer->is_object_decoding_allowed());
|
||||||
ofs += len;
|
ofs += len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -818,6 +818,16 @@ Vector<int> MultiplayerAPI::get_network_connected_peers() const {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MultiplayerAPI::set_allow_object_decoding(bool p_enable) {
|
||||||
|
|
||||||
|
allow_object_decoding = p_enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MultiplayerAPI::is_object_decoding_allowed() const {
|
||||||
|
|
||||||
|
return allow_object_decoding;
|
||||||
|
}
|
||||||
|
|
||||||
void MultiplayerAPI::_bind_methods() {
|
void MultiplayerAPI::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("set_root_node", "node"), &MultiplayerAPI::set_root_node);
|
ClassDB::bind_method(D_METHOD("set_root_node", "node"), &MultiplayerAPI::set_root_node);
|
||||||
ClassDB::bind_method(D_METHOD("send_bytes", "bytes", "id", "mode"), &MultiplayerAPI::send_bytes, DEFVAL(NetworkedMultiplayerPeer::TARGET_PEER_BROADCAST), DEFVAL(NetworkedMultiplayerPeer::TRANSFER_MODE_RELIABLE));
|
ClassDB::bind_method(D_METHOD("send_bytes", "bytes", "id", "mode"), &MultiplayerAPI::send_bytes, DEFVAL(NetworkedMultiplayerPeer::TARGET_PEER_BROADCAST), DEFVAL(NetworkedMultiplayerPeer::TRANSFER_MODE_RELIABLE));
|
||||||
@ -838,6 +848,10 @@ void MultiplayerAPI::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_network_connected_peers"), &MultiplayerAPI::get_network_connected_peers);
|
ClassDB::bind_method(D_METHOD("get_network_connected_peers"), &MultiplayerAPI::get_network_connected_peers);
|
||||||
ClassDB::bind_method(D_METHOD("set_refuse_new_network_connections", "refuse"), &MultiplayerAPI::set_refuse_new_network_connections);
|
ClassDB::bind_method(D_METHOD("set_refuse_new_network_connections", "refuse"), &MultiplayerAPI::set_refuse_new_network_connections);
|
||||||
ClassDB::bind_method(D_METHOD("is_refusing_new_network_connections"), &MultiplayerAPI::is_refusing_new_network_connections);
|
ClassDB::bind_method(D_METHOD("is_refusing_new_network_connections"), &MultiplayerAPI::is_refusing_new_network_connections);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_allow_object_decoding", "enable"), &MultiplayerAPI::set_allow_object_decoding);
|
||||||
|
ClassDB::bind_method(D_METHOD("is_object_decoding_allowed"), &MultiplayerAPI::is_object_decoding_allowed);
|
||||||
|
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_object_decoding"), "set_allow_object_decoding", "is_object_decoding_allowed");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "refuse_new_network_connections"), "set_refuse_new_network_connections", "is_refusing_new_network_connections");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "refuse_new_network_connections"), "set_refuse_new_network_connections", "is_refusing_new_network_connections");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "network_peer", PROPERTY_HINT_RESOURCE_TYPE, "NetworkedMultiplayerPeer", 0), "set_network_peer", "get_network_peer");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "network_peer", PROPERTY_HINT_RESOURCE_TYPE, "NetworkedMultiplayerPeer", 0), "set_network_peer", "get_network_peer");
|
||||||
|
|
||||||
@ -859,7 +873,8 @@ void MultiplayerAPI::_bind_methods() {
|
|||||||
BIND_ENUM_CONSTANT(RPC_MODE_PUPPETSYNC);
|
BIND_ENUM_CONSTANT(RPC_MODE_PUPPETSYNC);
|
||||||
}
|
}
|
||||||
|
|
||||||
MultiplayerAPI::MultiplayerAPI() {
|
MultiplayerAPI::MultiplayerAPI() :
|
||||||
|
allow_object_decoding(false) {
|
||||||
rpc_sender_id = 0;
|
rpc_sender_id = 0;
|
||||||
root_node = NULL;
|
root_node = NULL;
|
||||||
clear();
|
clear();
|
||||||
|
|||||||
@ -63,6 +63,7 @@ private:
|
|||||||
int last_send_cache_id;
|
int last_send_cache_id;
|
||||||
Vector<uint8_t> packet_cache;
|
Vector<uint8_t> packet_cache;
|
||||||
Node *root_node;
|
Node *root_node;
|
||||||
|
bool allow_object_decoding;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
@ -126,6 +127,9 @@ public:
|
|||||||
void set_refuse_new_network_connections(bool p_refuse);
|
void set_refuse_new_network_connections(bool p_refuse);
|
||||||
bool is_refusing_new_network_connections() const;
|
bool is_refusing_new_network_connections() const;
|
||||||
|
|
||||||
|
void set_allow_object_decoding(bool p_enable);
|
||||||
|
bool is_object_decoding_allowed() const;
|
||||||
|
|
||||||
MultiplayerAPI();
|
MultiplayerAPI();
|
||||||
~MultiplayerAPI();
|
~MultiplayerAPI();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -79,7 +79,7 @@ Error PacketPeer::put_packet_buffer(const PoolVector<uint8_t> &p_buffer) {
|
|||||||
return put_packet(&r[0], len);
|
return put_packet(&r[0], len);
|
||||||
}
|
}
|
||||||
|
|
||||||
Error PacketPeer::get_var(Variant &r_variant) {
|
Error PacketPeer::get_var(Variant &r_variant, bool p_allow_objects) {
|
||||||
|
|
||||||
const uint8_t *buffer;
|
const uint8_t *buffer;
|
||||||
int buffer_size;
|
int buffer_size;
|
||||||
@ -87,13 +87,13 @@ Error PacketPeer::get_var(Variant &r_variant) {
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
return decode_variant(r_variant, buffer, buffer_size, NULL, allow_object_decoding);
|
return decode_variant(r_variant, buffer, buffer_size, NULL, p_allow_objects || allow_object_decoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
Error PacketPeer::put_var(const Variant &p_packet) {
|
Error PacketPeer::put_var(const Variant &p_packet, bool p_full_objects) {
|
||||||
|
|
||||||
int len;
|
int len;
|
||||||
Error err = encode_variant(p_packet, NULL, len, !allow_object_decoding); // compute len first
|
Error err = encode_variant(p_packet, NULL, len, p_full_objects || allow_object_decoding); // compute len first
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
@ -102,15 +102,15 @@ Error PacketPeer::put_var(const Variant &p_packet) {
|
|||||||
|
|
||||||
uint8_t *buf = (uint8_t *)alloca(len);
|
uint8_t *buf = (uint8_t *)alloca(len);
|
||||||
ERR_FAIL_COND_V(!buf, ERR_OUT_OF_MEMORY);
|
ERR_FAIL_COND_V(!buf, ERR_OUT_OF_MEMORY);
|
||||||
err = encode_variant(p_packet, buf, len, !allow_object_decoding);
|
err = encode_variant(p_packet, buf, len, p_full_objects || allow_object_decoding);
|
||||||
ERR_FAIL_COND_V(err, err);
|
ERR_FAIL_COND_V(err, err);
|
||||||
|
|
||||||
return put_packet(buf, len);
|
return put_packet(buf, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant PacketPeer::_bnd_get_var() {
|
Variant PacketPeer::_bnd_get_var(bool p_allow_objects) {
|
||||||
Variant var;
|
Variant var;
|
||||||
get_var(var);
|
get_var(var, p_allow_objects);
|
||||||
|
|
||||||
return var;
|
return var;
|
||||||
};
|
};
|
||||||
@ -132,8 +132,8 @@ Error PacketPeer::_get_packet_error() const {
|
|||||||
|
|
||||||
void PacketPeer::_bind_methods() {
|
void PacketPeer::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_var"), &PacketPeer::_bnd_get_var);
|
ClassDB::bind_method(D_METHOD("get_var", "allow_objects"), &PacketPeer::_bnd_get_var, DEFVAL(false));
|
||||||
ClassDB::bind_method(D_METHOD("put_var", "var"), &PacketPeer::put_var);
|
ClassDB::bind_method(D_METHOD("put_var", "var", "full_objects"), &PacketPeer::put_var, DEFVAL(false));
|
||||||
ClassDB::bind_method(D_METHOD("get_packet"), &PacketPeer::_get_packet);
|
ClassDB::bind_method(D_METHOD("get_packet"), &PacketPeer::_get_packet);
|
||||||
ClassDB::bind_method(D_METHOD("put_packet", "buffer"), &PacketPeer::_put_packet);
|
ClassDB::bind_method(D_METHOD("put_packet", "buffer"), &PacketPeer::_put_packet);
|
||||||
ClassDB::bind_method(D_METHOD("get_packet_error"), &PacketPeer::_get_packet_error);
|
ClassDB::bind_method(D_METHOD("get_packet_error"), &PacketPeer::_get_packet_error);
|
||||||
|
|||||||
@ -39,8 +39,7 @@ class PacketPeer : public Reference {
|
|||||||
|
|
||||||
GDCLASS(PacketPeer, Reference);
|
GDCLASS(PacketPeer, Reference);
|
||||||
|
|
||||||
Variant _bnd_get_var();
|
Variant _bnd_get_var(bool p_allow_objects = false);
|
||||||
void _bnd_put_var(const Variant &p_var);
|
|
||||||
|
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
@ -64,8 +63,8 @@ public:
|
|||||||
virtual Error get_packet_buffer(PoolVector<uint8_t> &r_buffer);
|
virtual Error get_packet_buffer(PoolVector<uint8_t> &r_buffer);
|
||||||
virtual Error put_packet_buffer(const PoolVector<uint8_t> &p_buffer);
|
virtual Error put_packet_buffer(const PoolVector<uint8_t> &p_buffer);
|
||||||
|
|
||||||
virtual Error get_var(Variant &r_variant);
|
virtual Error get_var(Variant &r_variant, bool p_allow_objects = false);
|
||||||
virtual Error put_var(const Variant &p_packet);
|
virtual Error put_var(const Variant &p_packet, bool p_full_objects = false);
|
||||||
|
|
||||||
void set_allow_object_decoding(bool p_enable);
|
void set_allow_object_decoding(bool p_enable);
|
||||||
bool is_object_decoding_allowed() const;
|
bool is_object_decoding_allowed() const;
|
||||||
|
|||||||
@ -221,14 +221,14 @@ void StreamPeer::put_utf8_string(const String &p_string) {
|
|||||||
put_u32(cs.length());
|
put_u32(cs.length());
|
||||||
put_data((const uint8_t *)cs.get_data(), cs.length());
|
put_data((const uint8_t *)cs.get_data(), cs.length());
|
||||||
}
|
}
|
||||||
void StreamPeer::put_var(const Variant &p_variant) {
|
void StreamPeer::put_var(const Variant &p_variant, bool p_full_objects) {
|
||||||
|
|
||||||
int len = 0;
|
int len = 0;
|
||||||
Vector<uint8_t> buf;
|
Vector<uint8_t> buf;
|
||||||
encode_variant(p_variant, NULL, len);
|
encode_variant(p_variant, NULL, len, p_full_objects);
|
||||||
buf.resize(len);
|
buf.resize(len);
|
||||||
put_32(len);
|
put_32(len);
|
||||||
encode_variant(p_variant, buf.ptrw(), len);
|
encode_variant(p_variant, buf.ptrw(), len, p_full_objects);
|
||||||
put_data(buf.ptr(), buf.size());
|
put_data(buf.ptr(), buf.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -359,7 +359,7 @@ String StreamPeer::get_utf8_string(int p_bytes) {
|
|||||||
ret.parse_utf8((const char *)buf.ptr(), buf.size());
|
ret.parse_utf8((const char *)buf.ptr(), buf.size());
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
Variant StreamPeer::get_var() {
|
Variant StreamPeer::get_var(bool p_allow_objects) {
|
||||||
|
|
||||||
int len = get_32();
|
int len = get_32();
|
||||||
Vector<uint8_t> var;
|
Vector<uint8_t> var;
|
||||||
@ -369,7 +369,7 @@ Variant StreamPeer::get_var() {
|
|||||||
ERR_FAIL_COND_V(err != OK, Variant());
|
ERR_FAIL_COND_V(err != OK, Variant());
|
||||||
|
|
||||||
Variant ret;
|
Variant ret;
|
||||||
decode_variant(ret, var.ptr(), len);
|
decode_variant(ret, var.ptr(), len, NULL, p_allow_objects);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -398,7 +398,7 @@ void StreamPeer::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("put_double", "value"), &StreamPeer::put_double);
|
ClassDB::bind_method(D_METHOD("put_double", "value"), &StreamPeer::put_double);
|
||||||
ClassDB::bind_method(D_METHOD("put_string", "value"), &StreamPeer::put_string);
|
ClassDB::bind_method(D_METHOD("put_string", "value"), &StreamPeer::put_string);
|
||||||
ClassDB::bind_method(D_METHOD("put_utf8_string", "value"), &StreamPeer::put_utf8_string);
|
ClassDB::bind_method(D_METHOD("put_utf8_string", "value"), &StreamPeer::put_utf8_string);
|
||||||
ClassDB::bind_method(D_METHOD("put_var", "value"), &StreamPeer::put_var);
|
ClassDB::bind_method(D_METHOD("put_var", "value", "full_objects"), &StreamPeer::put_var, DEFVAL(false));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_8"), &StreamPeer::get_8);
|
ClassDB::bind_method(D_METHOD("get_8"), &StreamPeer::get_8);
|
||||||
ClassDB::bind_method(D_METHOD("get_u8"), &StreamPeer::get_u8);
|
ClassDB::bind_method(D_METHOD("get_u8"), &StreamPeer::get_u8);
|
||||||
@ -412,7 +412,7 @@ void StreamPeer::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_double"), &StreamPeer::get_double);
|
ClassDB::bind_method(D_METHOD("get_double"), &StreamPeer::get_double);
|
||||||
ClassDB::bind_method(D_METHOD("get_string", "bytes"), &StreamPeer::get_string, DEFVAL(-1));
|
ClassDB::bind_method(D_METHOD("get_string", "bytes"), &StreamPeer::get_string, DEFVAL(-1));
|
||||||
ClassDB::bind_method(D_METHOD("get_utf8_string", "bytes"), &StreamPeer::get_utf8_string, DEFVAL(-1));
|
ClassDB::bind_method(D_METHOD("get_utf8_string", "bytes"), &StreamPeer::get_utf8_string, DEFVAL(-1));
|
||||||
ClassDB::bind_method(D_METHOD("get_var"), &StreamPeer::get_var);
|
ClassDB::bind_method(D_METHOD("get_var", "allow_objects"), &StreamPeer::get_var, DEFVAL(false));
|
||||||
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "big_endian"), "set_big_endian", "is_big_endian_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "big_endian"), "set_big_endian", "is_big_endian_enabled");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,7 +73,7 @@ public:
|
|||||||
void put_double(double p_val);
|
void put_double(double p_val);
|
||||||
void put_string(const String &p_string);
|
void put_string(const String &p_string);
|
||||||
void put_utf8_string(const String &p_string);
|
void put_utf8_string(const String &p_string);
|
||||||
void put_var(const Variant &p_variant);
|
void put_var(const Variant &p_variant, bool p_full_objects = false);
|
||||||
|
|
||||||
uint8_t get_u8();
|
uint8_t get_u8();
|
||||||
int8_t get_8();
|
int8_t get_8();
|
||||||
@ -87,7 +87,7 @@ public:
|
|||||||
double get_double();
|
double get_double();
|
||||||
String get_string(int p_bytes = -1);
|
String get_string(int p_bytes = -1);
|
||||||
String get_utf8_string(int p_bytes = -1);
|
String get_utf8_string(int p_bytes = -1);
|
||||||
Variant get_var();
|
Variant get_var(bool p_allow_objects = false);
|
||||||
|
|
||||||
StreamPeer() { big_endian = false; }
|
StreamPeer() { big_endian = false; }
|
||||||
};
|
};
|
||||||
|
|||||||
@ -55,6 +55,7 @@ void AStar::add_point(int p_id, const Vector3 &p_pos, real_t p_weight_scale) {
|
|||||||
pt->weight_scale = p_weight_scale;
|
pt->weight_scale = p_weight_scale;
|
||||||
pt->prev_point = NULL;
|
pt->prev_point = NULL;
|
||||||
pt->last_pass = 0;
|
pt->last_pass = 0;
|
||||||
|
pt->enabled = true;
|
||||||
points[p_id] = pt;
|
points[p_id] = pt;
|
||||||
} else {
|
} else {
|
||||||
points[p_id]->pos = p_pos;
|
points[p_id]->pos = p_pos;
|
||||||
@ -242,6 +243,9 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
|
|||||||
|
|
||||||
pass++;
|
pass++;
|
||||||
|
|
||||||
|
if (!end_point->enabled)
|
||||||
|
return false;
|
||||||
|
|
||||||
SelfList<Point>::List open_list;
|
SelfList<Point>::List open_list;
|
||||||
|
|
||||||
bool found_route = false;
|
bool found_route = false;
|
||||||
@ -249,6 +253,10 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
|
|||||||
for (Set<Point *>::Element *E = begin_point->neighbours.front(); E; E = E->next()) {
|
for (Set<Point *>::Element *E = begin_point->neighbours.front(); E; E = E->next()) {
|
||||||
|
|
||||||
Point *n = E->get();
|
Point *n = E->get();
|
||||||
|
|
||||||
|
if (!n->enabled)
|
||||||
|
continue;
|
||||||
|
|
||||||
n->prev_point = begin_point;
|
n->prev_point = begin_point;
|
||||||
n->distance = _compute_cost(begin_point->id, n->id) * n->weight_scale;
|
n->distance = _compute_cost(begin_point->id, n->id) * n->weight_scale;
|
||||||
n->last_pass = pass;
|
n->last_pass = pass;
|
||||||
@ -290,6 +298,9 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
|
|||||||
|
|
||||||
Point *e = E->get();
|
Point *e = E->get();
|
||||||
|
|
||||||
|
if (!e->enabled)
|
||||||
|
continue;
|
||||||
|
|
||||||
real_t distance = _compute_cost(p->id, e->id) * e->weight_scale + p->distance;
|
real_t distance = _compute_cost(p->id, e->id) * e->weight_scale + p->distance;
|
||||||
|
|
||||||
if (e->last_pass == pass) {
|
if (e->last_pass == pass) {
|
||||||
@ -438,6 +449,14 @@ PoolVector<int> AStar::get_id_path(int p_from_id, int p_to_id) {
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AStar::set_point_disabled(int p_id, bool p_disabled) {
|
||||||
|
points[p_id]->enabled = !p_disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AStar::is_point_disabled(int p_id) const {
|
||||||
|
return !points[p_id]->enabled;
|
||||||
|
}
|
||||||
|
|
||||||
void AStar::_bind_methods() {
|
void AStar::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_available_point_id"), &AStar::get_available_point_id);
|
ClassDB::bind_method(D_METHOD("get_available_point_id"), &AStar::get_available_point_id);
|
||||||
@ -450,6 +469,9 @@ void AStar::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("has_point", "id"), &AStar::has_point);
|
ClassDB::bind_method(D_METHOD("has_point", "id"), &AStar::has_point);
|
||||||
ClassDB::bind_method(D_METHOD("get_points"), &AStar::get_points);
|
ClassDB::bind_method(D_METHOD("get_points"), &AStar::get_points);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("set_point_disabled", "id", "disabled"), &AStar::set_point_disabled, DEFVAL(true));
|
||||||
|
ClassDB::bind_method(D_METHOD("is_point_disabled", "id"), &AStar::is_point_disabled);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_point_connections", "id"), &AStar::get_point_connections);
|
ClassDB::bind_method(D_METHOD("get_point_connections", "id"), &AStar::get_point_connections);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("connect_points", "id", "to_id", "bidirectional"), &AStar::connect_points, DEFVAL(true));
|
ClassDB::bind_method(D_METHOD("connect_points", "id", "to_id", "bidirectional"), &AStar::connect_points, DEFVAL(true));
|
||||||
|
|||||||
@ -54,6 +54,7 @@ class AStar : public Reference {
|
|||||||
Vector3 pos;
|
Vector3 pos;
|
||||||
real_t weight_scale;
|
real_t weight_scale;
|
||||||
uint64_t last_pass;
|
uint64_t last_pass;
|
||||||
|
bool enabled;
|
||||||
|
|
||||||
Set<Point *> neighbours;
|
Set<Point *> neighbours;
|
||||||
|
|
||||||
@ -114,6 +115,9 @@ public:
|
|||||||
PoolVector<int> get_point_connections(int p_id);
|
PoolVector<int> get_point_connections(int p_id);
|
||||||
Array get_points();
|
Array get_points();
|
||||||
|
|
||||||
|
void set_point_disabled(int p_id, bool p_disabled = true);
|
||||||
|
bool is_point_disabled(int p_id) const;
|
||||||
|
|
||||||
void connect_points(int p_id, int p_with_id, bool bidirectional = true);
|
void connect_points(int p_id, int p_with_id, bool bidirectional = true);
|
||||||
void disconnect_points(int p_id, int p_with_id);
|
void disconnect_points(int p_id, int p_with_id);
|
||||||
bool are_points_connected(int p_id, int p_with_id) const;
|
bool are_points_connected(int p_id, int p_with_id) const;
|
||||||
|
|||||||
@ -31,6 +31,7 @@
|
|||||||
#ifndef AUDIOFRAME_H
|
#ifndef AUDIOFRAME_H
|
||||||
#define AUDIOFRAME_H
|
#define AUDIOFRAME_H
|
||||||
|
|
||||||
|
#include "core/math/vector2.h"
|
||||||
#include "core/typedefs.h"
|
#include "core/typedefs.h"
|
||||||
|
|
||||||
static inline float undenormalise(volatile float f) {
|
static inline float undenormalise(volatile float f) {
|
||||||
@ -122,6 +123,20 @@ struct AudioFrame {
|
|||||||
r = p_frame.r;
|
r = p_frame.r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ALWAYS_INLINE_ AudioFrame operator=(const AudioFrame &p_frame) {
|
||||||
|
l = p_frame.l;
|
||||||
|
r = p_frame.r;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
_ALWAYS_INLINE_ operator Vector2() const {
|
||||||
|
return Vector2(l, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
_ALWAYS_INLINE_ AudioFrame(const Vector2 &p_v2) {
|
||||||
|
l = p_v2.x;
|
||||||
|
r = p_v2.y;
|
||||||
|
}
|
||||||
_ALWAYS_INLINE_ AudioFrame() {}
|
_ALWAYS_INLINE_ AudioFrame() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -557,11 +557,23 @@ void Basis::set_euler_yxz(const Vector3 &p_euler) {
|
|||||||
*this = ymat * xmat * zmat;
|
*this = ymat * xmat * zmat;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Basis::is_equal_approx(const Basis &a, const Basis &b) const {
|
bool Basis::is_equal_approx(const Basis &a, const Basis &b,real_t p_epsilon) const {
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
for (int j = 0; j < 3; j++) {
|
for (int j = 0; j < 3; j++) {
|
||||||
if (!Math::is_equal_approx_ratio(a.elements[i][j], b.elements[i][j], UNIT_EPSILON))
|
if (!Math::is_equal_approx(a.elements[i][j], b.elements[i][j], p_epsilon))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Basis::is_equal_approx_ratio(const Basis &a, const Basis &b,real_t p_epsilon) const {
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
for (int j = 0; j < 3; j++) {
|
||||||
|
if (!Math::is_equal_approx_ratio(a.elements[i][j], b.elements[i][j], p_epsilon))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -605,12 +617,14 @@ Basis::operator String() const {
|
|||||||
|
|
||||||
Quat Basis::get_quat() const {
|
Quat Basis::get_quat() const {
|
||||||
|
|
||||||
|
#ifdef MATH_CHECKS
|
||||||
|
if (!is_rotation()) {
|
||||||
|
ERR_EXPLAIN("Basis must be normalized in order to be casted to a Quaternion. Use get_rotation_quat() or call orthonormalized() instead.");
|
||||||
|
ERR_FAIL_V(Quat());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
/* Allow getting a quaternion from an unnormalized transform */
|
/* Allow getting a quaternion from an unnormalized transform */
|
||||||
Basis m = *this;
|
Basis m = *this;
|
||||||
m.elements[0].normalize();
|
|
||||||
m.elements[1].normalize();
|
|
||||||
m.elements[2].normalize();
|
|
||||||
|
|
||||||
real_t trace = m.elements[0][0] + m.elements[1][1] + m.elements[2][2];
|
real_t trace = m.elements[0][0] + m.elements[1][1] + m.elements[2][2];
|
||||||
real_t temp[4];
|
real_t temp[4];
|
||||||
|
|
||||||
|
|||||||
@ -133,7 +133,8 @@ public:
|
|||||||
return elements[0][2] * v[0] + elements[1][2] * v[1] + elements[2][2] * v[2];
|
return elements[0][2] * v[0] + elements[1][2] * v[1] + elements[2][2] * v[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_equal_approx(const Basis &a, const Basis &b) const;
|
bool is_equal_approx(const Basis &a, const Basis &b, real_t p_epsilon=CMP_EPSILON) const;
|
||||||
|
bool is_equal_approx_ratio(const Basis &a, const Basis &b, real_t p_epsilon=UNIT_EPSILON) const;
|
||||||
|
|
||||||
bool operator==(const Basis &p_matrix) const;
|
bool operator==(const Basis &p_matrix) const;
|
||||||
bool operator!=(const Basis &p_matrix) const;
|
bool operator!=(const Basis &p_matrix) const;
|
||||||
|
|||||||
@ -68,6 +68,7 @@ const char *Expression::func_name[Expression::FUNC_MAX] = {
|
|||||||
"lerp",
|
"lerp",
|
||||||
"inverse_lerp",
|
"inverse_lerp",
|
||||||
"range_lerp",
|
"range_lerp",
|
||||||
|
"smoothstep",
|
||||||
"dectime",
|
"dectime",
|
||||||
"randomize",
|
"randomize",
|
||||||
"randi",
|
"randi",
|
||||||
@ -164,10 +165,10 @@ int Expression::get_func_argument_count(BuiltinFunc p_func) {
|
|||||||
case TEXT_PRINTRAW:
|
case TEXT_PRINTRAW:
|
||||||
case VAR_TO_STR:
|
case VAR_TO_STR:
|
||||||
case STR_TO_VAR:
|
case STR_TO_VAR:
|
||||||
case VAR_TO_BYTES:
|
|
||||||
case BYTES_TO_VAR:
|
|
||||||
case TYPE_EXISTS:
|
case TYPE_EXISTS:
|
||||||
return 1;
|
return 1;
|
||||||
|
case VAR_TO_BYTES:
|
||||||
|
case BYTES_TO_VAR:
|
||||||
case MATH_ATAN2:
|
case MATH_ATAN2:
|
||||||
case MATH_FMOD:
|
case MATH_FMOD:
|
||||||
case MATH_FPOSMOD:
|
case MATH_FPOSMOD:
|
||||||
@ -185,6 +186,7 @@ int Expression::get_func_argument_count(BuiltinFunc p_func) {
|
|||||||
return 2;
|
return 2;
|
||||||
case MATH_LERP:
|
case MATH_LERP:
|
||||||
case MATH_INVERSE_LERP:
|
case MATH_INVERSE_LERP:
|
||||||
|
case MATH_SMOOTHSTEP:
|
||||||
case MATH_DECTIME:
|
case MATH_DECTIME:
|
||||||
case MATH_WRAP:
|
case MATH_WRAP:
|
||||||
case MATH_WRAPF:
|
case MATH_WRAPF:
|
||||||
@ -392,6 +394,12 @@ void Expression::exec_func(BuiltinFunc p_func, const Variant **p_inputs, Variant
|
|||||||
VALIDATE_ARG_NUM(4);
|
VALIDATE_ARG_NUM(4);
|
||||||
*r_return = Math::range_lerp((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2], (double)*p_inputs[3], (double)*p_inputs[4]);
|
*r_return = Math::range_lerp((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2], (double)*p_inputs[3], (double)*p_inputs[4]);
|
||||||
} break;
|
} break;
|
||||||
|
case MATH_SMOOTHSTEP: {
|
||||||
|
VALIDATE_ARG_NUM(0);
|
||||||
|
VALIDATE_ARG_NUM(1);
|
||||||
|
VALIDATE_ARG_NUM(2);
|
||||||
|
*r_return = Math::smoothstep((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
|
||||||
|
} break;
|
||||||
case MATH_DECTIME: {
|
case MATH_DECTIME: {
|
||||||
|
|
||||||
VALIDATE_ARG_NUM(0);
|
VALIDATE_ARG_NUM(0);
|
||||||
@ -696,8 +704,9 @@ void Expression::exec_func(BuiltinFunc p_func, const Variant **p_inputs, Variant
|
|||||||
case VAR_TO_BYTES: {
|
case VAR_TO_BYTES: {
|
||||||
|
|
||||||
PoolByteArray barr;
|
PoolByteArray barr;
|
||||||
|
bool full_objects = *p_inputs[1];
|
||||||
int len;
|
int len;
|
||||||
Error err = encode_variant(*p_inputs[0], NULL, len);
|
Error err = encode_variant(*p_inputs[0], NULL, len, full_objects);
|
||||||
if (err) {
|
if (err) {
|
||||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||||
r_error.argument = 0;
|
r_error.argument = 0;
|
||||||
@ -709,7 +718,7 @@ void Expression::exec_func(BuiltinFunc p_func, const Variant **p_inputs, Variant
|
|||||||
barr.resize(len);
|
barr.resize(len);
|
||||||
{
|
{
|
||||||
PoolByteArray::Write w = barr.write();
|
PoolByteArray::Write w = barr.write();
|
||||||
encode_variant(*p_inputs[0], w.ptr(), len);
|
encode_variant(*p_inputs[0], w.ptr(), len, full_objects);
|
||||||
}
|
}
|
||||||
*r_return = barr;
|
*r_return = barr;
|
||||||
} break;
|
} break;
|
||||||
@ -724,10 +733,11 @@ void Expression::exec_func(BuiltinFunc p_func, const Variant **p_inputs, Variant
|
|||||||
}
|
}
|
||||||
|
|
||||||
PoolByteArray varr = *p_inputs[0];
|
PoolByteArray varr = *p_inputs[0];
|
||||||
|
bool allow_objects = *p_inputs[1];
|
||||||
Variant ret;
|
Variant ret;
|
||||||
{
|
{
|
||||||
PoolByteArray::Read r = varr.read();
|
PoolByteArray::Read r = varr.read();
|
||||||
Error err = decode_variant(ret, r.ptr(), varr.size(), NULL);
|
Error err = decode_variant(ret, r.ptr(), varr.size(), NULL, allow_objects);
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
r_error_str = RTR("Not enough bytes for decoding bytes, or invalid format.");
|
r_error_str = RTR("Not enough bytes for decoding bytes, or invalid format.");
|
||||||
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||||
|
|||||||
@ -66,6 +66,7 @@ public:
|
|||||||
MATH_LERP,
|
MATH_LERP,
|
||||||
MATH_INVERSE_LERP,
|
MATH_INVERSE_LERP,
|
||||||
MATH_RANGE_LERP,
|
MATH_RANGE_LERP,
|
||||||
|
MATH_SMOOTHSTEP,
|
||||||
MATH_DECTIME,
|
MATH_DECTIME,
|
||||||
MATH_RANDOMIZE,
|
MATH_RANDOMIZE,
|
||||||
MATH_RAND,
|
MATH_RAND,
|
||||||
|
|||||||
@ -208,6 +208,17 @@ public:
|
|||||||
static _ALWAYS_INLINE_ double range_lerp(double p_value, double p_istart, double p_istop, double p_ostart, double p_ostop) { return Math::lerp(p_ostart, p_ostop, Math::inverse_lerp(p_istart, p_istop, p_value)); }
|
static _ALWAYS_INLINE_ double range_lerp(double p_value, double p_istart, double p_istop, double p_ostart, double p_ostop) { return Math::lerp(p_ostart, p_ostop, Math::inverse_lerp(p_istart, p_istop, p_value)); }
|
||||||
static _ALWAYS_INLINE_ float range_lerp(float p_value, float p_istart, float p_istop, float p_ostart, float p_ostop) { return Math::lerp(p_ostart, p_ostop, Math::inverse_lerp(p_istart, p_istop, p_value)); }
|
static _ALWAYS_INLINE_ float range_lerp(float p_value, float p_istart, float p_istop, float p_ostart, float p_ostop) { return Math::lerp(p_ostart, p_ostop, Math::inverse_lerp(p_istart, p_istop, p_value)); }
|
||||||
|
|
||||||
|
static _ALWAYS_INLINE_ double smoothstep(double p_from, double p_to, double p_weight) {
|
||||||
|
if (is_equal_approx(p_from, p_to)) return p_from;
|
||||||
|
double x = CLAMP((p_weight - p_from) / (p_to - p_from), 0.0, 1.0);
|
||||||
|
return x * x * (3.0 - 2.0 * x);
|
||||||
|
}
|
||||||
|
static _ALWAYS_INLINE_ float smoothstep(float p_from, float p_to, float p_weight) {
|
||||||
|
if (is_equal_approx(p_from, p_to)) return p_from;
|
||||||
|
float x = CLAMP((p_weight - p_from) / (p_to - p_from), 0.0f, 1.0f);
|
||||||
|
return x * x * (3.0f - 2.0f * x);
|
||||||
|
}
|
||||||
|
|
||||||
static _ALWAYS_INLINE_ double linear2db(double p_linear) { return Math::log(p_linear) * 8.6858896380650365530225783783321; }
|
static _ALWAYS_INLINE_ double linear2db(double p_linear) { return Math::log(p_linear) * 8.6858896380650365530225783783321; }
|
||||||
static _ALWAYS_INLINE_ float linear2db(float p_linear) { return Math::log(p_linear) * 8.6858896380650365530225783783321; }
|
static _ALWAYS_INLINE_ float linear2db(float p_linear) { return Math::log(p_linear) * 8.6858896380650365530225783783321; }
|
||||||
|
|
||||||
@ -249,11 +260,11 @@ public:
|
|||||||
static float random(float from, float to);
|
static float random(float from, float to);
|
||||||
static real_t random(int from, int to) { return (real_t)random((real_t)from, (real_t)to); }
|
static real_t random(int from, int to) { return (real_t)random((real_t)from, (real_t)to); }
|
||||||
|
|
||||||
static _ALWAYS_INLINE_ bool is_equal_approx_ratio(real_t a, real_t b, real_t epsilon = CMP_EPSILON) {
|
static _ALWAYS_INLINE_ bool is_equal_approx_ratio(real_t a, real_t b, real_t epsilon = CMP_EPSILON, real_t min_epsilon = CMP_EPSILON) {
|
||||||
// this is an approximate way to check that numbers are close, as a ratio of their average size
|
// this is an approximate way to check that numbers are close, as a ratio of their average size
|
||||||
// helps compare approximate numbers that may be very big or very small
|
// helps compare approximate numbers that may be very big or very small
|
||||||
real_t diff = abs(a - b);
|
real_t diff = abs(a - b);
|
||||||
if (diff == 0.0) {
|
if (diff == 0.0 || diff < min_epsilon) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
real_t avg_size = (abs(a) + abs(b)) / 2.0;
|
real_t avg_size = (abs(a) + abs(b)) / 2.0;
|
||||||
|
|||||||
@ -131,6 +131,14 @@ public:
|
|||||||
w(q.w) {
|
w(q.w) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Quat operator=(const Quat &q) {
|
||||||
|
x = q.x;
|
||||||
|
y = q.y;
|
||||||
|
z = q.z;
|
||||||
|
w = q.w;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
Quat(const Vector3 &v0, const Vector3 &v1) // shortest arc
|
Quat(const Vector3 &v0, const Vector3 &v1) // shortest arc
|
||||||
{
|
{
|
||||||
Vector3 c = v0.cross(v1);
|
Vector3 c = v0.cross(v1);
|
||||||
|
|||||||
@ -40,6 +40,7 @@ void RandomNumberGenerator::_bind_methods() {
|
|||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("randi"), &RandomNumberGenerator::randi);
|
ClassDB::bind_method(D_METHOD("randi"), &RandomNumberGenerator::randi);
|
||||||
ClassDB::bind_method(D_METHOD("randf"), &RandomNumberGenerator::randf);
|
ClassDB::bind_method(D_METHOD("randf"), &RandomNumberGenerator::randf);
|
||||||
|
ClassDB::bind_method(D_METHOD("randfn", "mean", "deviation"), &RandomNumberGenerator::randfn, DEFVAL(0.0), DEFVAL(1.0));
|
||||||
ClassDB::bind_method(D_METHOD("randf_range", "from", "to"), &RandomNumberGenerator::randf_range);
|
ClassDB::bind_method(D_METHOD("randf_range", "from", "to"), &RandomNumberGenerator::randf_range);
|
||||||
ClassDB::bind_method(D_METHOD("randi_range", "from", "to"), &RandomNumberGenerator::randi_range);
|
ClassDB::bind_method(D_METHOD("randi_range", "from", "to"), &RandomNumberGenerator::randi_range);
|
||||||
ClassDB::bind_method(D_METHOD("randomize"), &RandomNumberGenerator::randomize);
|
ClassDB::bind_method(D_METHOD("randomize"), &RandomNumberGenerator::randomize);
|
||||||
|
|||||||
@ -55,6 +55,8 @@ public:
|
|||||||
|
|
||||||
_FORCE_INLINE_ real_t randf_range(real_t from, real_t to) { return randbase.random(from, to); }
|
_FORCE_INLINE_ real_t randf_range(real_t from, real_t to) { return randbase.random(from, to); }
|
||||||
|
|
||||||
|
_FORCE_INLINE_ real_t randfn(real_t mean = 0.0, real_t deviation = 1.0) { return randbase.randfn(mean, deviation); }
|
||||||
|
|
||||||
_FORCE_INLINE_ int randi_range(int from, int to) {
|
_FORCE_INLINE_ int randi_range(int from, int to) {
|
||||||
unsigned int ret = randbase.rand();
|
unsigned int ret = randbase.rand();
|
||||||
return ret % (to - from + 1) + from;
|
return ret % (to - from + 1) + from;
|
||||||
|
|||||||
@ -31,6 +31,8 @@
|
|||||||
#ifndef RANDOM_PCG_H
|
#ifndef RANDOM_PCG_H
|
||||||
#define RANDOM_PCG_H
|
#define RANDOM_PCG_H
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
#include "core/math/math_defs.h"
|
#include "core/math/math_defs.h"
|
||||||
|
|
||||||
#include "thirdparty/misc/pcg.h"
|
#include "thirdparty/misc/pcg.h"
|
||||||
@ -61,6 +63,13 @@ public:
|
|||||||
_FORCE_INLINE_ double randd() { return (double)rand() / (double)RANDOM_MAX; }
|
_FORCE_INLINE_ double randd() { return (double)rand() / (double)RANDOM_MAX; }
|
||||||
_FORCE_INLINE_ float randf() { return (float)rand() / (float)RANDOM_MAX; }
|
_FORCE_INLINE_ float randf() { return (float)rand() / (float)RANDOM_MAX; }
|
||||||
|
|
||||||
|
_FORCE_INLINE_ double randfn(double p_mean, double p_deviation) {
|
||||||
|
return p_mean + p_deviation * (cos(Math_TAU * randd()) * sqrt(-2.0 * log(randd()))); // Box-Muller transform
|
||||||
|
}
|
||||||
|
_FORCE_INLINE_ float randfn(float p_mean, float p_deviation) {
|
||||||
|
return p_mean + p_deviation * (cos(Math_TAU * randf()) * sqrt(-2.0 * log(randf()))); // Box-Muller transform
|
||||||
|
}
|
||||||
|
|
||||||
double random(double p_from, double p_to);
|
double random(double p_from, double p_to);
|
||||||
float random(float p_from, float p_to);
|
float random(float p_from, float p_to);
|
||||||
real_t random(int p_from, int p_to) { return (real_t)random((real_t)p_from, (real_t)p_to); }
|
real_t random(int p_from, int p_to) { return (real_t)random((real_t)p_from, (real_t)p_to); }
|
||||||
|
|||||||
@ -65,6 +65,7 @@ struct Vector2 {
|
|||||||
real_t distance_squared_to(const Vector2 &p_vector2) const;
|
real_t distance_squared_to(const Vector2 &p_vector2) const;
|
||||||
real_t angle_to(const Vector2 &p_vector2) const;
|
real_t angle_to(const Vector2 &p_vector2) const;
|
||||||
real_t angle_to_point(const Vector2 &p_vector2) const;
|
real_t angle_to_point(const Vector2 &p_vector2) const;
|
||||||
|
_FORCE_INLINE_ Vector2 direction_to(const Vector2 &p_b) const;
|
||||||
|
|
||||||
real_t dot(const Vector2 &p_other) const;
|
real_t dot(const Vector2 &p_other) const;
|
||||||
real_t cross(const Vector2 &p_other) const;
|
real_t cross(const Vector2 &p_other) const;
|
||||||
@ -236,6 +237,12 @@ Vector2 Vector2::slerp(const Vector2 &p_b, real_t p_t) const {
|
|||||||
return rotated(theta * p_t);
|
return rotated(theta * p_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector2 Vector2::direction_to(const Vector2 &p_b) const {
|
||||||
|
Vector2 ret(p_b.x - x, p_b.y - y);
|
||||||
|
ret.normalize();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
Vector2 Vector2::linear_interpolate(const Vector2 &p_a, const Vector2 &p_b, real_t p_t) {
|
Vector2 Vector2::linear_interpolate(const Vector2 &p_a, const Vector2 &p_b, real_t p_t) {
|
||||||
|
|
||||||
Vector2 res = p_a;
|
Vector2 res = p_a;
|
||||||
|
|||||||
@ -112,6 +112,7 @@ struct Vector3 {
|
|||||||
_FORCE_INLINE_ Vector3 project(const Vector3 &p_b) const;
|
_FORCE_INLINE_ Vector3 project(const Vector3 &p_b) const;
|
||||||
|
|
||||||
_FORCE_INLINE_ real_t angle_to(const Vector3 &p_b) const;
|
_FORCE_INLINE_ real_t angle_to(const Vector3 &p_b) const;
|
||||||
|
_FORCE_INLINE_ Vector3 direction_to(const Vector3 &p_b) const;
|
||||||
|
|
||||||
_FORCE_INLINE_ Vector3 slide(const Vector3 &p_normal) const;
|
_FORCE_INLINE_ Vector3 slide(const Vector3 &p_normal) const;
|
||||||
_FORCE_INLINE_ Vector3 bounce(const Vector3 &p_normal) const;
|
_FORCE_INLINE_ Vector3 bounce(const Vector3 &p_normal) const;
|
||||||
@ -244,6 +245,12 @@ real_t Vector3::angle_to(const Vector3 &p_b) const {
|
|||||||
return Math::atan2(cross(p_b).length(), dot(p_b));
|
return Math::atan2(cross(p_b).length(), dot(p_b));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector3 Vector3::direction_to(const Vector3 &p_b) const {
|
||||||
|
Vector3 ret(p_b.x - x, p_b.y - y, p_b.z - z);
|
||||||
|
ret.normalize();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* Operators */
|
/* Operators */
|
||||||
|
|
||||||
Vector3 &Vector3::operator+=(const Vector3 &p_v) {
|
Vector3 &Vector3::operator+=(const Vector3 &p_v) {
|
||||||
|
|||||||
@ -1366,7 +1366,10 @@ Array Object::_get_incoming_connections() const {
|
|||||||
void Object::get_signal_list(List<MethodInfo> *p_signals) const {
|
void Object::get_signal_list(List<MethodInfo> *p_signals) const {
|
||||||
|
|
||||||
if (!script.is_null()) {
|
if (!script.is_null()) {
|
||||||
Ref<Script>(script)->get_script_signal_list(p_signals);
|
Ref<Script> scr = script;
|
||||||
|
if (scr.is_valid()) {
|
||||||
|
scr->get_script_signal_list(p_signals);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ClassDB::get_signal_list(get_class_name(), p_signals);
|
ClassDB::get_signal_list(get_class_name(), p_signals);
|
||||||
|
|||||||
@ -75,6 +75,11 @@ void MIDIDriver::receive_input_packet(uint64_t timestamp, uint8_t *data, uint32_
|
|||||||
if (length >= 3) {
|
if (length >= 3) {
|
||||||
event->set_pitch(data[1]);
|
event->set_pitch(data[1]);
|
||||||
event->set_velocity(data[2]);
|
event->set_velocity(data[2]);
|
||||||
|
|
||||||
|
if (event->get_message() == MIDI_MESSAGE_NOTE_ON && event->get_velocity() == 0) {
|
||||||
|
// https://www.midi.org/forum/228-writing-midi-software-send-note-off,-or-zero-velocity-note-on
|
||||||
|
event->set_message(MIDI_MESSAGE_NOTE_OFF);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@ -114,7 +114,7 @@ Variant PackedDataContainer::_get_at_ofs(uint32_t p_ofs, const uint8_t *p_buf, b
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
Variant v;
|
Variant v;
|
||||||
Error rerr = decode_variant(v, p_buf + p_ofs, datalen - p_ofs, NULL);
|
Error rerr = decode_variant(v, p_buf + p_ofs, datalen - p_ofs, NULL, false);
|
||||||
|
|
||||||
if (rerr != OK) {
|
if (rerr != OK) {
|
||||||
|
|
||||||
@ -249,9 +249,9 @@ uint32_t PackedDataContainer::_pack(const Variant &p_data, Vector<uint8_t> &tmpd
|
|||||||
|
|
||||||
uint32_t pos = tmpdata.size();
|
uint32_t pos = tmpdata.size();
|
||||||
int len;
|
int len;
|
||||||
encode_variant(p_data, NULL, len);
|
encode_variant(p_data, NULL, len, false);
|
||||||
tmpdata.resize(tmpdata.size() + len);
|
tmpdata.resize(tmpdata.size() + len);
|
||||||
encode_variant(p_data, &tmpdata.write[pos], len);
|
encode_variant(p_data, &tmpdata.write[pos], len, false);
|
||||||
return pos;
|
return pos;
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
|
|||||||
@ -501,7 +501,7 @@ Error ProjectSettings::_load_settings_binary(const String p_path) {
|
|||||||
d.resize(vlen);
|
d.resize(vlen);
|
||||||
f->get_buffer(d.ptrw(), vlen);
|
f->get_buffer(d.ptrw(), vlen);
|
||||||
Variant value;
|
Variant value;
|
||||||
err = decode_variant(value, d.ptr(), d.size());
|
err = decode_variant(value, d.ptr(), d.size(), NULL, true);
|
||||||
ERR_EXPLAIN("Error decoding property: " + key);
|
ERR_EXPLAIN("Error decoding property: " + key);
|
||||||
ERR_CONTINUE(err != OK);
|
ERR_CONTINUE(err != OK);
|
||||||
set(key, value);
|
set(key, value);
|
||||||
@ -656,7 +656,7 @@ Error ProjectSettings::_save_settings_binary(const String &p_file, const Map<Str
|
|||||||
file->store_string(key);
|
file->store_string(key);
|
||||||
|
|
||||||
int len;
|
int len;
|
||||||
err = encode_variant(p_custom_features, NULL, len);
|
err = encode_variant(p_custom_features, NULL, len, false);
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
memdelete(file);
|
memdelete(file);
|
||||||
ERR_FAIL_V(err);
|
ERR_FAIL_V(err);
|
||||||
@ -665,7 +665,7 @@ Error ProjectSettings::_save_settings_binary(const String &p_file, const Map<Str
|
|||||||
Vector<uint8_t> buff;
|
Vector<uint8_t> buff;
|
||||||
buff.resize(len);
|
buff.resize(len);
|
||||||
|
|
||||||
err = encode_variant(p_custom_features, buff.ptrw(), len);
|
err = encode_variant(p_custom_features, buff.ptrw(), len, false);
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
memdelete(file);
|
memdelete(file);
|
||||||
ERR_FAIL_V(err);
|
ERR_FAIL_V(err);
|
||||||
@ -694,7 +694,7 @@ Error ProjectSettings::_save_settings_binary(const String &p_file, const Map<Str
|
|||||||
file->store_string(key);
|
file->store_string(key);
|
||||||
|
|
||||||
int len;
|
int len;
|
||||||
err = encode_variant(value, NULL, len);
|
err = encode_variant(value, NULL, len, true);
|
||||||
if (err != OK)
|
if (err != OK)
|
||||||
memdelete(file);
|
memdelete(file);
|
||||||
ERR_FAIL_COND_V(err != OK, ERR_INVALID_DATA);
|
ERR_FAIL_COND_V(err != OK, ERR_INVALID_DATA);
|
||||||
@ -702,7 +702,7 @@ Error ProjectSettings::_save_settings_binary(const String &p_file, const Map<Str
|
|||||||
Vector<uint8_t> buff;
|
Vector<uint8_t> buff;
|
||||||
buff.resize(len);
|
buff.resize(len);
|
||||||
|
|
||||||
err = encode_variant(value, buff.ptrw(), len);
|
err = encode_variant(value, buff.ptrw(), len, true);
|
||||||
if (err != OK)
|
if (err != OK)
|
||||||
memdelete(file);
|
memdelete(file);
|
||||||
ERR_FAIL_COND_V(err != OK, ERR_INVALID_DATA);
|
ERR_FAIL_COND_V(err != OK, ERR_INVALID_DATA);
|
||||||
|
|||||||
@ -205,6 +205,8 @@ public:
|
|||||||
static ScriptCodeCompletionCache *get_singleton() { return singleton; }
|
static ScriptCodeCompletionCache *get_singleton() { return singleton; }
|
||||||
|
|
||||||
ScriptCodeCompletionCache();
|
ScriptCodeCompletionCache();
|
||||||
|
|
||||||
|
virtual ~ScriptCodeCompletionCache() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ScriptLanguage {
|
class ScriptLanguage {
|
||||||
|
|||||||
@ -328,4 +328,10 @@ struct _GlobalLock {
|
|||||||
#define _PRINTF_FORMAT_ATTRIBUTE_2_3
|
#define _PRINTF_FORMAT_ATTRIBUTE_2_3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** This is needed due to a strange OpenGL API that expects a pointer
|
||||||
|
* type for an argument that is actually an offset.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CAST_INT_TO_UCHAR_PTR(ptr) ((uint8_t *)(uintptr_t)(ptr))
|
||||||
|
|
||||||
#endif // TYPEDEFS_H
|
#endif // TYPEDEFS_H
|
||||||
|
|||||||
1332
core/ucaps.h
1332
core/ucaps.h
File diff suppressed because it is too large
Load Diff
@ -97,6 +97,10 @@ public:
|
|||||||
|
|
||||||
_FORCE_INLINE_ CharString() {}
|
_FORCE_INLINE_ CharString() {}
|
||||||
_FORCE_INLINE_ CharString(const CharString &p_str) { _cowdata._ref(p_str._cowdata); }
|
_FORCE_INLINE_ CharString(const CharString &p_str) { _cowdata._ref(p_str._cowdata); }
|
||||||
|
_FORCE_INLINE_ CharString operator=(const CharString &p_str) {
|
||||||
|
_cowdata._ref(p_str._cowdata);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
bool operator<(const CharString &p_right) const;
|
bool operator<(const CharString &p_right) const;
|
||||||
CharString &operator+=(char p_char);
|
CharString &operator+=(char p_char);
|
||||||
@ -339,6 +343,10 @@ public:
|
|||||||
|
|
||||||
_FORCE_INLINE_ String() {}
|
_FORCE_INLINE_ String() {}
|
||||||
_FORCE_INLINE_ String(const String &p_str) { _cowdata._ref(p_str._cowdata); }
|
_FORCE_INLINE_ String(const String &p_str) { _cowdata._ref(p_str._cowdata); }
|
||||||
|
String operator=(const String &p_str) {
|
||||||
|
_cowdata._ref(p_str._cowdata);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
String(const char *p_str);
|
String(const char *p_str);
|
||||||
String(const CharType *p_str, int p_clip_to_len = -1);
|
String(const CharType *p_str, int p_clip_to_len = -1);
|
||||||
|
|||||||
@ -341,6 +341,7 @@ struct _VariantCall {
|
|||||||
VCALL_LOCALMEM1R(Vector2, project);
|
VCALL_LOCALMEM1R(Vector2, project);
|
||||||
VCALL_LOCALMEM1R(Vector2, angle_to);
|
VCALL_LOCALMEM1R(Vector2, angle_to);
|
||||||
VCALL_LOCALMEM1R(Vector2, angle_to_point);
|
VCALL_LOCALMEM1R(Vector2, angle_to_point);
|
||||||
|
VCALL_LOCALMEM1R(Vector2, direction_to);
|
||||||
VCALL_LOCALMEM2R(Vector2, linear_interpolate);
|
VCALL_LOCALMEM2R(Vector2, linear_interpolate);
|
||||||
VCALL_LOCALMEM2R(Vector2, slerp);
|
VCALL_LOCALMEM2R(Vector2, slerp);
|
||||||
VCALL_LOCALMEM4R(Vector2, cubic_interpolate);
|
VCALL_LOCALMEM4R(Vector2, cubic_interpolate);
|
||||||
@ -397,6 +398,7 @@ struct _VariantCall {
|
|||||||
VCALL_LOCALMEM1R(Vector3, distance_squared_to);
|
VCALL_LOCALMEM1R(Vector3, distance_squared_to);
|
||||||
VCALL_LOCALMEM1R(Vector3, project);
|
VCALL_LOCALMEM1R(Vector3, project);
|
||||||
VCALL_LOCALMEM1R(Vector3, angle_to);
|
VCALL_LOCALMEM1R(Vector3, angle_to);
|
||||||
|
VCALL_LOCALMEM1R(Vector3, direction_to);
|
||||||
VCALL_LOCALMEM1R(Vector3, slide);
|
VCALL_LOCALMEM1R(Vector3, slide);
|
||||||
VCALL_LOCALMEM1R(Vector3, bounce);
|
VCALL_LOCALMEM1R(Vector3, bounce);
|
||||||
VCALL_LOCALMEM1R(Vector3, reflect);
|
VCALL_LOCALMEM1R(Vector3, reflect);
|
||||||
@ -773,6 +775,8 @@ struct _VariantCall {
|
|||||||
VCALL_PTR0R(Basis, get_orthogonal_index);
|
VCALL_PTR0R(Basis, get_orthogonal_index);
|
||||||
VCALL_PTR0R(Basis, orthonormalized);
|
VCALL_PTR0R(Basis, orthonormalized);
|
||||||
VCALL_PTR2R(Basis, slerp);
|
VCALL_PTR2R(Basis, slerp);
|
||||||
|
VCALL_PTR2R(Basis, is_equal_approx);
|
||||||
|
VCALL_PTR0R(Basis, get_rotation_quat);
|
||||||
|
|
||||||
VCALL_PTR0R(Transform, inverse);
|
VCALL_PTR0R(Transform, inverse);
|
||||||
VCALL_PTR0R(Transform, affine_inverse);
|
VCALL_PTR0R(Transform, affine_inverse);
|
||||||
@ -1554,6 +1558,7 @@ void register_variant_methods() {
|
|||||||
ADDFUNC0R(VECTOR2, REAL, Vector2, angle, varray());
|
ADDFUNC0R(VECTOR2, REAL, Vector2, angle, varray());
|
||||||
ADDFUNC0R(VECTOR2, REAL, Vector2, length_squared, varray());
|
ADDFUNC0R(VECTOR2, REAL, Vector2, length_squared, varray());
|
||||||
ADDFUNC0R(VECTOR2, BOOL, Vector2, is_normalized, varray());
|
ADDFUNC0R(VECTOR2, BOOL, Vector2, is_normalized, varray());
|
||||||
|
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, direction_to, VECTOR2, "b", varray());
|
||||||
ADDFUNC1R(VECTOR2, REAL, Vector2, distance_to, VECTOR2, "to", varray());
|
ADDFUNC1R(VECTOR2, REAL, Vector2, distance_to, VECTOR2, "to", varray());
|
||||||
ADDFUNC1R(VECTOR2, REAL, Vector2, distance_squared_to, VECTOR2, "to", varray());
|
ADDFUNC1R(VECTOR2, REAL, Vector2, distance_squared_to, VECTOR2, "to", varray());
|
||||||
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, project, VECTOR2, "b", varray());
|
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, project, VECTOR2, "b", varray());
|
||||||
@ -1602,6 +1607,7 @@ void register_variant_methods() {
|
|||||||
ADDFUNC2R(VECTOR3, VECTOR3, Vector3, linear_interpolate, VECTOR3, "b", REAL, "t", varray());
|
ADDFUNC2R(VECTOR3, VECTOR3, Vector3, linear_interpolate, VECTOR3, "b", REAL, "t", varray());
|
||||||
ADDFUNC2R(VECTOR3, VECTOR3, Vector3, slerp, VECTOR3, "b", REAL, "t", varray());
|
ADDFUNC2R(VECTOR3, VECTOR3, Vector3, slerp, VECTOR3, "b", REAL, "t", varray());
|
||||||
ADDFUNC4R(VECTOR3, VECTOR3, Vector3, cubic_interpolate, VECTOR3, "b", VECTOR3, "pre_a", VECTOR3, "post_b", REAL, "t", varray());
|
ADDFUNC4R(VECTOR3, VECTOR3, Vector3, cubic_interpolate, VECTOR3, "b", VECTOR3, "pre_a", VECTOR3, "post_b", REAL, "t", varray());
|
||||||
|
ADDFUNC1R(VECTOR3, VECTOR3, Vector3, direction_to, VECTOR3, "b", varray());
|
||||||
ADDFUNC1R(VECTOR3, REAL, Vector3, dot, VECTOR3, "b", varray());
|
ADDFUNC1R(VECTOR3, REAL, Vector3, dot, VECTOR3, "b", varray());
|
||||||
ADDFUNC1R(VECTOR3, VECTOR3, Vector3, cross, VECTOR3, "b", varray());
|
ADDFUNC1R(VECTOR3, VECTOR3, Vector3, cross, VECTOR3, "b", varray());
|
||||||
ADDFUNC1R(VECTOR3, BASIS, Vector3, outer, VECTOR3, "b", varray());
|
ADDFUNC1R(VECTOR3, BASIS, Vector3, outer, VECTOR3, "b", varray());
|
||||||
@ -1842,6 +1848,8 @@ void register_variant_methods() {
|
|||||||
ADDFUNC1R(BASIS, VECTOR3, Basis, xform_inv, VECTOR3, "v", varray());
|
ADDFUNC1R(BASIS, VECTOR3, Basis, xform_inv, VECTOR3, "v", varray());
|
||||||
ADDFUNC0R(BASIS, INT, Basis, get_orthogonal_index, varray());
|
ADDFUNC0R(BASIS, INT, Basis, get_orthogonal_index, varray());
|
||||||
ADDFUNC2R(BASIS, BASIS, Basis, slerp, BASIS, "b", REAL, "t", varray());
|
ADDFUNC2R(BASIS, BASIS, Basis, slerp, BASIS, "b", REAL, "t", varray());
|
||||||
|
ADDFUNC2R(BASIS, BOOL, Basis, is_equal_approx, BASIS, "b", REAL, "epsilon", varray(CMP_EPSILON));
|
||||||
|
ADDFUNC0R(BASIS, QUAT, Basis, get_rotation_quat, varray());
|
||||||
|
|
||||||
ADDFUNC0R(TRANSFORM, TRANSFORM, Transform, inverse, varray());
|
ADDFUNC0R(TRANSFORM, TRANSFORM, Transform, inverse, varray());
|
||||||
ADDFUNC0R(TRANSFORM, TRANSFORM, Transform, affine_inverse, varray());
|
ADDFUNC0R(TRANSFORM, TRANSFORM, Transform, affine_inverse, varray());
|
||||||
@ -1923,9 +1931,9 @@ void register_variant_methods() {
|
|||||||
_VariantCall::add_variant_constant(Variant::TRANSFORM, "IDENTITY", identity_transform);
|
_VariantCall::add_variant_constant(Variant::TRANSFORM, "IDENTITY", identity_transform);
|
||||||
transform_x.set(-1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0);
|
transform_x.set(-1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0);
|
||||||
_VariantCall::add_variant_constant(Variant::TRANSFORM, "FLIP_X", transform_x);
|
_VariantCall::add_variant_constant(Variant::TRANSFORM, "FLIP_X", transform_x);
|
||||||
transform_x.set(1, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0);
|
transform_y.set(1, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0);
|
||||||
_VariantCall::add_variant_constant(Variant::TRANSFORM, "FLIP_Y", transform_y);
|
_VariantCall::add_variant_constant(Variant::TRANSFORM, "FLIP_Y", transform_y);
|
||||||
transform_x.set(1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0);
|
transform_z.set(1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0);
|
||||||
_VariantCall::add_variant_constant(Variant::TRANSFORM, "FLIP_Z", transform_z);
|
_VariantCall::add_variant_constant(Variant::TRANSFORM, "FLIP_Z", transform_z);
|
||||||
|
|
||||||
_VariantCall::add_variant_constant(Variant::PLANE, "PLANE_YZ", Plane(Vector3(1, 0, 0), 0));
|
_VariantCall::add_variant_constant(Variant::PLANE, "PLANE_YZ", Plane(Vector3(1, 0, 0), 0));
|
||||||
|
|||||||
@ -65,7 +65,7 @@ private:
|
|||||||
const Pair *a = _cowdata.ptr();
|
const Pair *a = _cowdata.ptr();
|
||||||
int middle = 0;
|
int middle = 0;
|
||||||
|
|
||||||
#if DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
if (low > high)
|
if (low > high)
|
||||||
ERR_PRINT("low > high, this may be a bug");
|
ERR_PRINT("low > high, this may be a bug");
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -50,7 +50,7 @@ class VSet {
|
|||||||
const T *a = &_data[0];
|
const T *a = &_data[0];
|
||||||
int middle = 0;
|
int middle = 0;
|
||||||
|
|
||||||
#if DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
if (low > high)
|
if (low > high)
|
||||||
ERR_PRINT("low > high, this may be a bug");
|
ERR_PRINT("low > high, this may be a bug");
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="@GDScript" category="Core" version="3.1">
|
<class name="@GDScript" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Built-in GDScript functions.
|
Built-in GDScript functions.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="Color8">
|
<method name="Color8">
|
||||||
<return type="Color">
|
<return type="Color">
|
||||||
@ -127,7 +125,7 @@
|
|||||||
<description>
|
<description>
|
||||||
Returns the arc tangent of [code]y/x[/code] in radians. Use to get the angle of tangent [code]y/x[/code]. To compute the value, the method takes into account the sign of both arguments in order to determine the quadrant.
|
Returns the arc tangent of [code]y/x[/code] in radians. Use to get the angle of tangent [code]y/x[/code]. To compute the value, the method takes into account the sign of both arguments in order to determine the quadrant.
|
||||||
[codeblock]
|
[codeblock]
|
||||||
a = atan(0, -1) # a is 3.141593
|
a = atan2(0, -1) # a is 3.141593
|
||||||
[/codeblock]
|
[/codeblock]
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
@ -136,8 +134,11 @@
|
|||||||
</return>
|
</return>
|
||||||
<argument index="0" name="bytes" type="PoolByteArray">
|
<argument index="0" name="bytes" type="PoolByteArray">
|
||||||
</argument>
|
</argument>
|
||||||
|
<argument index="1" name="allow_objects" type="bool" default="false">
|
||||||
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Decodes a byte array back to a value.
|
Decodes a byte array back to a value. When [code]allow_objects[/code] is [code]true[/code] decoding objects is allowed.
|
||||||
|
[b]WARNING:[/b] Deserialized object can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats (remote code execution).
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="cartesian2polar">
|
<method name="cartesian2polar">
|
||||||
@ -972,6 +973,24 @@
|
|||||||
[/codeblock]
|
[/codeblock]
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="smoothstep">
|
||||||
|
<return type="float">
|
||||||
|
</return>
|
||||||
|
<argument index="0" name="from" type="float">
|
||||||
|
</argument>
|
||||||
|
<argument index="1" name="to" type="float">
|
||||||
|
</argument>
|
||||||
|
<argument index="2" name="weight" type="float">
|
||||||
|
</argument>
|
||||||
|
<description>
|
||||||
|
Returns a number smoothly interpolated between the [code]from[/code] and [code]to[/code], based on the [code]weight[/code]. Similar to [method lerp], but interpolates faster at the beginning and slower at the end.
|
||||||
|
[codeblock]
|
||||||
|
smooth_step(0, 2, 0.5) # returns 0.15
|
||||||
|
smooth_step(0, 2, 1.0) # returns 0.5
|
||||||
|
smooth_step(0, 2, 2.0) # returns 1.0
|
||||||
|
[/codeblock]
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
<method name="sqrt">
|
<method name="sqrt">
|
||||||
<return type="float">
|
<return type="float">
|
||||||
</return>
|
</return>
|
||||||
@ -1112,8 +1131,10 @@
|
|||||||
</return>
|
</return>
|
||||||
<argument index="0" name="var" type="Variant">
|
<argument index="0" name="var" type="Variant">
|
||||||
</argument>
|
</argument>
|
||||||
|
<argument index="1" name="full_objects" type="bool" default="false">
|
||||||
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Encodes a variable value to a byte array.
|
Encodes a variable value to a byte array. When [code]full_objects[/code] is [code]true[/code] encoding objects is allowed (and can potentially include code).
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="var2str">
|
<method name="var2str">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="@GlobalScope" category="Core" version="3.1">
|
<class name="@GlobalScope" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Global scope constants and variables.
|
Global scope constants and variables.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -9,8 +9,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="@NativeScript" category="Core" version="3.1">
|
<class name="@NativeScript" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="@VisualScript" category="Core" version="3.1">
|
<class name="@VisualScript" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Built-in visual script functions.
|
Built-in visual script functions.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AABB" category="Built-In Types" version="3.1">
|
<class name="AABB" category="Built-In Types" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Axis-Aligned Bounding Box.
|
Axis-Aligned Bounding Box.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -9,8 +9,6 @@
|
|||||||
<tutorials>
|
<tutorials>
|
||||||
<link>https://docs.godotengine.org/en/latest/tutorials/math/index.html</link>
|
<link>https://docs.godotengine.org/en/latest/tutorials/math/index.html</link>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="AABB">
|
<method name="AABB">
|
||||||
<return type="AABB">
|
<return type="AABB">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="ARVRAnchor" inherits="Spatial" category="Core" version="3.1">
|
<class name="ARVRAnchor" inherits="Spatial" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Anchor point in AR Space.
|
Anchor point in AR Space.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -10,8 +10,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="get_anchor_name" qualifiers="const">
|
<method name="get_anchor_name" qualifiers="const">
|
||||||
<return type="String">
|
<return type="String">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="ARVRCamera" inherits="Camera" category="Core" version="3.1">
|
<class name="ARVRCamera" inherits="Camera" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
A camera node with a few overrules for AR/VR applied, such as location tracking.
|
A camera node with a few overrules for AR/VR applied, such as location tracking.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -9,8 +9,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="ARVRController" inherits="Spatial" category="Core" version="3.1">
|
<class name="ARVRController" inherits="Spatial" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
A spatial node representing a spatially tracked controller.
|
A spatial node representing a spatially tracked controller.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -10,8 +10,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="get_controller_name" qualifiers="const">
|
<method name="get_controller_name" qualifiers="const">
|
||||||
<return type="String">
|
<return type="String">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="ARVRInterface" inherits="Reference" category="Core" version="3.1">
|
<class name="ARVRInterface" inherits="Reference" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Base class for ARVR interface implementation.
|
Base class for ARVR interface implementation.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -9,8 +9,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="get_capabilities" qualifiers="const">
|
<method name="get_capabilities" qualifiers="const">
|
||||||
<return type="int">
|
<return type="int">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="ARVROrigin" inherits="Spatial" category="Core" version="3.1">
|
<class name="ARVROrigin" inherits="Spatial" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Our origin point in AR/VR.
|
Our origin point in AR/VR.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -11,8 +11,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="ARVRPositionalTracker" inherits="Object" category="Core" version="3.1">
|
<class name="ARVRPositionalTracker" inherits="Object" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
A tracked object
|
A tracked object
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -10,8 +10,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="get_hand" qualifiers="const">
|
<method name="get_hand" qualifiers="const">
|
||||||
<return type="int" enum="ARVRPositionalTracker.TrackerHand">
|
<return type="int" enum="ARVRPositionalTracker.TrackerHand">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="ARVRServer" inherits="Object" category="Core" version="3.1">
|
<class name="ARVRServer" inherits="Object" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
This is our AR/VR Server.
|
This is our AR/VR Server.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="center_on_hmd">
|
<method name="center_on_hmd">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AStar" inherits="Reference" category="Core" version="3.1">
|
<class name="AStar" inherits="Reference" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
AStar class representation that uses vectors as edges.
|
AStar class representation that uses vectors as edges.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -9,8 +9,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="_compute_cost" qualifiers="virtual">
|
<method name="_compute_cost" qualifiers="virtual">
|
||||||
<return type="float">
|
<return type="float">
|
||||||
@ -226,6 +224,15 @@
|
|||||||
Returns whether a point associated with the given id exists.
|
Returns whether a point associated with the given id exists.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="is_point_disabled" qualifiers="const">
|
||||||
|
<return type="bool">
|
||||||
|
</return>
|
||||||
|
<argument index="0" name="id" type="int">
|
||||||
|
</argument>
|
||||||
|
<description>
|
||||||
|
Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
<method name="remove_point">
|
<method name="remove_point">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
</return>
|
</return>
|
||||||
@ -235,6 +242,17 @@
|
|||||||
Removes the point associated with the given id from the points pool.
|
Removes the point associated with the given id from the points pool.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="set_point_disabled">
|
||||||
|
<return type="void">
|
||||||
|
</return>
|
||||||
|
<argument index="0" name="id" type="int">
|
||||||
|
</argument>
|
||||||
|
<argument index="1" name="disabled" type="bool" default="true">
|
||||||
|
</argument>
|
||||||
|
<description>
|
||||||
|
Disables or enables the specified point for pathfinding. Useful for making a temporary obstacle.
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
<method name="set_point_position">
|
<method name="set_point_position">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
</return>
|
</return>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AcceptDialog" inherits="WindowDialog" category="Core" version="3.1">
|
<class name="AcceptDialog" inherits="WindowDialog" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Base dialog for user notification.
|
Base dialog for user notification.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="add_button">
|
<method name="add_button">
|
||||||
<return type="Button">
|
<return type="Button">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimatedSprite" inherits="Node2D" category="Core" version="3.1">
|
<class name="AnimatedSprite" inherits="Node2D" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Sprite node that can use multiple textures for animation.
|
Sprite node that can use multiple textures for animation.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="is_playing" qualifiers="const">
|
<method name="is_playing" qualifiers="const">
|
||||||
<return type="bool">
|
<return type="bool">
|
||||||
@ -23,8 +21,10 @@
|
|||||||
</return>
|
</return>
|
||||||
<argument index="0" name="anim" type="String" default="""">
|
<argument index="0" name="anim" type="String" default="""">
|
||||||
</argument>
|
</argument>
|
||||||
|
<argument index="1" name="backwards" type="bool" default="false">
|
||||||
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Play the animation set in parameter. If no parameter is provided, the current animation is played.
|
Play the animation set in parameter. If no parameter is provided, the current animation is played. Property [code]backwards[/code] plays the animation in reverse if set to [code]true[/code].
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="stop">
|
<method name="stop">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimatedSprite3D" inherits="SpriteBase3D" category="Core" version="3.1">
|
<class name="AnimatedSprite3D" inherits="SpriteBase3D" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
2D sprite node in 3D world, that can use multiple 2D textures for animation.
|
2D sprite node in 3D world, that can use multiple 2D textures for animation.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="is_playing" qualifiers="const">
|
<method name="is_playing" qualifiers="const">
|
||||||
<return type="bool">
|
<return type="bool">
|
||||||
|
|||||||
@ -1,17 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimatedTexture" inherits="Texture" category="Core" version="3.1">
|
<class name="AnimatedTexture" inherits="Texture" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Proxy texture for simple frame-based animations.
|
Proxy texture for simple frame-based animations.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
[code]AnimatedTexture[/code] is a resource format for simple frame-based animations, where multiple frames textures can be chained automatically with a predefined delay for each frame. It's not a [Node], contrarily to [AnimationPlayer] or [AnimatedSprite], but has the advantage of being usable at any place where a [Texture] resource can be used, e.g. in a [TileSet].
|
[code]AnimatedTexture[/code] is a resource format for frame-based animations, where multiple textures can be chained automatically with a predefined delay for each frame. Unlike [AnimationPlayer] or [AnimatedSprite], it isn't a [Node], but has the advantage of being usable anywhere a [Texture] resource can be used, e.g. in a [TileSet].
|
||||||
The playback of the animation is controlled by the [member fps] property as well as each frame's optional delay (see [method set_frame_delay]). 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 [member fps] property as well as each frame's optional delay (see [method set_frame_delay]). The animation loops, i.e. it will restart at frame 0 automatically after playing the last frame.
|
||||||
[code]AnimatedTexture[/code] currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
|
[code]AnimatedTexture[/code] currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="get_frame_delay" qualifiers="const">
|
<method name="get_frame_delay" qualifiers="const">
|
||||||
<return type="float">
|
<return type="float">
|
||||||
@ -19,7 +17,7 @@
|
|||||||
<argument index="0" name="frame" type="int">
|
<argument index="0" name="frame" type="int">
|
||||||
</argument>
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Retrieves the delayed assigned to the given [code]frame[/code] ID.
|
Returns the given frame's delay value.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="get_frame_texture" qualifiers="const">
|
<method name="get_frame_texture" qualifiers="const">
|
||||||
@ -28,7 +26,7 @@
|
|||||||
<argument index="0" name="frame" type="int">
|
<argument index="0" name="frame" type="int">
|
||||||
</argument>
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Retrieves the [Texture] assigned to the given [code]frame[/code] ID.
|
Returns the given frame's [Texture].
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="set_frame_delay">
|
<method name="set_frame_delay">
|
||||||
@ -39,7 +37,7 @@
|
|||||||
<argument index="1" name="delay" type="float">
|
<argument index="1" name="delay" type="float">
|
||||||
</argument>
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Defines an additional delay (in seconds) between this frame and the next one, that will be added to the time interval defined by [member fps]. By default, frames have no delay defined. If a delay value is defined, the final time interval between this frame and the next will be [code]1.0 / fps + delay[/code].
|
Sets an additional delay (in seconds) between this frame and the next one, that will be added to the time interval defined by [member fps]. By default, frames have no delay defined. If a delay value is defined, the final time interval between this frame and the next will be [code]1.0 / fps + delay[/code].
|
||||||
For example, for an animation with 3 frames, 2 FPS and a frame delay on the second frame of 1.2, the resulting playback will be:
|
For example, for an animation with 3 frames, 2 FPS and a frame delay on the second frame of 1.2, the resulting playback will be:
|
||||||
[codeblock]
|
[codeblock]
|
||||||
Frame 0: 0.5 s (1 / fps)
|
Frame 0: 0.5 s (1 / fps)
|
||||||
@ -57,15 +55,15 @@
|
|||||||
<argument index="1" name="texture" type="Texture">
|
<argument index="1" name="texture" type="Texture">
|
||||||
</argument>
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Assigns a [Texture] to the given [code]frame[/code] ID. IDs start at 0 (so the first frame has ID 0, and the last frame of the animation has ID [member frames] - 1).
|
Assigns a [Texture] 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 [member frames] - 1.
|
||||||
You can define any frame texture up to [constant MAX_FRAMES], but keep in mind that only frames from 0 to [member frames] - 1 will be part of the animation.
|
You can define any number of textures up to [constant MAX_FRAMES], but keep in mind that only frames from 0 to [member frames] - 1 will be part of the animation.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
<member name="fps" type="float" setter="set_fps" getter="get_fps">
|
<member name="fps" type="float" setter="set_fps" getter="get_fps">
|
||||||
Number of frames per second. This value defines the default time interval between two frames of the animation, and thus the overall duration of the animation loop based on the [member frames] property. A value of 0 means no predefined number of frames per second, the animation will play according to each frame's frame delay (see [method set_frame_delay]). Default value: 4.
|
Animation speed in frames per second. This value defines the default time interval between two frames of the animation, and thus the overall duration of the animation loop based on the [member frames] property. A value of 0 means no predefined number of frames per second, the animation will play according to each frame's frame delay (see [method set_frame_delay]). Default value: 4.
|
||||||
For example, an animation with 8 frames, no frame delay and a [code]fps[/code] value of 2 will run over 4 seconds, with one frame each 0.5 seconds.
|
For example, an animation with 8 frames, no frame delay and a [code]fps[/code] value of 2 will run for 4 seconds, with each frame lasting 0.5 seconds.
|
||||||
</member>
|
</member>
|
||||||
<member name="frames" type="int" setter="set_frames" getter="get_frames">
|
<member name="frames" type="int" setter="set_frames" getter="get_frames">
|
||||||
Number of frames to use in the animation. While you can create the frames independently with [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 [constant MAX_FRAMES]. Default value: 1.
|
Number of frames to use in the animation. While you can create the frames independently with [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 [constant MAX_FRAMES]. Default value: 1.
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="Animation" inherits="Resource" category="Core" version="3.1">
|
<class name="Animation" inherits="Resource" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Contains data used to animate everything in the engine.
|
Contains data used to animate everything in the engine.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -19,8 +19,6 @@
|
|||||||
<tutorials>
|
<tutorials>
|
||||||
<link>https://docs.godotengine.org/en/latest/tutorials/animation/index.html</link>
|
<link>https://docs.godotengine.org/en/latest/tutorials/animation/index.html</link>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="add_track">
|
<method name="add_track">
|
||||||
<return type="int">
|
<return type="int">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNode" inherits="Resource" category="Core" version="3.1">
|
<class name="AnimationNode" inherits="Resource" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Base resource for [AnimationTree] nodes.
|
Base resource for [AnimationTree] nodes.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -9,8 +9,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="add_input">
|
<method name="add_input">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeAdd2" inherits="AnimationNode" category="Core" version="3.1">
|
<class name="AnimationNodeAdd2" inherits="AnimationNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeAdd3" inherits="AnimationNode" category="Core" version="3.1">
|
<class name="AnimationNodeAdd3" inherits="AnimationNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeAnimation" inherits="AnimationRootNode" category="Core" version="3.1">
|
<class name="AnimationNodeAnimation" inherits="AnimationRootNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeBlend2" inherits="AnimationNode" category="Core" version="3.1">
|
<class name="AnimationNodeBlend2" inherits="AnimationNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeBlend3" inherits="AnimationNode" category="Core" version="3.1">
|
<class name="AnimationNodeBlend3" inherits="AnimationNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeBlendSpace1D" inherits="AnimationRootNode" category="Core" version="3.1">
|
<class name="AnimationNodeBlendSpace1D" inherits="AnimationRootNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="add_blend_point">
|
<method name="add_blend_point">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeBlendSpace2D" inherits="AnimationRootNode" category="Core" version="3.1">
|
<class name="AnimationNodeBlendSpace2D" inherits="AnimationRootNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="add_blend_point">
|
<method name="add_blend_point">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
@ -136,8 +134,10 @@
|
|||||||
<constant name="BLEND_MODE_INTERPOLATED" value="0" enum="BlendMode">
|
<constant name="BLEND_MODE_INTERPOLATED" value="0" enum="BlendMode">
|
||||||
</constant>
|
</constant>
|
||||||
<constant name="BLEND_MODE_DISCRETE" value="1" enum="BlendMode">
|
<constant name="BLEND_MODE_DISCRETE" value="1" enum="BlendMode">
|
||||||
|
Useful for frame-by-frame 2D animations.
|
||||||
</constant>
|
</constant>
|
||||||
<constant name="BLEND_MODE_DISCRETE_CARRY" value="2" enum="BlendMode">
|
<constant name="BLEND_MODE_DISCRETE_CARRY" value="2" enum="BlendMode">
|
||||||
|
Keep the current play position when switching between discrete animations.
|
||||||
</constant>
|
</constant>
|
||||||
</constants>
|
</constants>
|
||||||
</class>
|
</class>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeBlendTree" inherits="AnimationRootNode" category="Core" version="3.1">
|
<class name="AnimationNodeBlendTree" inherits="AnimationRootNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="add_node">
|
<method name="add_node">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeOneShot" inherits="AnimationNode" category="Core" version="3.1">
|
<class name="AnimationNodeOneShot" inherits="AnimationNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="get_mix_mode" qualifiers="const">
|
<method name="get_mix_mode" qualifiers="const">
|
||||||
<return type="int" enum="AnimationNodeOneShot.MixMode">
|
<return type="int" enum="AnimationNodeOneShot.MixMode">
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeOutput" inherits="AnimationNode" category="Core" version="3.1">
|
<class name="AnimationNodeOutput" inherits="AnimationNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,13 +1,16 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeStateMachine" inherits="AnimationRootNode" category="Core" version="3.1">
|
<class name="AnimationNodeStateMachine" inherits="AnimationRootNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
|
Contains multiple root nodes as children in a graph. Each node is used as a state, and provides multiple functions to alternate between states. Retrieve the AnimationNodeStateMachinePlayback object from the [AnimationTree] node to control it programatically.
|
||||||
|
[codeblock]
|
||||||
|
var state_machine = anim_tree["parameters/StateMachine/playback"]
|
||||||
|
state_machine.travel("SomeState")
|
||||||
|
[codeblock]
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="add_node">
|
<method name="add_node">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
@ -170,7 +173,7 @@
|
|||||||
<method name="set_graph_offset">
|
<method name="set_graph_offset">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
</return>
|
</return>
|
||||||
<argument index="0" name="name" type="Vector2">
|
<argument index="0" name="offset" type="Vector2">
|
||||||
</argument>
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeStateMachinePlayback" inherits="Resource" category="Core" version="3.1">
|
<class name="AnimationNodeStateMachinePlayback" inherits="Resource" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="get_current_node" qualifiers="const">
|
<method name="get_current_node" qualifiers="const">
|
||||||
<return type="String">
|
<return type="String">
|
||||||
@ -47,6 +45,7 @@
|
|||||||
<argument index="0" name="to_node" type="String">
|
<argument index="0" name="to_node" type="String">
|
||||||
</argument>
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
|
Transition from the current state to another one, while visiting all the intermediate ones. This is done via the A* algorithm.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
</methods>
|
</methods>
|
||||||
|
|||||||
@ -1,27 +1,31 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeStateMachineTransition" inherits="Resource" category="Core" version="3.1">
|
<class name="AnimationNodeStateMachineTransition" inherits="Resource" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
<member name="advance_condition" type="String" setter="set_advance_condition" getter="get_advance_condition">
|
<member name="advance_condition" type="String" setter="set_advance_condition" getter="get_advance_condition">
|
||||||
|
Turn on auto advance when this condition is set. This is a custom text field that can be filled with a variable name. The variable can be modified from code.
|
||||||
</member>
|
</member>
|
||||||
<member name="auto_advance" type="bool" setter="set_auto_advance" getter="has_auto_advance">
|
<member name="auto_advance" type="bool" setter="set_auto_advance" getter="has_auto_advance">
|
||||||
|
Turn on the transition automatically when this state is reached. This works best with [code]SWITCH_MODE_AT_END[/code].
|
||||||
</member>
|
</member>
|
||||||
<member name="disabled" type="bool" setter="set_disabled" getter="is_disabled">
|
<member name="disabled" type="bool" setter="set_disabled" getter="is_disabled">
|
||||||
|
Don't use this transition during [method AnimationNodeStateMachinePlayback.travel] or [member auto_advance].
|
||||||
</member>
|
</member>
|
||||||
<member name="priority" type="int" setter="set_priority" getter="get_priority">
|
<member name="priority" type="int" setter="set_priority" getter="get_priority">
|
||||||
|
Lower priority transitions are preferred when travelling through the tree via [method AnimationNodeStateMachinePlayback.travel] or [member auto_advance].
|
||||||
</member>
|
</member>
|
||||||
<member name="switch_mode" type="int" setter="set_switch_mode" getter="get_switch_mode" enum="AnimationNodeStateMachineTransition.SwitchMode">
|
<member name="switch_mode" type="int" setter="set_switch_mode" getter="get_switch_mode" enum="AnimationNodeStateMachineTransition.SwitchMode">
|
||||||
|
The transition type.
|
||||||
</member>
|
</member>
|
||||||
<member name="xfade_time" type="float" setter="set_xfade_time" getter="get_xfade_time">
|
<member name="xfade_time" type="float" setter="set_xfade_time" getter="get_xfade_time">
|
||||||
|
The time to cross-fade between this state and the next.
|
||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
||||||
<signals>
|
<signals>
|
||||||
@ -32,10 +36,13 @@
|
|||||||
</signals>
|
</signals>
|
||||||
<constants>
|
<constants>
|
||||||
<constant name="SWITCH_MODE_IMMEDIATE" value="0" enum="SwitchMode">
|
<constant name="SWITCH_MODE_IMMEDIATE" value="0" enum="SwitchMode">
|
||||||
|
Switch to the next state immediately. The current state will end and blend into the beginning of the new one.
|
||||||
</constant>
|
</constant>
|
||||||
<constant name="SWITCH_MODE_SYNC" value="1" enum="SwitchMode">
|
<constant name="SWITCH_MODE_SYNC" value="1" enum="SwitchMode">
|
||||||
|
Switch to the next state immediately, but will seek the new state to the playback position of the old state.
|
||||||
</constant>
|
</constant>
|
||||||
<constant name="SWITCH_MODE_AT_END" value="2" enum="SwitchMode">
|
<constant name="SWITCH_MODE_AT_END" value="2" enum="SwitchMode">
|
||||||
|
Wait for the current state playback to end, then switch to the beginning of the next state animation.
|
||||||
</constant>
|
</constant>
|
||||||
</constants>
|
</constants>
|
||||||
</class>
|
</class>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeTimeScale" inherits="AnimationNode" category="Core" version="3.1">
|
<class name="AnimationNodeTimeScale" inherits="AnimationNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeTimeSeek" inherits="AnimationNode" category="Core" version="3.1">
|
<class name="AnimationNodeTimeSeek" inherits="AnimationNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationNodeTransition" inherits="AnimationNode" category="Core" version="3.1">
|
<class name="AnimationNodeTransition" inherits="AnimationNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationPlayer" inherits="Node" category="Core" version="3.1">
|
<class name="AnimationPlayer" inherits="Node" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Container and player of [Animation] resources.
|
Container and player of [Animation] resources.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -10,8 +10,6 @@
|
|||||||
<link>https://docs.godotengine.org/en/latest/getting_started/step_by_step/animations.html</link>
|
<link>https://docs.godotengine.org/en/latest/getting_started/step_by_step/animations.html</link>
|
||||||
<link>https://docs.godotengine.org/en/latest/tutorials/animation/index.html</link>
|
<link>https://docs.godotengine.org/en/latest/tutorials/animation/index.html</link>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="add_animation">
|
<method name="add_animation">
|
||||||
<return type="int" enum="Error">
|
<return type="int" enum="Error">
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationRootNode" inherits="AnimationNode" category="Core" version="3.1">
|
<class name="AnimationRootNode" inherits="AnimationNode" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationTrackEditPlugin" inherits="Reference" category="Core" version="3.1">
|
<class name="AnimationTrackEditPlugin" inherits="Reference" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationTree" inherits="Node" category="Core" version="3.1">
|
<class name="AnimationTree" inherits="Node" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
|
<link>https://docs.godotengine.org/en/latest/tutorials/animation/animation_tree.html</link>
|
||||||
|
<link>https://github.com/godotengine/tps-demo</link>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="advance">
|
<method name="advance">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AnimationTreePlayer" inherits="Node" category="Core" version="3.1">
|
<class name="AnimationTreePlayer" inherits="Node" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Animation Player that uses a node graph for blending Animations.
|
Animation Player that uses a node graph for blending Animations.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -9,8 +9,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="add_node">
|
<method name="add_node">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="Area" inherits="CollisionObject" category="Core" version="3.1">
|
<class name="Area" inherits="CollisionObject" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
General purpose area node for detection and 3D physics influence.
|
General purpose area node for detection and 3D physics influence.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="get_collision_layer_bit" qualifiers="const">
|
<method name="get_collision_layer_bit" qualifiers="const">
|
||||||
<return type="bool">
|
<return type="bool">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="Area2D" inherits="CollisionObject2D" category="Core" version="3.1">
|
<class name="Area2D" inherits="CollisionObject2D" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
2D area for detection and 2D physics influence.
|
2D area for detection and 2D physics influence.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="get_collision_layer_bit" qualifiers="const">
|
<method name="get_collision_layer_bit" qualifiers="const">
|
||||||
<return type="bool">
|
<return type="bool">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="Array" category="Built-In Types" version="3.1">
|
<class name="Array" category="Built-In Types" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Generic array datatype.
|
Generic array datatype.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -17,8 +17,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="Array">
|
<method name="Array">
|
||||||
<return type="Array">
|
<return type="Array">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="ArrayMesh" inherits="Mesh" category="Core" version="3.1">
|
<class name="ArrayMesh" inherits="Mesh" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
@ -23,8 +23,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="add_blend_shape">
|
<method name="add_blend_shape">
|
||||||
<return type="void">
|
<return type="void">
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AtlasTexture" inherits="Texture" category="Core" version="3.1">
|
<class name="AtlasTexture" inherits="Texture" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Packs multiple small textures in a single, bigger one. Helps to optimize video memory costs and render calls.
|
Packs multiple small textures in a single, bigger one. Helps to optimize video memory costs and render calls.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -9,8 +9,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AudioBusLayout" inherits="Resource" category="Core" version="3.1">
|
<class name="AudioBusLayout" inherits="Resource" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Stores information about the audiobusses.
|
Stores information about the audiobusses.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AudioEffect" inherits="Resource" category="Core" version="3.1">
|
<class name="AudioEffect" inherits="Resource" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Audio Effect For Audio.
|
Audio Effect For Audio.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AudioEffectAmplify" inherits="AudioEffect" category="Core" version="3.1">
|
<class name="AudioEffectAmplify" inherits="AudioEffect" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Adds a Amplify audio effect to an Audio bus.
|
Adds a Amplify audio effect to an Audio bus.
|
||||||
Increases or decreases the volume of the selected audio bus.
|
Increases or decreases the volume of the selected audio bus.
|
||||||
@ -9,8 +9,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AudioEffectBandLimitFilter" inherits="AudioEffectFilter" category="Core" version="3.1">
|
<class name="AudioEffectBandLimitFilter" inherits="AudioEffectFilter" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Adds a band limit filter to the Audio Bus.
|
Adds a band limit filter to the Audio Bus.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AudioEffectBandPassFilter" inherits="AudioEffectFilter" category="Core" version="3.1">
|
<class name="AudioEffectBandPassFilter" inherits="AudioEffectFilter" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Adds a band pass filter to the Audio Bus.
|
Adds a band pass filter to the Audio Bus.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<constants>
|
<constants>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AudioEffectChorus" inherits="AudioEffect" category="Core" version="3.1">
|
<class name="AudioEffectChorus" inherits="AudioEffect" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Adds a chorus audio effect.
|
Adds a chorus audio effect.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
@ -8,8 +8,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AudioEffectCompressor" inherits="AudioEffect" category="Core" version="3.1">
|
<class name="AudioEffectCompressor" inherits="AudioEffect" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Adds a Compressor audio effect to an Audio bus.
|
Adds a Compressor audio effect to an Audio bus.
|
||||||
Reduces sounds that exceed a certain threshold level, smooths out the dynamics and increases the overall volume.
|
Reduces sounds that exceed a certain threshold level, smooths out the dynamics and increases the overall volume.
|
||||||
@ -14,8 +14,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AudioEffectDelay" inherits="AudioEffect" category="Core" version="3.1">
|
<class name="AudioEffectDelay" inherits="AudioEffect" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Adds a Delay audio effect to an Audio bus. Plays input signal back after a period of time.
|
Adds a Delay audio effect to an Audio bus. Plays input signal back after a period of time.
|
||||||
Two tap delay and feedback options.
|
Two tap delay and feedback options.
|
||||||
@ -9,8 +9,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AudioEffectDistortion" inherits="AudioEffect" category="Core" version="3.1">
|
<class name="AudioEffectDistortion" inherits="AudioEffect" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Adds a Distortion audio effect to an Audio bus.
|
Adds a Distortion audio effect to an Audio bus.
|
||||||
Modify the sound to make it dirty.
|
Modify the sound to make it dirty.
|
||||||
@ -10,8 +10,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="AudioEffectEQ" inherits="AudioEffect" category="Core" version="3.1">
|
<class name="AudioEffectEQ" inherits="AudioEffect" category="Core" version="3.1.1">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Base class for audio equalizers. Gives you control over frequencies.
|
Base class for audio equalizers. Gives you control over frequencies.
|
||||||
Use it to create a custom equalizer if [AudioEffectEQ6], [AudioEffectEQ10] or [AudioEffectEQ21] don't fit your needs.
|
Use it to create a custom equalizer if [AudioEffectEQ6], [AudioEffectEQ10] or [AudioEffectEQ21] don't fit your needs.
|
||||||
@ -9,8 +9,6 @@
|
|||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<demos>
|
|
||||||
</demos>
|
|
||||||
<methods>
|
<methods>
|
||||||
<method name="get_band_count" qualifiers="const">
|
<method name="get_band_count" qualifiers="const">
|
||||||
<return type="int">
|
<return type="int">
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user