Age | Commit message (Collapse) | Author |
|
`GDScriptAnalyzer` Fix math utilities crashing when invalid args are passed
|
|
Rename queue_delete => queue_free
|
|
Fixed Image.save_jpg() does not write any file
|
|
Allow non-constant string message for assert
|
|
C#: Reflection-less delegate callables and nested generic Godot collections
|
|
|
|
Fixed signal connection examples to use new callable syntax in the docs
|
|
|
|
This allows using generic Godot collections as type arguments for other
generic Godot collections. This also allows generic Godot collections
as parameter or return type in dynamic Callable invocations.
|
|
We aim to make the C# API reflection-free, mainly for concerns about
performance, and to be able to target NativeAOT in refletion-free mode,
which reduces the binary size.
One of the main usages of reflection still left was the dynamic
invokation of callable delegates, and for some time I wasn't sure
I would find an alternative solution that I'd be happy with.
The new solution uses trampoline functions to invoke the delegates:
```
static void Trampoline(object delegateObj, NativeVariantPtrArgs args, out godot_variant ret)
{
if (args.Count != 1)
throw new ArgumentException($"Callable expected 1 arguments but received {args.Count}.");
string res = ((Func<int, string>)delegateObj)(
VariantConversionCallbacks.GetToManagedCallback<int>()(args[0])
);
ret = VariantConversionCallbacks.GetToVariantCallback<string>()(res);
}
Callable.CreateWithUnsafeTrampoline((int num) => "Foo" + num, &Trampoline);
```
Of course, this is too much boilerplate for user code. To improve this,
the `Callable.From` methods were added. These are overloads that take
`Action` and `Func` delegates, which covers the most common use cases:
lambdas and method groups:
```
// Lambda
Callable.From((int num) => "Foo" + num);
// Method group
string AppendNum(int num) => "Foo" + num;
Callable.From(AppendNum);
```
Unfortunately, due to limitations in the C# language, implicit
conversions from delegates to `Callable` are not supported.
`Callable.From` does not support custom delegates. These should be
uncommon, but the Godot C# API actually uses them for event signals.
As such, the bindings generator was updated to generate trampoline
functions for event signals. It was also optimized to use `Action`
instead of a custom delegate for parameterless signals, which removes
the need for the trampoline functions for those signals.
The change to reflection-free invokation removes one of the last needs
for `ConvertVariantToManagedObjectOfType`. The only remaining usage is
from calling script constructors with parameters from the engine
(`CreateManagedForGodotObjectScriptInstance`). Once that one is made
reflection-free, `ConvertVariantToManagedObjectOfType` can be removed.
|
|
Document the ENetPacketPeer class
|
|
Change all WEBP strings and comments to WebP
|
|
Fix built-in script path of GDScript to prevent crash
|
|
|
|
Change default OpenXR pose to aim pose
|
|
MultiplayerPeer changes:
- Adds is_server_relay_supported virtual method
Informs the upper MultiplayerAPI layer if it can signal peers connected
to the server to other clients, and perform packet relaying among them.
- Adds get_packet_channel and get_packet_mode virtual methods
Allows the MultiplayerAPI to retrieve the channel and transfer modes to
use when relaying the last received packet.
SceneMultiplayerPeer changes:
- Implement peer signaling and packet relaying when the MultiplayerPeer
advertise they are supported.
ENet, WebRTC, WebSocket changes:
- Removed custom code for relaying from WebSocket and ENet, and let it
be handled by the upper layer.
- Update WebRTC to split create_client, create_server, and create_mesh,
with the latter behaving like the old initialize with
"server_compatibility = false", and the first two supporting the upper
layer relaying protocol.
|
|
|
|
|
|
Document `collision_priority` in the CSGShape3D class
|
|
Fix Thread usage in UPNP docs.
|
|
The threading API has changed between Godot 3 and Godot 4.
See https://github.com/godotengine/godot-proposals/issues/4691.
|
|
# Conflicts:
# editor/plugins/tiles/tiles_editor_plugin.cpp
|
|
|
|
Let the RD driver itself expose subgroup caps
|
|
|
|
[opengl] Add multiview to the opengl3 driver
|
|
replication_interval is not 0
|
|
Use the `.generated` suffix instead of `_Generated` so .NET marks C#
file generated by Godot source generators as generated code.
|
|
|
|
Fix minor mistakes throughout the documentation
|
|
|
|
|
|
Tweak `@GDScript` documentation overall
|
|
Fix two typos in tracker names and a bug in OpenXR haptic feedback
|
|
- Made use of [param] more frequently,
- Link to other classes' documentation more often, improve the examples.
- Made the writing style closer to how the rest of the documentation is formatted.
- Ensure these are called "functions", not "methods".
- Add [b]Warning:[/b] where more appropriate than [b]Note:[/b]
Most notably, removed " It must be a static string, so format strings can't be used.", as this behavior is actually a bug.
|
|
Filter out HTC OpenXR paths based on extension
|
|
|
|
|
|
[WebSocket] Fix client failing to connect to direct IP.
|
|
Adding support for the OpenXR Display Refresh Rate extension
|
|
Speed up `find_texture_pos_for_glyph()`
|
|
Fix memory leak when `_ensure_cache_for_size()` fails
|
|
Clarified reason why a resource cannot be preload()'ed
|
|
Fix peer visiblity in SceneReplicationInterface._update_sync_visibility
|
|
Add a way to store additional data in GLTFState and GLTFNode
|
|
The bug was caused by not checking the TCP CONNECTING state
appropriately during the client handshake, and not checking the TCP
CONNECTED state during connection (which is unlikely, but might still
happen).
|
|
|
|
|
|
|
|
Guard against more potential conflicts in C# bindings generator
|