summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DONORS.md463
-rw-r--r--core/config/engine.cpp16
-rw-r--r--core/core_builders.py26
-rw-r--r--core/object/script_language.cpp36
-rw-r--r--doc/classes/SubViewportContainer.xml2
-rw-r--r--editor/editor_about.cpp34
-rw-r--r--editor/editor_node.cpp6
-rw-r--r--editor/import/resource_importer_scene.cpp6
-rw-r--r--editor/import/resource_importer_scene.h2
-rw-r--r--modules/mono/csharp_script.cpp12
-rw-r--r--scene/gui/tree.cpp2
11 files changed, 265 insertions, 340 deletions
diff --git a/DONORS.md b/DONORS.md
index 6b5dd5242d..f9b565baf9 100644
--- a/DONORS.md
+++ b/DONORS.md
@@ -10,363 +10,349 @@ used, are described on [Godot's website](https://godotengine.org/donate).
The following is a list of the current monthly donors, who will have their
generous deed immortalized in the next stable release of Godot Engine.
+## Patrons
+
+ OSS Capital <https://oss.capital>
+ Re-Logic <https://re-logic.com>
+
## Platinum sponsors
- Gamblify <https://www.gamblify.com>
Heroic Labs <https://heroiclabs.com>
- Spiffcode <http://spiffcode.com>
+ Ramatak <https://ramatak.com>
+ W4 Games <https://w4games.com>
## Gold sponsors
- None currently, become one! <https://godotengine.org/donate>
+ Mega Crit <https://www.megacrit.com>
+ Prehensile Tales <https://prehensile-tales.com>
+ Robot Gentleman <http://robotgentleman.com>
## Silver sponsors
Affray Interactive <https://scp.games/pandemic>
+ Broken Rules <https://brokenrul.es>
+ Chasing Carrots <https://www.chasing-carrots.com>
Delton Ding
+ Gamblify <https://www.gamblify.com>
+ Null <https://null.com>
+ Orbital Knight <https://www.orbitalknight.com>
Playful Studios <https://playfulstudios.com>
- Robot Gentleman <http://robotgentleman.com>
-## Bronze sponsors
+## Diamond members
+
+ Sylv <https://rankith.itch.io/unnamed-space-idle-prototype>
+ And 4 anonymous donors
+
+## Titanium members
Basically Games
- Bippinbits <https://bippinbits.com>
- Brandon Lamb
- Bri
+ FDG Entertainment <https://www.fdg-entertainment.com/>
+ Game Dev Artisan <https://gamedevartisan.com/>
Garry Newman
- Isaiah smith
- Jb Evain
- Keepsake Games <https://keepsake.games>
- Kenney <https://kenney.nl>
- Kitcat490
- Kyle Szklenski
+ Isaiah Smith <https://www.isaiahsmith.dev/>
+ katnamag <https://katnamag.com/>
+ Kenney <https://kenney.nl/>
+ Lucid Silence Games
Matthew Campbell
Maxim Karsten
- Nik Rudenko
- TrampolineTales <https://trampolinetales.com>
+ Midjiwan AB <https://polytopia.io/>
+ PolyMars <https://polymars.dev/>
+ Razenpok <https://www.youtube.com/watch?v=-QxI-RP6-HM>
+ RPG in a Box <https://www.rpginabox.com/>
+ Sterling Long <https://www.sterlinglong.me/>
+ Sunshower <https://github.com/Phanterm>
+ TrampolineTales <https://trampolinetales.com/>
+ Wilfred James <https://twitter.com/0430agi>
+ And 7 anonymous donors
-## Mini sponsors
+## Platinum members
AD Ford
- Albin Lundahl
- Andres Hernandez
- Andrew Dunai
- anti666
- Christopher Shifflett
+ Andy Touch
+ BlockImperiumGames (BIG)
+ Christian Baune
Christoph Woinke
- Daniel Edwards
+ Christopher Shifflett
Darrin Massena
- David Mydlarz
Edward Flick
- Hein-Pieter van Braam
+ F*ckedByUnity
+ Golden Skull Art
+ HP van Braam
Jonah Stich
- Justin Arnold
Justin McGettigan
Justo Delgado Baudí
- Kossi Selom Banybah
- Lloyd Bond
Marek Belski
- Markus Ort
- Michael
Mike King
Nassor Paulino da Silva
- nate-wilkins
Neal Gompa (Conan Kudo)
- Nick Macholl
- Patrick Horn
- Rami
Ronnie Cheng
Ryan Heath
Samantha
+ Scott Pezza
ShikadiGum
- Slobodan Milnovic
+ Silver Creek Entertainment
+ Stephan Kessler
Stephan Lanfermann
+ TigerJ
Tim Yuen
Violin Iliev
Vladimír Chvátil
+ iCommitGames
+ nate-wilkins
+ And 16 anonymous donors
-## Gold donors
+## Gold members
- Adam Brown
- albinaask
- Allen Pestaluky
+ @reilaos
+ Artur Ilkaev
Asher Glick
- Barugon
+ Ashtreighlia
+ Atsui
+ Ben Burbank
+ Ben Rog-Wilhelm
Benito
- Carlo Cabanilla
+ Benjamin Sarsgard
+ Benjo Kho
+ Bernd Barsuhn
+ Blake Farnsworth
+ Brian Ernst
+ Brut
+ Chen-Pang He (jdh8)
+ Cosmin Munteanu
+ Coy Humphrey
Daniel James
- David Fedorchak
- David Gehrig
+ David Chen Zhen
+ David Coles
David Hubber
David Snopek
- Dima Paloskin
+ Dehyvis Coronel
+ Dustuu
Ed Morley
- Guilherme de Oliveira
- Guy Kay Jay
+ ElektroFox
+ Enclusa Games
+ Eric Phy
+ Faisal Al-Kubaisi (QatariGameDev)
+ FeralBytes
+ Frederick Ayala
+ GlassBrick
+ Grau
+ Guangzhou Lingchan
+ Hammster
+ Iggy Zuk
+ Jacob (HACKhalo2 Studios)
+ Jam
+ James Green
+ Jason Cawood
Javier Roman
- Jonathan Wright
+ Joel Martinez
+ John Gabriel
Jon Woodward
- Karl Werf
- Klavdij Voncina
- Manuele Finocchiaro
- Markus Wiesner
- Mateo Navarrete
- Matthew Hillier
+ José Canepa
+ João Pedro Braz
+ KAR Games
+ Kamran Wali
+ Karasu Studio
+ KekLuck
+ Kenneth Christensen
+ Kristian Kriehl
+ Logan Apple
+ Luca Junge
+ Luca Vazzano
+ LyaaaaaGames
+ MHDante
+ Malcolm Nixon
+ Manuel Requena
+ Martin Agnar Dahl
+ Martin Šenkeřík
+ Matheus Gritz
+ Megabit Interactive
+ Mennskr
+ Metanaut
+ Modus Ponens
+ Niklas Wahrman
+ NotNet
+ Obelisk Island Studios
Officine Pixel S.n.c.
- Pedro Silva
- Sarksus
- Sean
+ Oleksii Nosov
+ Pav Soor
+ Piotr Siuszko
+ RAWRLAB Games
+ RadenTheFolf
+ Request
+ Robin Ward
+ Saltlight Studio
+ Samuel Judd
+ Silverclad Studios
Sofox
- Stephan Kessler
+ Space Kraken Studios
+ Spoony Panda
+ Sympa City
+ ThePolyglotProgrammer
+ Tim Nedvyga
Tom Langwaldt
+ Vincent Foulon
+ Weasel Games
+ WuotanStudios.com
+ Zi
+ albinaask
+ endaye
+ getIntoGameDev
+ nezticle
+ ohanaya3
+ re:thinc
tukon
+ 杨烈胜(zedrun)
- ␣
- Acheron
- AdamRatai
Alexander Erlemann
Alexandre VALIN
- Alexej Kowalew
Alex Khayrullin
Algebrute
- alice gambrell
- Alo Mis
Andriy
Antanas Paskauskas
+ anti666
Ari
Arisaka Mayuki
Arthur S. Muszynski
- BasicIncomePlz
- Brandon Hawkinson
- BrizzleBrip
- c64cosmin
+ Bread
Cameron Connolly
- Carlo del Mundo
Charlie Whitfield
- Chris Petrich
- Chris Serino
Craig Ostrin
- Craig Scarborough
- Craig Smith
+ Craig Swain
CzechBlueBear
Daniel Eichler
- Daniel Grice
Daniel Reed
- Daniel Tebbutt
Dennis Belfrage
- Donn Eddy
Emily A. Bellows
Eric Brand
- Eugenio Hugo Salgüero Jáñez
Felix Winterhalter
- Florencio Olsen
Fransiska
- Furroy
- Gabrielius Vaiškūnas
- Gary Hulst
- Geoffroy Warin
George Venizelos
- GlassBrick
- GrayDwarf
- Guilherme Felipe de C. G. da Silva
- Guillaume Pham Ngoc
Harry Tumber
Harvey Fong
Horváth-Lázár Péter
illuxxium
- Jamal Bencharki
James Couzens
Jared White
- Jason Yundt
Jesús Chicharro
- Jihun Moon
Joel Fivat
Johnathan Kupferer
Josef Stumpfegger
+ Josh Nygaard
Joshua Lesperance
- Judd
- Julian Todd
- JUSTIN CARROLL
- Kelson Ball
Kelteseth
Khora
kickmaniac
- kinfox
- leetNightshade
Liam Smyth
LoparPanda
- Lucaaa
- Luca Vazzano
- LyaaaaaGames
Marcus Dobler
- Marcus Richter
- Mark Barrett
- Martin Eigel
Martin Gulliksson
- Martin Kotz
Martin Soucek
Matt Greene
Matthew Dana
- Matthieu Huvé
Michael Dürwald
Michael Policastro
- MikadoSC
n00sh
nate etan
- Nicola Cocchiaro
Nicolás Monner Sans
- Nikita Blizniuk
Nikita Rotskov
Nikola Whallon
Oliver Dick
- Otis Clark
Patrick Wuttke
- Paul Hocker
Pete Goodwin
- Petr Malac
- Petrus Prinsloo
Philip Woods
- Rebekah Farr
- red1939
Reilt
- Rene Tailleur
Rickard Hermanson
Rob
Rob McInroy
RodZilla
- Ronan Zeegers
Ronnie Ashlock
- Ronny Mühle
+ Ruzgud
Ryan Breaker
"Sage Automatic Systems, LLC"
- Samuel Hummerstone
- Samuel Judd
- schroedinger's possum
Shishir Tandale
- SKison
Song Junwoo
spacechase0
- SpicyCactuar
- Steven Landow
- Stoned Xander
sus
Talii
- Teslatech
- Thomas Bjarnelöf
Thomas Kurz
- Tim Nedvyga
Tobias Bocanegra
Tobias Raggl
Torbulous
toto bibi
- Troy Kinsella
- Turntsnaco
- UltyX
Valryia
- VeryProfessionalDodo
VoidPointer
whatever
- Winston
Yifan Lai
- Yuancheng Zhang
zkip lan
-## Silver donors
-
- Aaron Adriano
Aaron Mayfield
- Aaron Oldenburg
- Adam Brunnmeier
Adam Carr
- Adam N Webber
Adam Smeltzer
- Adinimys
Adisibio
- Adriano Orioli
Adrien de Pierres
Agustinus Arya
+ Aidan Marwick
Aidan O'Flannagain
+ aiekick
Aiguo Wang
- ajaxcc
+ AJWolbers
Aki Mimoto
Alan Beauchamp
- Alberto Salazar Muñoz
- Alberto Vilches
Alder Stefano
Alejandro Saucedo
AleMax
Alex Clavelle
Alex de la Mare
alex raeside
- Allan Davis
Andre Altmueller
+ Andreas Østergaard Nielsen
Andrei Pufu
Andre Stackhouse
Andrew
Andrew Groot
andrew james morris
- Andy Baird
Ano Nim
- Anthony Avina
- Anton Bouwer
Arch Toasty
Arda Erol
Arthur Brainville
Arturo Rosales
Ash K
Aubrey Falconer
- aurelien condomines
Austin Miller
Azar Gurbanov
AzulCrescent
Balázs Batári
Beau Seymour
Benedikt
- Ben Vercammen
Ben Visness
Bill Thibault
- bitbrain
Bjarne Voigtländer
- Brady Goldsworthy
- Bram
- Brian
+ Bread
Brian Ford
- Brigham Keys
- Burney Waring
Caleb Makela
Caliburn
Cameron Meyer
Carlos Rios
Carl van der Geest
- Cesar Ruiz
- Chad Steadman
+ Cerno_b
Checkpoint Charlie
chendrak
Chris Cavalluzzi
Chris Jagusch
- Chris Langford
- Chris Ridenour
- Christer Stenbrenden
- Christian Alexander Bjørklund Bøhler
- Christian Kaltenecker
+ Chris Lee
Christian Mauduit
- Christian Winter
Christoph Czurda
Christophe Gagnier
Ciyvius
- Codex404
Cody Parker
Conall O
Corchari
Corey W
- Craig Post
- CrispyPin
cynwav
Dakota Watkins
+ Daniele Tolomelli
Daniel Hoffmann
- Danielle
Daniel Ramos
- Dare Looks
Daren Scot Wilson
Dave Jansen
Davesnothere
@@ -377,63 +363,45 @@ generous deed immortalized in the next stable release of Godot Engine.
Devin Carraway
Devin R
Dimitri Roche
- Dominik Wetzel
Donovan Hutcheon
- Doug Walker
- Dragontrapper
dragoon
- Dr Ewan Murray
Ducky
- Duobix
Duodecimal
- Eduardo Teixeira
Edward Swartz
Egon Elbre
- Elgenzay
Elijah Anderson
Emerson MX
- Ends
Ephemeral
+ Eric Persson
Eric Stokes
Eric Williams
Erkki Seppälä
Ewan Holmes
- Faisal Alkubaisi
- fby
Felix Adam
Fer DC
- Filip Lundby
Frank
- Frank Kurka
Frying☆Pan
Game Endeavor
Garrett Steffen
Gary Thomas
gebba
- George Marques
Green Fox
Greg Burkland
- Gregory Campbell
Greyson Richey
- Grid
Grominet
Guldoman
Guo Hongci
Hans Jorgensen
Haplo
Helge Maus
- Helianthus Games
Heribert Hirth
Ian Richard Kunert
Ian Williams
- Interstice
itsybitesyspider
iveks
- Jacob D
- Jaguar
+ Jacob Wallace
Jako Danar
James Gary
- James Thomas
Jamie Massey
JARKKO PARVIAINEN
Jason Evans
@@ -441,115 +409,78 @@ generous deed immortalized in the next stable release of Godot Engine.
Jeff Hungerford
Jeffrey Berube
Jennifer Graves
- Jesse Dubay
+ Joakim Askenbäck
João Pedro Braz
- John Barlex
John Bruce
- John Palgut
Jonas
Jonas Arndt
- Jonas Bernemann
- Jonas LHOSTE
- Jonas Rudlang
Jonas Yamazaki
Jonathan Bieber
Jonathan Ellis
- Jonathan G
Jon Sully
- Jordy Goodridge
Joseph Catrambone
- Josh Segall
Josh Taylor
Joshua Heidrich
- Jozef Krcho
Juanfran
Juan Maggi
Juan Uys
Jueast
Julian le Roux
- Julien Kaspar
- Justin Hamilton
+ Justin
Justin Spedding
- J Vetulani
Kalydi Balázs
Katsuomi Kobayashi
Keedong Park
Keegan Scott
Keith Bradner
- Ken Minardo
Kent Jofur
- killaQueen
kindzadza
Kodera Software
- Kostas Mouratidis
- Krishna Nadoor
KsyTek Games
- kycho
Kyle Burnett
Kyle Jacobs
Lasse le Dous
- Laurent Dethoor
- Laxman Pradhan
- Lech Rozanski
Leland Vakarian
- Leonardo Baumle
Levi Berciu
- Levi Lindsey
Linus Lind Lundgren
- Logan Apple
- Logan Bratton
- Lonnie Cox
Ludovic DELVAL
Luigi Renna
- Luis Ernesto Del Toro Peña
- Luis Gaemperle
Luis Morao
Lukas Komischke
Luke Diasio
- Luke Kasz
Major Haul
Malcolm
+ Manuele Finocchiaro
Mara Huldra
- Marcell Simon
Marcos Heitor Carvalho
Markie Music
- Mark Tyler
- Markus Martin
Markus Michael Egger
Markus Strompen
- Martin Fitzke
Martin Holas
- Martin Linklater
Martin Liška
Martin Trbola
- Martin Zabinski
Matěj Drábek
+ Mateo Navarrete
+ Mathieu
Matt Edwards
- Matthew
- Matthew Booe
Maverick
Maxime Blade
Maxwell
McStuffings
Melissa Mears
Metal Demon 2000
- Michael
Michael Morrison
Michal Skwarek
Mikael Nordenberg
- Mikail Freitas
Mikayla
Mike Copley
- Mike McRoberts
Mitchell J. Wagner
- MJacred
- ModularMind
- Molinghu
Molly Jameson
MoltenGears
Moritz Weissenberger
MrAZIE
Mrjemandem
+ naonya3
Nathaniel
neguse
neighty
@@ -557,74 +488,49 @@ generous deed immortalized in the next stable release of Godot Engine.
Neofytos Chimonas
Nerdforge
Nerdyninja
- Nicholas La Roux
Nick Eldrenkamp
Nicolas Rosset
- Nicolò Brigadoi Calamari
- Nils Nordmark
+ Nik Rudenko
Noel Billig
- Noesis
- obscuresteel
- Okatima
- Oleg Reva
Olexa Tourko
- Oliver Ambrose
oscar1000108
Oscar Domingo
+ ozrk
Parth Patel
+ Patrick Horn
Patrick Indermühle
Patrickm
Patrick Nafarrete
Paul Black
Paul Gieske
- Paul Hankins
Paul Mozet
- Paweł Kowal
Paweł Łyczkowski
- Pedro Henrique Martins Garcia
+ Pete
Philip Ludington (MrPhil)
Phoenix Jauregui
Pierre Caye
Pixel Archipel
- pj
Point08
Portponky
- Preethi Vaidyanathan
PsycHead
- PsyCrab
Puntigames
- pwab
Quincy Quincy
Quinn Morrison
- Rafa Laguna
+ Raghava Kovvali
RagingRoosevelt
Ragnar Pettersson
- Rainer Amler
Rammeow
Rebecca H
- Relintai
- Remi Rampin
- Reneator
Richard Hayes
- Richard Ivánek
Riley
- Robin Ward
RobotCritter
Rob Ruana
Rodrigo Loli
- Roger Smith
- Roglozor
Roka
Roland Rząsa
- Roman Papush
- Roy Scayged
Russ
- Russell Matney
Ryan Groom
- Sacha Waked (Shaidak)
Sammy Fischer
- Sangeeth Pavithran
- Sasha Schwartz
Sebastian Michailidis
Sekuta
SeongWan Kim
@@ -640,77 +546,52 @@ generous deed immortalized in the next stable release of Godot Engine.
sirn
Skalli
slavfox
- SleepDepJoel1
smbe19
smo1704
- Solene Waked
- Sophie Winter
+ SpicyCactuar
Squidgy
Squirrel
- SSebigo
Stephen Rice
Stephen Schlie
- summerblind
Sung soo Choi
SxP
tadashi endo
Tarch
- Terry
TheVoiceInMyHead
Thibaut DECROMBECQUE
thomas
Thomas Bechtold
- Thomas Detoy
Thomas Pickett
- thommy
- Till1805
Tim Drumheller
- Tim Erskine
Tim Gleason
Tim Klein
Timothy B. MacDonald
Tim Raveling
Tim Riley
- Toadile
- Tom Coxon
Tom Webster
- Torsten Crass
- Trent Skinner
- tril zerobyte
- Tryggve Sollid
Turgut Temucin
- Tycho
Tyler Stafos
Tyler Stepke
Ukko K.
Uther
- v01tech
- Vaida
Vaughan Ling
- Vavin.X
+ vgmoose
Vincent Barkmann
- Vincent Cloutier
- Vincent Foulon
Vulinux
Wapiti .
+ wasitworthitdev
Wiley Thompson
William Bodin
William Edwards
- William F Siqueira
- Wolfram
- Woonki Moon
- Xananax
+ Xatonym
Yan Shi
- yin
Zekim
- Zher Huei Lee
- Zoee Silcock
- Zyphery
ケルベロス
貴宏 小松
- 郝晨煜
-## Bronze donors
+ And 194 anonymous donors
+
+## Silver and bronze donors
There are even more donors that support the project with a small monthly donation.
Every bit counts and we thank every one of them for their amazing support!
diff --git a/core/config/engine.cpp b/core/config/engine.cpp
index 0e27d556ec..24080c056a 100644
--- a/core/config/engine.cpp
+++ b/core/config/engine.cpp
@@ -176,14 +176,14 @@ TypedArray<Dictionary> Engine::get_copyright_info() const {
Dictionary Engine::get_donor_info() const {
Dictionary donors;
- donors["platinum_sponsors"] = array_from_info(DONORS_SPONSOR_PLATINUM);
- donors["gold_sponsors"] = array_from_info(DONORS_SPONSOR_GOLD);
- donors["silver_sponsors"] = array_from_info(DONORS_SPONSOR_SILVER);
- donors["bronze_sponsors"] = array_from_info(DONORS_SPONSOR_BRONZE);
- donors["mini_sponsors"] = array_from_info(DONORS_SPONSOR_MINI);
- donors["gold_donors"] = array_from_info(DONORS_GOLD);
- donors["silver_donors"] = array_from_info(DONORS_SILVER);
- donors["bronze_donors"] = array_from_info(DONORS_BRONZE);
+ donors["patrons"] = array_from_info(DONORS_PATRONS);
+ donors["platinum_sponsors"] = array_from_info(DONORS_SPONSORS_PLATINUM);
+ donors["gold_sponsors"] = array_from_info(DONORS_SPONSORS_GOLD);
+ donors["silver_sponsors"] = array_from_info(DONORS_SPONSORS_SILVER);
+ donors["diamond_members"] = array_from_info(DONORS_MEMBERS_DIAMOND);
+ donors["titanium_members"] = array_from_info(DONORS_MEMBERS_TITANIUM);
+ donors["platinum_members"] = array_from_info(DONORS_MEMBERS_PLATINUM);
+ donors["gold_members"] = array_from_info(DONORS_MEMBERS_GOLD);
return donors;
}
diff --git a/core/core_builders.py b/core/core_builders.py
index e40ebbb14d..8b6b87ad83 100644
--- a/core/core_builders.py
+++ b/core/core_builders.py
@@ -117,24 +117,24 @@ def make_authors_header(target, source, env):
def make_donors_header(target, source, env):
sections = [
+ "Patrons",
"Platinum sponsors",
"Gold sponsors",
"Silver sponsors",
- "Bronze sponsors",
- "Mini sponsors",
- "Gold donors",
- "Silver donors",
- "Bronze donors",
+ "Diamond members",
+ "Titanium members",
+ "Platinum members",
+ "Gold members",
]
sections_id = [
- "DONORS_SPONSOR_PLATINUM",
- "DONORS_SPONSOR_GOLD",
- "DONORS_SPONSOR_SILVER",
- "DONORS_SPONSOR_BRONZE",
- "DONORS_SPONSOR_MINI",
- "DONORS_GOLD",
- "DONORS_SILVER",
- "DONORS_BRONZE",
+ "DONORS_PATRONS",
+ "DONORS_SPONSORS_PLATINUM",
+ "DONORS_SPONSORS_GOLD",
+ "DONORS_SPONSORS_SILVER",
+ "DONORS_MEMBERS_DIAMOND",
+ "DONORS_MEMBERS_TITANIUM",
+ "DONORS_MEMBERS_PLATINUM",
+ "DONORS_MEMBERS_GOLD",
]
src = source[0]
diff --git a/core/object/script_language.cpp b/core/object/script_language.cpp
index 5f53975bf6..086f8a666e 100644
--- a/core/object/script_language.cpp
+++ b/core/object/script_language.cpp
@@ -223,26 +223,48 @@ void ScriptServer::init_languages() {
}
}
+ HashSet<ScriptLanguage *> langs_to_init;
{
MutexLock lock(languages_mutex);
-
for (int i = 0; i < _language_count; i++) {
- _languages[i]->init();
+ if (_languages[i]) {
+ langs_to_init.insert(_languages[i]);
+ }
}
+ }
+ for (ScriptLanguage *E : langs_to_init) {
+ E->init();
+ }
+
+ {
+ MutexLock lock(languages_mutex);
languages_ready = true;
}
}
void ScriptServer::finish_languages() {
- MutexLock lock(languages_mutex);
+ HashSet<ScriptLanguage *> langs_to_finish;
- for (int i = 0; i < _language_count; i++) {
- _languages[i]->finish();
+ {
+ MutexLock lock(languages_mutex);
+ for (int i = 0; i < _language_count; i++) {
+ if (_languages[i]) {
+ langs_to_finish.insert(_languages[i]);
+ }
+ }
+ }
+
+ for (ScriptLanguage *E : langs_to_finish) {
+ E->finish();
}
- global_classes_clear();
- languages_ready = false;
+ {
+ MutexLock lock(languages_mutex);
+ languages_ready = false;
+ }
+
+ global_classes_clear();
}
bool ScriptServer::are_languages_initialized() {
diff --git a/doc/classes/SubViewportContainer.xml b/doc/classes/SubViewportContainer.xml
index e7d7883c78..e47e27c0ce 100644
--- a/doc/classes/SubViewportContainer.xml
+++ b/doc/classes/SubViewportContainer.xml
@@ -11,7 +11,7 @@
<tutorials>
</tutorials>
<methods>
- <method name="_propagate_input_event" qualifiers="virtual const">
+ <method name="_propagate_input_event" qualifiers="virtual const" is_experimental="true">
<return type="bool" />
<param index="0" name="event" type="InputEvent" />
<description>
diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp
index 0f47466d23..f6360db569 100644
--- a/editor/editor_about.cpp
+++ b/editor/editor_about.cpp
@@ -161,7 +161,8 @@ EditorAbout::EditorAbout() {
Label *about_text = memnew(Label);
about_text->set_v_size_flags(Control::SIZE_SHRINK_CENTER);
- about_text->set_text(String::utf8("\xc2\xa9 2014-present ") + TTR("Godot Engine contributors") + "." +
+ about_text->set_text(
+ String::utf8("\xc2\xa9 2014-present ") + TTR("Godot Engine contributors") + "." +
String::utf8("\n\xc2\xa9 2007-2014 Juan Linietsky, Ariel Manzur.\n"));
version_info_vbc->add_child(about_text);
@@ -182,24 +183,35 @@ EditorAbout::EditorAbout() {
// TRANSLATORS: This refers to a job title.
dev_sections.push_back(TTR("Project Manager", "Job Title"));
dev_sections.push_back(TTR("Developers"));
- const char *const *dev_src[] = { AUTHORS_FOUNDERS, AUTHORS_LEAD_DEVELOPERS,
- AUTHORS_PROJECT_MANAGERS, AUTHORS_DEVELOPERS };
+ const char *const *dev_src[] = {
+ AUTHORS_FOUNDERS,
+ AUTHORS_LEAD_DEVELOPERS,
+ AUTHORS_PROJECT_MANAGERS,
+ AUTHORS_DEVELOPERS,
+ };
tc->add_child(_populate_list(TTR("Authors"), dev_sections, dev_src, 1));
// Donors
List<String> donor_sections;
+ donor_sections.push_back(TTR("Patrons"));
donor_sections.push_back(TTR("Platinum Sponsors"));
donor_sections.push_back(TTR("Gold Sponsors"));
donor_sections.push_back(TTR("Silver Sponsors"));
- donor_sections.push_back(TTR("Bronze Sponsors"));
- donor_sections.push_back(TTR("Mini Sponsors"));
- donor_sections.push_back(TTR("Gold Donors"));
- donor_sections.push_back(TTR("Silver Donors"));
- donor_sections.push_back(TTR("Bronze Donors"));
- const char *const *donor_src[] = { DONORS_SPONSOR_PLATINUM, DONORS_SPONSOR_GOLD,
- DONORS_SPONSOR_SILVER, DONORS_SPONSOR_BRONZE, DONORS_SPONSOR_MINI,
- DONORS_GOLD, DONORS_SILVER, DONORS_BRONZE };
+ donor_sections.push_back(TTR("Diamond Members"));
+ donor_sections.push_back(TTR("Titanium Members"));
+ donor_sections.push_back(TTR("Platinum Members"));
+ donor_sections.push_back(TTR("Gold Members"));
+ const char *const *donor_src[] = {
+ DONORS_PATRONS,
+ DONORS_SPONSORS_PLATINUM,
+ DONORS_SPONSORS_GOLD,
+ DONORS_SPONSORS_SILVER,
+ DONORS_MEMBERS_DIAMOND,
+ DONORS_MEMBERS_TITANIUM,
+ DONORS_MEMBERS_PLATINUM,
+ DONORS_MEMBERS_GOLD,
+ };
tc->add_child(_populate_list(TTR("Donors"), donor_sections, donor_src, 3));
// License
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 207f524194..e9276a5681 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -1023,6 +1023,12 @@ void EditorNode::_resources_reimported(const Vector<String> &p_resources) {
}
}
+ // Editor may crash when related animation is playing while re-importing GLTF scene, stop it in advance.
+ AnimationPlayer *ap = AnimationPlayerEditor::get_singleton()->get_player();
+ if (ap && scenes.size() > 0) {
+ ap->stop(true);
+ }
+
for (const String &E : scenes) {
reload_scene(E);
reload_instances_with_path_in_edited_scenes(E);
diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp
index d5da1183fb..c895c2f6c5 100644
--- a/editor/import/resource_importer_scene.cpp
+++ b/editor/import/resource_importer_scene.cpp
@@ -2004,7 +2004,7 @@ Array ResourceImporterScene::_get_skinned_pose_transforms(ImporterMeshInstance3D
return skin_pose_transform_array;
}
-void ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_mesh_data, bool p_generate_lods, bool p_create_shadow_meshes, LightBakeMode p_light_bake_mode, float p_lightmap_texel_size, const Vector<uint8_t> &p_src_lightmap_cache, Vector<Vector<uint8_t>> &r_lightmap_caches) {
+Node *ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_mesh_data, bool p_generate_lods, bool p_create_shadow_meshes, LightBakeMode p_light_bake_mode, float p_lightmap_texel_size, const Vector<uint8_t> &p_src_lightmap_cache, Vector<Vector<uint8_t>> &r_lightmap_caches) {
ImporterMeshInstance3D *src_mesh_node = Object::cast_to<ImporterMeshInstance3D>(p_node);
if (src_mesh_node) {
//is mesh
@@ -2185,6 +2185,8 @@ void ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_m
for (int i = 0; i < p_node->get_child_count(); i++) {
_generate_meshes(p_node->get_child(i), p_mesh_data, p_generate_lods, p_create_shadow_meshes, p_light_bake_mode, p_lightmap_texel_size, p_src_lightmap_cache, r_lightmap_caches);
}
+
+ return p_node;
}
void ResourceImporterScene::_add_shapes(Node *p_node, const Vector<Ref<Shape3D>> &p_shapes) {
@@ -2564,7 +2566,7 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
if (subresources.has("meshes")) {
mesh_data = subresources["meshes"];
}
- _generate_meshes(scene, mesh_data, gen_lods, create_shadow_meshes, LightBakeMode(light_bake_mode), lightmap_texel_size, src_lightmap_cache, mesh_lightmap_caches);
+ scene = _generate_meshes(scene, mesh_data, gen_lods, create_shadow_meshes, LightBakeMode(light_bake_mode), lightmap_texel_size, src_lightmap_cache, mesh_lightmap_caches);
if (mesh_lightmap_caches.size()) {
Ref<FileAccess> f = FileAccess::open(p_source_file + ".unwrap_cache", FileAccess::WRITE);
diff --git a/editor/import/resource_importer_scene.h b/editor/import/resource_importer_scene.h
index 17681387e6..698e5bf629 100644
--- a/editor/import/resource_importer_scene.h
+++ b/editor/import/resource_importer_scene.h
@@ -216,7 +216,7 @@ class ResourceImporterScene : public ResourceImporter {
Array _get_skinned_pose_transforms(ImporterMeshInstance3D *p_src_mesh_node);
void _replace_owner(Node *p_node, Node *p_scene, Node *p_new_owner);
- void _generate_meshes(Node *p_node, const Dictionary &p_mesh_data, bool p_generate_lods, bool p_create_shadow_meshes, LightBakeMode p_light_bake_mode, float p_lightmap_texel_size, const Vector<uint8_t> &p_src_lightmap_cache, Vector<Vector<uint8_t>> &r_lightmap_caches);
+ Node *_generate_meshes(Node *p_node, const Dictionary &p_mesh_data, bool p_generate_lods, bool p_create_shadow_meshes, LightBakeMode p_light_bake_mode, float p_lightmap_texel_size, const Vector<uint8_t> &p_src_lightmap_cache, Vector<Vector<uint8_t>> &r_lightmap_caches);
void _add_shapes(Node *p_node, const Vector<Ref<Shape3D>> &p_shapes);
enum AnimationImportTracks {
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index 56e4fa53d0..8e1587997b 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -2620,12 +2620,12 @@ MethodInfo CSharpScript::get_method_info(const StringName &p_method) const {
}
Variant CSharpScript::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
- ERR_FAIL_COND_V(!valid, Variant());
-
- Variant ret;
- bool ok = GDMonoCache::managed_callbacks.ScriptManagerBridge_CallStatic(this, &p_method, p_args, p_argcount, &r_error, &ret);
- if (ok) {
- return ret;
+ if (valid) {
+ Variant ret;
+ bool ok = GDMonoCache::managed_callbacks.ScriptManagerBridge_CallStatic(this, &p_method, p_args, p_argcount, &r_error, &ret);
+ if (ok) {
+ return ret;
+ }
}
return Script::callp(p_method, p_args, p_argcount, r_error);
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index a4c239cf53..1d06ce05ae 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -4544,6 +4544,8 @@ TreeItem *Tree::get_selected() const {
void Tree::set_selected(TreeItem *p_item, int p_column) {
ERR_FAIL_INDEX(p_column, columns.size());
ERR_FAIL_NULL(p_item);
+ ERR_FAIL_COND_MSG(p_item->get_tree() != this, "The provided TreeItem does not belong to this Tree. Ensure that the TreeItem is a part of the Tree before setting it as selected.");
+
select_single_item(p_item, get_root(), p_column);
}