Age | Commit message (Collapse) | Author |
|
Fix exporting with big export templates
|
|
Improve ColorPicker sliders in OKHSL mode
|
|
Use proper types for converting Java float/double arrays in Android code
|
|
Minor code improvements
|
|
Fix get_path() error when calling get_node()
|
|
Fix TextEdit action and CodeEdit completion crash
|
|
Add Caret Insert Below and Above shortcuts to TextEdit
|
|
Support AtlasTexture in radial modes of TextureProgressBar
|
|
C#: Reflection-less delegate callables and nested generic Godot collections
|
|
Added missing docs to built-in types float and int
|
|
|
|
Doc consistency: tweak "inspector" Vs. "Inspector"
|
|
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.
|
|
Fix `TileMap` collision shapes debug draw
|
|
doc: link GPUParticles2D to a more appropriate demo
|
|
Document the ENetPacketPeer class
|
|
Document the DisplayServer class
|
|
Change all WEBP strings and comments to WebP
|
|
|
|
Fix built-in script path of GDScript to prevent crash
|
|
Make creating window do not flicker when specify custom position
|
|
Fix differences between Windows and linuxbsd Display Server
|
|
|
|
ResourceImporterLayeredTexture: rename compress modes to match enum
|
|
Fix type of `safe_velocity` parameter
|
|
Expose the logic to recognize a save path in ResourceSaver
|
|
|
|
|
|
|
|
Fix `DisplayServer.has_feature()` claiming X11 has native icon support
|
|
|
|
Fix that Windows receive WINDOW_EVENT_MOUSE_EXIT on startup.
When moving the mouse cursor from one window to a different one, make sure that the first window receives the WINDOW_EVENT_MOUSE_EXIT event before the second window receives the WINDOW_EVENT_MOUSE_ENTER event.
Send Mouse-Move events also for Windows, that are currently not focused.
For determining the currently hovered window, consider not just the currently focused window, but also other windows.
Send mouse move events to focused window instead of hovered window.
|
|
|
|
Fix `OS.get_video_adapter_driver_info` crash on headless godot
|
|
Fix ss_effects_flags uniform in clustered forward renderer
|
|
Add Selection and Caret for Next Occurrence of Selection
|
|
Change default OpenXR pose to aim pose
|
|
|
|
This comes from an uncaught merge conflict resulting from the split of scene_data into
scene_data and implementation_data
|
|
|
|
[NavigationAgent2D/3D]: target_reached signal is emitted before internal state is updated
|
|
Document the Vector3 and Vector4i classes
|
|
Optimized support function for large meshes
|
|
Fix Godot exiting with unexpected failure code
|
|
Fix ambient_light_disabled render mode flag
|
|
Prevent windows from having a size greater than device limit
|
|
Improve behaviour of clip_children by clipping to parent alpha value but still retaining parent color
|