summaryrefslogtreecommitdiff
path: root/modules/mono/editor
AgeCommit message (Collapse)Author
2022-10-31Merge pull request #67578 from KoBeWi/GEDITORRémi Verschelde
Unify usage of GLOBAL/EDITOR_GET
2022-10-30C#: Remove need for reflection to invoking callable delegatesIgnacio Roldán Etcheverry
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.
2022-10-22Use `.generated` suffix for generated C# codeRaul Santos
Use the `.generated` suffix instead of `_Generated` so .NET marks C# file generated by Godot source generators as generated code.
2022-10-18Unify usage of GLOBAL/EDITOR_GETkobewi
2022-10-15Guard against more potential conflicts in C# bindings generatorRaul Santos
2022-10-07[.NET Export] Improve .NET export process.bruvzg
[macOS export] Fix incorrect file placement, search paths and architecture detection. [macOS export] Automatically detect executable files and set +x flag. [macOS export] Automatically apply "Disable Library Validation" entitlements when required. [macOS export] Remove old Mono export code. Fix folder tree creation for shared objects export. Add arch suffix to the exported .NET "data" folder name. Remove old Mono code from .NET "data" folder lookup.
2022-10-04Rename Projection `matrix` to `columns`Aaron Franke
2022-09-30Fix typos with codespellRémi Verschelde
Using codespell 2.3-dev from current git. And fix typo in `methods.py` for `vsproj=yes` option (still won't work though).
2022-09-22Merge pull request #66253 from raulsntos/dotnet/assembly-may-be-nullIgnacio Roldán Etcheverry
C#: Guard against null assemblies
2022-09-22C#: Suppress EventHandler suffix diagnostic for signalsRaul Santos
Suppress CA1711 for signal delegates because they are used in events so the naming follows the guidelines.
2022-09-22C#: Guard against null assembliesRaul Santos
A symbol's containing assembly will be null if the symbol is shared across multiple assemblies.
2022-09-19Replace File/Directory with FileAccess/DirAccesskobewi
2022-09-19Merge pull request #65879 from magian1127/4.0GenSDocRémi Verschelde
inheritdoc the "///" comment from EventHandler to the generated event
2022-09-18C#: inheritdoc the "///" comment from EventHandler to the generated eventMagian
2022-09-18Merge pull request #44143 from KoBeWi/callable_multiplayerRémi Verschelde
2022-09-18Port remaining connections to callable_mpTomasz Chabora
2022-09-18Merge pull request #65946 from antonWetzel/csharp-nd-arrayRémi Verschelde
Don't marshal multidimensional arrays
2022-09-17don't marshal multidimensional arraysantonWetzel
2022-09-16C#: Add documentation to signal delegatesRaul Santos
2022-09-15Merge pull request #65823 from raulsntos/dotnet/signal-docsIgnacio Roldán Etcheverry
C#: Move signal documentation to the event
2022-09-15C#: Move signal documentation to the eventRaul Santos
Move signal documentation from the delegate to the event and also deprecate the event if the signal is deprecated.
2022-09-15Fix NuGet fallback folder packagesRaul Santos
- Creates a `Godot.Offline.Config` file to configurate NuGet with Godot's fallback folder. This is easier because now we can assume we can override the entire file since user config will likely be in the default `NuGet.Config` file or an additional `*.config` file. - Ensure the NuGet fallback folder is created at the same time it is added to the NuGet configuration so future builds don't fail. - Add `GodotSharp` and `GodotSharpEditor` packages to the fallback folder. - Add `.nupkg.metadata` file to packages in fallback folder. - Refer to `Godot.SourceGenerators` using the specific non-floating version since floating versions don't seem to work with fallbackPackageFolders.
2022-09-14[macOS, .NET] Fix dotnet binary detection.bruvzg
2022-09-09Merge pull request #64373 from YeldhamDev/edscale_likes_them_floatyRémi Verschelde
2022-09-08Fix MacOS compiler flags in .NET moduleRaul Santos
2022-09-08Make `Vector2i` values paired with `EDSCALE` be just `Vector2`Michael Alexsander
2022-09-07Merge pull request #65438 from neikeq/replace-libnethost-dependencyRémi Verschelde
Replace libnethost dependency to find hostfxr
2022-09-07C#: Replace libnethost dependency to find hostfxrIgnacio Roldán Etcheverry
We want to replace libnethost as it gives us issues with some compilers. Our implementation tries to mimic libnethost's hostfxr_resolver search logic. We try to use the same function names for easier comparing in case we need to update this in the future.
2022-09-06Merge pull request #65433 from neikeq/fix-mustbevariant-omittedtypeargRémi Verschelde
2022-09-06C#: Make MustBeVariantAnalyzer ignore OmittedTypeArgumentIgnacio Roldán Etcheverry
Fixes assertion error in the analyzer.
2022-09-06C# Modify the MemberName generated for the user scriptMagian
2022-09-05Merge pull request #65321 from rburing/physics_server_2d_extensionRémi Verschelde
Create GDExtension classes for PhysicsServer2D
2022-09-04Create GDExtension classes for PhysicsServer2DRicardo Buring
This allows a 2D physics server created entirely from GDExtension. Based on the structure of PhysicsServer3DExtension by reduz.
2022-09-04Add float arg to build_assemblies.pyAlmighty Laxz
2022-09-01C#: Assume 64-bit types when type has no metaRaul Santos
When the C# bindings generator finds a type without meta assume the type refers to the 64-bit version of the type: - `float` is converted to `double` - `int` is converted to `long`
2022-08-29Rename String `plus_file` to `path_join`Aaron Franke
2022-08-29Merge pull request #65046 from ↵Ignacio Roldán Etcheverry
neikeq/dotnet-fix-exported-game-uninitialized-callbacks C#: Fix exported game crash because of uninitialized callbacks
2022-08-29Merge pull request #64987 from raulsntos/dotnet/linux-exportIgnacio Roldán Etcheverry
Fix .NET exporting in Linux
2022-08-29C#: Fix exported game crash because of uninitialized callbacksIgnacio Roldán Etcheverry
This was a regression from 2c180f62d985194060f1a8d2070c130081177c90, where I forgot to update the source generator.
2022-08-29Merge pull request #64119 from YuriSizov/theme-init-databaseRémi Verschelde
2022-08-29[Web] Rename JavaScript platform to Web.Fabio Alessandrelli
Also rename export name from "HTML5" to "Web".
2022-08-29Merge pull request #64956 from raulsntos/dotnet/format-ciRémi Verschelde
Add `dotnet format` to CI to check C# style
2022-08-29Merge pull request #64900 from raulsntos/dotnet/fix-exceptionsIgnacio Roldán Etcheverry
Fix various C# exceptions
2022-08-29Merge pull request #64994 from raulsntos/dotnet/property-indexersIgnacio Roldán Etcheverry
C#: Ignore property indexers and report if exported
2022-08-28C#: Ignore property indexers and report if exportedRaul Santos
Ignore property indexers since they are unsupported and report a diagnostic if an user tries to export it.
2022-08-28Fix .NET exporting in LinuxRaul Santos
- Fix platform detection after Linux OS name was renamed from `LinuxBSD` to `Linux` - Fix arch detection after renaming `64` to `x86_64` - Fix typo in `find_hostfxr`
2022-08-27Fix C# style with `dotnet format`Raul Santos
2022-08-27Rename `hint_tooltip` to `tooltip_text` & setgetMicky
`hint_tooltip` -> `tooltip_text` `set_tooltip` -> `set_tooltip_text` `_get_tooltip` -> `get_tooltip_text` Updates documentation, too.
2022-08-26Add ThemeDB, expose previously static Theme methodsYuri Sizov
2022-08-26Fix various C# exceptionsRaul Santos
- Replace `IndexOutOfRangeException` with `ArgumentOutOfRangeException` - Replace `Exception` with a more specific exception - Add the parameter name to argument exception - Update documentation for methods that throw exceptions - Use `StringBuilder` to build exception messages - Ensure exception messages end with a period