It was insipred by godot 4's ProcessGroup system, however while Godot 4's implementation tries to hide threaded processing as much as possible, this implementation focuses on making it explicitly known and obvious to the user, in a (hopefully) almost bolierplate free way.
Also with the available options this node can be used for other purposes, like multi threaded cron job like method calls when paired with a Timer in manual mode.
* Node processing works on the concept of process groups.
* A node group can be inherited, run on main thread, or a sub-thread.
* Groups can be ordered.
* Process priority is now present for physics.
This is the first steps towards implementing godotengine/godot-proposals#6424.
No threading or thread guards exist yet in most of the scene code other than Node. That will have to be added later.
- reduz
98c655ec8d
- Only got the smaller improvements, and the thread safety for Node and SceneTree. I'm planning to implement a similar system, but I have a different way of doing it in mind.
When enabled, this scales the editor icons to improve usability on touchscreen devices.
In addition this commit fixes touch detection for the collision_shape_2d_editor_plugin so it scales with the icons size.
- m4gr3d
b78935ef51
The `InputEvent` class currently supports the `pressed` and `released` states, which given the binary nature, is represented by a `bool` field.
This commit introduced the `CANCELED` state, which signals that an ongoing input event has been canceled.
To represent all the states, the `InputEventState` enum is added and the `InputEvent` logic is refactored accordingly.
- m4gr3d
94d6c3dcc6
The follow options were added to the (new) `run/window_placement/android_window` editor setting:
- `Auto`: choose how to run the project based on the device screen size
- `Same as Editor`: run the project in the same window as the editor
- `Side-by-side with Editor`: run the project in an adjacent window to the editor
- m4gr3d
b5a908c985
Removed my force launch adjacent solution in favor of this.
Backport of this PR: godotengine#63597
This adds these as new Built-Ins to Spatial Shaders
* Object's Position in World Space
* Camera Position in World Space
* Camera Direction in World Space
* Object's Position in View Space
- paddy-exe
be3d331f26
NetworkedMultiplayerPeerENet emits peer_connected and peer_disconnected
on both the client and the server:
6fed1ffa31/modules/enet/networked_multiplayer_enet.cpp (L268)
When trying to implement `NetworkedMultiplayerCustom`, I followed the
documentation and only emitted this signal on the server.
I ended up getting errors like:
```
Invalid packet received. Unabled to find requested cached node
```
While I didn't check other peer implementations, it seems that emitting
on both the client and server is required.
I copied the wording from the `master` branch documentation.
Here's some output from a test program with all the signals connected:
```
1948301815 got multiplayer.network_peer_connected from 1
1948301815 got peer.peer_connected from 1
1948301815 got multiplayer.connected_to_server
1948301815 got peer.connection_succeeded
1413532890 got multiplayer.network_peer_connected from 1
1413532890 got peer.peer_connected from 1
1413532890 got multiplayer.connected_to_server
1413532890 got peer.connection_succeeded
1 got multiplayer.network_peer_connected from 1413532890
1 got peer.peer_connected from 1413532890
1 got multiplayer.network_peer_connected from 1948301815
1 got peer.peer_connected from 1948301815
1413532890 got multiplayer.network_peer_connected from 1948301815
1413532890 got peer.peer_connected from 1948301815
1948301815 got multiplayer.network_peer_connected from 1413532890
1948301815 got peer.peer_connected from 1413532890
1 got multiplayer.network_peer_disconnected from 1948301815
1 got peer.peer_disconnected from 1948301815
1413532890 got multiplayer.network_peer_disconnected from 1948301815
1413532890 got peer.peer_disconnected from 1948301815
1 got multiplayer.network_peer_disconnected from 1413532890
1 got peer.peer_disconnected from 1413532890
```
udev doesn't work in sandboxes, notably the new Steam container runtime
as found notably on the Steam Deck, and in Flatpak/Snap packages.
Like SDL does, when we detect such a containerized environment, we fall
back to parsing `/dev/input` directly.
See smcv's comments in #76879 for details.
Fixes#76879.
(cherry picked from commit 788cb74cc676627b6c9b7e29a47200141cca92ff)
A common bug with using acos and asin is that input outside -1 to 1 range will result in Nan output. This can occur due to floating point error in the input.
The standard solution is to provide safe_acos function with clamped input. For Godot it may make more sense to make the standard functions safe.