Commit Graph

45957 Commits

Author SHA1 Message Date
Ignacio Roldán Etcheverry
5e37d073bb C#: Re-write GD and some other icalls as P/Invoke 2022-08-22 03:35:59 +02:00
Ignacio Roldán Etcheverry
9a51430441 C#: Re-write Array, Dictionary, NodePath, String icalls as P/Invoke 2022-08-22 03:35:59 +02:00
Ignacio Roldán Etcheverry
c4ccabd3fb C#: Remove DynamicGodotObject/Object.DynamicObject
We are moving in the direction of no dynamic code generation,
so this is no longer desired.

The feature can still be easily implemented by any project that
still want it.
2022-08-22 03:35:59 +02:00
Ignacio Roldán Etcheverry
124fbf95f8 C#: Move marshaling logic and generated glue to C#
We will be progressively moving most code to C#.
The plan is to only use Mono's embedding APIs to set things at launch.
This will make it much easier to later support CoreCLR too which
doesn't have rich embedding APIs.

Additionally the code in C# is more maintainable and makes it easier
to implement new features, e.g.: runtime codegen which we could use to
avoid using reflection for marshaling everytime a field, property or
method is accessed.

SOME NOTES ON INTEROP

We make the same assumptions as GDNative about the size of the Godot
structures we use. We take it a bit further by also assuming the layout
of fields in some cases, which is riskier but let's us squeeze out some
performance by avoiding unnecessary managed to native calls.

Code that deals with native structs is less safe than before as there's
no RAII and copy constructors in C#. It's like using the GDNative C API
directly. One has to take special care to free values they own.
Perhaps we could use roslyn analyzers to check this, but I don't know
any that uses attributes to determine what's owned or borrowed.

As to why we maily use pointers for native structs instead of ref/out:
- AFAIK (and confirmed with a benchmark) ref/out are pinned
  during P/Invoke calls and that has a cost.
- Native struct fields can't be ref/out in the first place.
- A `using` local can't be passed as ref/out, only `in`. Calling a
  method or property on an `in` value makes a silent copy, so we want
  to avoid `in`.

REGARDING THE BUILD SYSTEM

