This pull request adds a small amendment to `SceneTree` describing the behavior `_physics_process()` when pausing the scene.
`_physics_process` will completely stop processing collisions and signals whenever the scene is paused, however, the function will still receive calls.
This addresses: #47326
(cherry picked from commit d62175e009)
- Use a colon instead of parentheses and a comma to reduce visual
clutter.
- Pad the line number with 4 spaces to account for scripts longer
than 999 lines.
(cherry picked from commit 1e8976fcb5)
Since this avoids accidentally placing 2D nodes at subpixel positions,
this results in more crisp visuals by default, even when pixel snapping
is disabled in the project settings.
(cherry picked from commit c03e7c2dde)
- Tweak the Android platform logo to remove the Android wordmark,
as it can't be used without explicit permission.
(cherry picked from commit 1513aa9b26)
This gives visual feedback when not starting Godot from a terminal.
This could lead to confusion when placing a Godot binary within a
project folder that has no main scene defined.
(cherry picked from commit 87fb9297e3)
Fixes#43733: "creating SpatialMaterial in a separate thread creates invalid
shaders (temporarily)."
The bug occurred because various setters called in materials' constructors add
materials to queues that are processed on the main thread. This means that
when the materials are created in another thread, they can be processed on the
main thread before the constructor has finished.
The fix adds a flag to affected materials that prevents them from being added
to the queue until their constructors have finished initialising all the
members.
Extra:
- Optimized the debug-only check about why the object is null to determine if it's because it has been deleted (the RC is enough; no need to check the ObjectDB).
- Because of the previous point. the debugger being attached is not required anymore for giving the "Object was deleted" error; from now, it only matters that it's a debug build.
- `is_instance_valid()` is now trustworthy. It will return `true` if, and only if, the last object assigned to a `Variant` is still alive (and not if a new object happened to be created at the same memory address of the old one).
- Replacements of `instance_validate()` are used where possible `Variant::is_invalid_object()` is introduced to help with that. (GDScript's `is_instance_valid()` is good.)
Performances are not great in general, bad on Firefox, on Chrome, well,
it's an improvement compared to the way they broke ScriptProcessorNode.
I'm actually surprised this works, it involves so many allocations, but
there's no way around it when SharedArrayBuffer is not available :(.
The previous error message incorrectly suggested that any Basis could be fixed by calling get_rotation_quation() or orthonormalize(). This PR points out that only a valid rotation Basis can be fixed in this way.
(cherry picked from commit d3a3b3aff3)