Commit Graph

36901 Commits

Author SHA1 Message Date
Ignacio Roldán Etcheverry
cca26cc83f Fix ClassDB API type mismatch bug between --editor and player
There are two ways a class can be added to ClassDB:

- `A`: When an instance of the class is created for the first time. When
  this happends the class is not registered/exposed to scripts.
- `B`: When calling `GDREGISTER_CLASS(ClassName)` or similar. When this
  happens the class is registered/exposed to scripts.

ClassDB has an API type property to differentiate between the core
and editor APIs. Up until now the API type was determined whenever
the class is added to ClassDB (either `A` or `B`).

The problem comes when a class is instantiated (`A`) before
being registered (`B`).
If at this point the current defined API is not the same as when the
class is later registered, this will result in a mismatch between
`--editor` and non-editor apps.
This is specially bad for C# as it makes the editor player abort.

This was happening with `EditorPaths` which, while being registered
during the editor API classes registrations, it was also being
instantiated earlier when running the editor or the project manager,
via a call to `EditorPaths::create()`. This regression was introduced
in 1074017f04.

This commit fixes this simply by re-assigning the class API type when
the class is registered (`B`).
This is correct because API type describes registered/exposed classes.
It shouldn't cause any regressions as the API type should not be
accessed of classes that are not (or not yet) registered/exposed.

Code locations for reference:
- Method to add a class to ClassDB: `ClassDB::_add_class2`
- Code that adds classes to ClassDB post first initialization (`A`):
  `memnew` macros -> `Object::_postinitialize` ->
  `Object::initialize_class` -> `ClassDB::_add_class2`.
- Code adds class to ClassDB and registers/exposes it to scripts:
  `GDREGISTER_CLASS` macros -> `ClassDB::register_class<T>` ->
  `Object::initialize_class` -> `ClassDB::_add_class2`.
2021-08-31 22:35:32 +02:00
Rémi Verschelde
0168699d7a
Merge pull request #51905 from Calinou/doc-string-get-extension
Improve documentation for `String.get_extension()`
2021-08-20 09:24:01 +02:00
Rémi Verschelde
a264f75846
Merge pull request #51903 from nekomatata/shapes-fix-warnings
Fix compilation warnings in Shape2DSW/Shape3DSW
2021-08-20 08:31:08 +02:00
Rémi Verschelde
603502c11c
Merge pull request #51902 from vnen/variant-internal-constructor
Fix initialization of objects in VariantInternal
2021-08-20 08:10:38 +02:00
Hugo Locurcio
09eb98c530
Improve documentation for String.get_extension() 2021-08-20 03:07:15 +02:00
PouleyKetchoupp
dafb6edacf Fix compilation warnings in Shape2DSW/Shape3DSW 2021-08-19 16:19:49 -07:00
George Marques
a685535ad5
Fix initialization of objects in VariantInternal 2021-08-19 20:19:47 -03:00
Rémi Verschelde
4f640762f7
Merge pull request #51881 from KoBeWi/zz__iinnddeexx
Fix z_index applied twice for TileMap layers
2021-08-19 21:30:10 +02:00
Rémi Verschelde
5b30685976
Merge pull request #51583 from nekomatata/capsule-height-radius-setters
Fix capsule height/radius setters with linked properties
2021-08-19 20:48:54 +02:00
Rémi Verschelde
fb8487e011
Merge pull request #51890 from fabriceci/crash-animation-blend-tree
Fix 51889 that cause a crash when you click on an AnimationTree that contains an invalid node
2021-08-19 20:46:33 +02:00
PouleyKetchoupp
645bc94bfc Fix capsule height/radius setters with linked properties
Capsule height and radius setters can modify each other, rather than
using clamping, to avoid cases where values are not set correctly when
loading a scene (depending on the order of properties).

Inspector undo/redo:
Added the possibility to link properties together in the editor, so
they can be undone together, for cases where a property can modify
another one.