There's no longer a `mono_glue=yes/no` SCons options. We no longer
need to build with `mono_glue=no`, generate the glue and then build
again with `mono_glue=yes`. We build only once and generate the glue
(which is in C# now).
However, SCons no longer builds the C# projects for us. Instead one
must run `build_assemblies.py`, e.g.:
```sh
%godot_src_root%/modules/mono/build_scripts/build_assemblies.py \
        --godot-output-dir=%godot_src_root%/bin \
        --godot-target=release_debug`
```
We could turn this into a custom build target, but I don't know how
to do that with SCons (it's possible with Meson).

OTHER NOTES

Most of the moved code doesn't follow the C# naming convention and
still has the word Mono in the names despite no longer dealing with
Mono's embedding APIs. This is just temporary while transitioning,
to make it easier to understand what was moved where.
2022-08-22 03:35:59 +02:00
Michael Alexsander
e298144a41 Fix ItemList selection visual when the scrollbar visibility changes 2022-08-21 22:10:41 -03:00
Micky
84ba33f627 Properly refer to functions definition color in description 2022-08-21 17:19:26 +02:00
Emmanuel Leblond
dca6db76af
Add missing Projection's members offsets to gdextension_api.json 2022-08-21 12:49:28 +02:00
Omar El Sheikh
61522d8491 Add Blendshape Support
Update the blendshape shader to decode/encode octahedral normals
2022-08-20 20:59:28 -07:00
rafallus
da7a5653f4 Expose Basis set_orthogonal_index method as a GridMap function 2022-08-20 21:42:20 -05:00
kobewi
185b1a5bd3 Improve SplitContainer minimum size splitting 2022-08-21 03:30:11 +02:00
Aaron Franke
8893b2bdb4
Clean up mesh include code and comments 2022-08-20 13:24:40 -05:00
Umang Kalra
7ef5dfcfc3 Changed the title of change node type dialog 2022-08-20 22:53:07 +05:30
Omar El Sheikh
2425d798cd Octahedral Normal Support for Sprite and Soft Body
Properly encode the normal and tangent vectors with octahedral
compression
2022-08-20 10:01:46 -07:00
Hugo Locurcio
0c5f254956
Merge pull request #64110 from Geometror/fix-light-shadow-off 2022-08-20 17:06:03 +02:00
Gilles
104ac29b54
Remove duplicate ignore_empty_terrains paragraph
Removes a duplicate `ignore_empty_terrains` paragraph in the `TileMap` documentation
2022-08-20 16:41:12 +02:00
Fabio Alessandrelli
1e044da15c
Merge pull request #64481 from jamie-pate/master
Improve performance of screen_get_dpi() in Javascript
2022-08-20 13:36:04 +02:00
Andrew Dunai
f00cf3ff11
3to4: Fix handling of arrays in connect() and JSON alignment 2022-08-20 13:57:49 +03:00
derammo
320fb492b0 added missing virtual to ScriptExtension
_has_property_default_value is a required virtual
for ScriptExtension but it was not bound, and could
therefore not be implemented

this made it impossible to implement a ScriptExtension
that runs
2022-08-20 06:29:39 -04:00
Yuri Rubinsky
5119d0d974
Merge pull request #64625 from Chaosus/shader_pp_defined 2022-08-20 11:51:58 +03:00
Yuri Rubinsky
499fd0a4e7 Add defined keyword support to shader preprocessor 2022-08-20 11:26:59 +03:00
Max Hilbrunner
5e0d2b5097
Merge pull request #62046 from clayjohn/vertexless-draw
Allow creating meshes without vertex positions
2022-08-20 05:32:28 +02:00
Aaron Franke
7be49cb5e0
Clean up include guards in 3D skeleton modification code 2022-08-19 19:18:47 -05:00
Hendrik Brucker
18585c69b3 Fix OmniLight/SpotLight shadow opacity calculation 2022-08-20 01:05:44 +02:00
Max Hilbrunner
47d3fd99a2
Merge pull request #64461 from bitsawer/fix_windows_list_dir
Fix Windows list dir handle leak
2022-08-20 00:58:42 +02:00
Max Hilbrunner
79717dcb46
Merge pull request #64170 from YuriSizov/docs-annotations-in-technicolor
Add documentation for all annotations
2022-08-20 00:57:01 +02:00
clayjohn
bbbcdd725a Remove requirement to have vertex positions when creating a mesh. Meshes can now be constructed from an index buffer alone 2022-08-19 14:50:12 -06:00
Yuri Rubinsky
8779f51a5e
Merge pull request #63960 from bitsawer/fix-macro-expansion 2022-08-19 23:37:47 +03:00
Max Hilbrunner
fafd15014f
Merge pull request #64510 from KoBeWi/PR_packed_with_docs😎
Complete documentation of packed arrays
2022-08-19 22:05:05 +02:00
Max Hilbrunner
019d6584ee
Merge pull request #64167 from clayjohn/screen-texture-hint
Add shader uniform hints for screen textures
2022-08-19 21:51:39 +02:00
Max Hilbrunner
117c530e1d
Merge pull request #64342 from clayjohn/DOF-scale
Properly scale depth in bokeh_dof effect
2022-08-19 21:16:32 +02:00
bruvzg
8f2083e6c0
Fix MenuBar minimum size adding unnecessary extra spacing after the last item. 2022-08-19 22:04:58 +03:00
Yuri Sizov
e08feee8a6 Replace meta properties with regular properties in Control 2022-08-19 20:52:01 +03:00
Yuri Sizov
b35ff86c17
Merge pull request #64612 from bruvzg/fix_shortcuts
Fix MenuBar not processing shortcuts.
2022-08-19 20:43:17 +03:00
Yuri Sizov
469c18152f
Merge pull request #64592 from mhilbrunner/move-fast-break-things
Unexpose VelocityTracker3D
2022-08-19 20:43:02 +03:00
Yuri Sizov
96ba6e8cf9
Merge pull request #64595 from mhilbrunner/ergo-proxy
Unexpose ProxyTexture
2022-08-19 20:42:27 +03:00
Yuri Sizov
7895a66cf2
Merge pull request #64334 from YuriSizov/core-bind-property-revert-methods
Make `property_*_revert` methods multilevel and expose them for scripting
2022-08-19 20:41:41 +03:00
bruvzg
2040087898
Fix MenuBar not processing shortcuts. 2022-08-19 16:49:50 +03:00
Juan Linietsky
a3936adb29 Add Startup benchmarking support
This adds support for benchmarking engine startup (and editor startup if used).
The goal is to use this in the benchmarking server to track improvements and changes to engine, editor, importer and scene loading startup times.
2022-08-19 14:21:43 +02:00
Yuri Sizov
a0995182fe Add documentation for all annotations 2022-08-19 15:06:39 +03:00
Jiri Suchan
388d35b74d ci: add basic test pipeline for shader builders 2022-08-19 20:32:13 +09:00
Jiri Suchan
b04593c22b ci: move slowest static job to the end of pipeline 2022-08-19 20:32:13 +09:00
Pedro J. Estébanez
e886d662ec Overhaul CLI argument forwarding to processes started by the editor 2022-08-19 11:15:56 +02:00
Silc Renew
dded7c72c1 Make cubic_interpolate() consider key time in animation 2022-08-19 14:48:37 +09:00
Yuri Rubinsky
35cfaafda8
Merge pull request #64459 from Chaosus/shader_elif 2022-08-19 07:01:22 +03:00
Max Hilbrunner
92bdeb7eb5 Unexpose ProxyTexture 2022-08-19 03:01:47 +02:00
Max Hilbrunner
da567cb1f9 Unexpose VelocityTracker3D 2022-08-19 02:28:24 +02:00
Aaron Franke
92f5a0a1db
Add a method for restarting the editor to EditorInterface 2022-08-18 18:51:38 -05:00
Max Hilbrunner
0ba1046355
Merge pull request #64580 from asmaloney/doc-grammar-less
[doc] Fix grammar in class docs: less vs. fewer/lower
2022-08-19 01:51:31 +02:00
Yuri Sizov
0d95b8bff2
Merge pull request #59045 from Calinou/editor-theme-popup-no-rounded-corners
Don't use rounded corners for PopupMenus in the editor theme
2022-08-19 02:42:17 +03:00
Max Hilbrunner
8cc0d07b49
Merge pull request #59851 from Calinou/doc-object-meta-editor-only
Document that Object metadata starting with `_` is editor-only
2022-08-19 01:41:25 +02:00