Gizmo undo/redo:
Capsule handles pass both radius and height values so they can be undone
together.
2021-08-19 10:31:19 -07:00
Rémi Verschelde
93dac1c7db
Merge pull request #51804 from ThreeRhinosInAnElephantCostume/fixundoredo 2021-08-19 17:49:01 +02:00
JFonS
276d1e4844
Merge pull request #51335 from JFonS/fix-omni-shadow-bias
Improvements to SpotLight3D and OmniLight3D's shadows
2021-08-19 16:33:24 +02:00
Fabio Alessandrelli
4f53e8a9e8
Merge pull request #51885 from akien-mga/html5-GODOT_VERSION_STATUS
HTML5: Handle `GODOT_VERSION_STATUS` env var in `@GODOT_VERSION@`
2021-08-19 16:29:22 +02:00
fabriceci
f871f13340 Avoid a crash when an node of the AnimationTree is invalid 2021-08-19 16:05:35 +02:00
ThreeRhinosInAnElephantCostume
0aa13ecd30 fixed popup_menu buttons getting triggered by lmb press instead of release. 2021-08-19 15:56:33 +02:00
Rémi Verschelde
30a5cdc093
Merge pull request #51876 from ThreeRhinosInAnElephantCostume/fixcameracurrent
Fixed Camera2d's "current" property getting reset when switching scenes
2021-08-19 15:41:46 +02:00
ThreeRhinosInAnElephantCostume
78e2d35a7e fixed camera2d's "current" property getting reset when switching scenes 2021-08-19 15:19:19 +02:00
Rémi Verschelde
16f49d4b29
HTML5: Handle GODOT_VERSION_STATUS env var in @GODOT_VERSION@
Follow-up to #51002.
2021-08-19 15:01:30 +02:00
jfons
55e7832d7b Improvements to SpotLight3D and OmniLight3D's shadows
OmniLight3D:
* Fixed lack of precision in cube map mode by scaling the projection's
  znear.
* Fixed aliasing issues by making the paraboloids use two square regions instead of two half
  squares.
* Fixed shadowmap atlas bleeding by adding padding.
* Fixed sihadow blur's inconsistent radius and unclamped sampling.

SpotLight3D:
* Fixed lack of precision by scaling the projection's znear.
* Fixed normal biasing.

Both:
* Tweaked biasing to make sure it works out of the box in most situations.
2021-08-19 13:46:51 +02:00
kobewi
a7ace9fec1 Fix z_index applied twice for TileMap layers 2021-08-19 12:40:09 +02:00
Rémi Verschelde
8b6c168b3a
Merge pull request #48560 from SaracenOne/collada_semantic_fix_4_0 2021-08-19 09:02:16 +02:00
Rémi Verschelde
5ccf797c9c
Merge pull request #51703 from YeldhamDev/compal_tweaks
Minor tweaks/fixes for the Command Palette
2021-08-19 07:12:38 +02:00
Rémi Verschelde
31dfdcb69e
Merge pull request #51850 from RevoluPowered/ignore_cache_when_server_down
Fix github actions cache server being down failing builds
2021-08-18 23:06:42 +02:00
Gordon MacPherson
27da2e364e Fix github actions cache server being down failing builds 2021-08-18 21:58:54 +01:00
Rémi Verschelde
c0bdea6a67
Merge pull request #51859 from nekomatata/bullet-body-motion-fixes
Fixes in Bullet body_test_motion
2021-08-18 22:46:10 +02:00
Rémi Verschelde
8376af3c31
Merge pull request #51854 from akien-mga/scons-progress-fix-open-error
SCons: Fix potential error when pruning cache on CI
2021-08-18 22:43:35 +02:00
Rémi Verschelde
825b245f0d
SCons: Fix potential error when pruning cache on CI
This could cause spurious errors on CI when trying to prune the cache,
as for some reason it tries to remove files/paths which do not exist.

That points at a bug in the `cache_progress` logic but at least this
workaround should prevent CI failures.
2021-08-18 22:19:51 +02:00
PouleyKetchoupp
45bc97b8b8 Fixes in Bullet body_test_motion
Synchronize fixes from the 3.x branch to keep Bullet code in sync for
later, even if it's disabled for now.
2021-08-18 13:18:19 -07:00
Rémi Verschelde
5aecce775e
Merge pull request #51848 from aaronfranke/float-doc
Improve the docs for the float type
2021-08-18 21:47:12 +02:00
Rémi Verschelde
f6626a40e5
Merge pull request #51843 from reduz/fixes-to-mobile-renderer-3
More fixes to mobile renderer
2021-08-18 20:43:25 +02:00
Rémi Verschelde
e1e01427cc
Merge pull request #50411 from Chaosus/vs_filter
Added port type content filter on port dragging in visual shader
2021-08-18 20:43:03 +02:00
Aaron Franke
70c0154cbe
Improve the docs for the float type 2021-08-18 13:27:22 -05:00
Rémi Verschelde
de7b6d13eb
Merge pull request #51627 from mhilbrunner/todo-for-neikeq 2021-08-18 20:13:50 +02:00
Yuri Roubinsky
f653cc13b9 Added port type content filter on port dragging in visual shader 2021-08-18 21:13:04 +03:00
Rémi Verschelde
a619a92e3c
Merge pull request #51846 from m4gr3d/delegate_restart_invokation_master
Delegate handling and implementation of the restart functionality to the Godot host
2021-08-18 20:12:10 +02:00
Rémi Verschelde
1327c77848
Merge pull request #51845 from Paulb23/hide-textfiles 2021-08-18 20:09:13 +02:00
Rémi Verschelde
2fcf3057fd
Merge pull request #51792 from Chaosus/removed_restart 2021-08-18 19:59:57 +02:00
Fredia Huya-Kouadio
f4222733ca Delegate handling and implementation of the restart functionality to the Godot host. 2021-08-18 10:24:42 -07:00
Paulb23
c13c738c88 Hide TextFile from the API 2021-08-18 17:56:23 +01:00
Paulb23
ac39022dbc Fix visual shader keyword colour 2021-08-18 17:56:04 +01:00
Michael Alexsander
9819be7562 Minor tweaks/fixes for the Command Palette 2021-08-18 13:12:14 -03:00
Rémi Verschelde
01675eb75a
Merge pull request #51837 from pycbouh/particles-adjust-material-bit-size 2021-08-18 17:28:04 +02:00
reduz
700f9d916d More fixes to mobile renderer
* Specify all precision qualifiers
* Makes renderer work on Adreno Vulkan
2021-08-18 12:20:19 -03:00
Yuri Sizov
b88a41a161 Adjust the material key bit size for ParticlesMaterial 2021-08-18 17:53:46 +03:00
Fabio Alessandrelli
2a9c4a59df
Merge pull request #51534 from Faless/mp/4.x_replicator
[Net] MultiplayerReplicator with initial state.
2021-08-18 12:39:55 +02:00
Rémi Verschelde
919040f70d
Merge pull request #51832 from Faless/js/4.x_ci-2.0.27
[CI] Upgrade Emscripten to 2.0.27.
2021-08-18 12:31:08 +02:00
Fabio Alessandrelli
71fb2429a0 [CI] Upgrade Emscripten to 2.0.27.
Update Godot Javascript FS library to manually depend on ERRNO_CODES.
2021-08-18 10:30:50 +01:00
Fabio Alessandrelli
d4dd859991 [Net] MultiplayerReplicator with initial state.
Move the former "spawnables" functions to a dedicated
MultiplayerReplicator class.
Support custom overrides in replicator.
Spawn/despawn messages can now contain a state.
The state can be automatically encoded/decoded by passing the desired
object properties to `spawnable_config`.
You can use script properties to optimize the state representation.
2 Callables can be also specified to completely override the default
implementation for sending and receiving the spawn/despawn event.
(9 bytes overhead, and there's room for improvement here).
When using a custom implementation `spawn` and `despawn` can be called
with any Object, `send_spawn`/`send_despawn` can receive any Variant as
a state, and the path is not required.

Two new functions, `spawn` and `despawn`, convey the implementation
independent method for requesting a spawn/despawn of an Object, while
`send_spawn` and `send_despawn` represent the more low-level send event
for a Variant to be used by the custom implementations.
2021-08-18 10:21:29 +01:00
Rémi Verschelde
a031579286
Merge pull request #50752 from Phischermen/indeterminate_checkmark_api
Added icons and API for indeterminate checkmarks for the Tree class.
2021-08-18 10:31:06 +02:00