- The editor must automate edition of csproj files (add/remove scripts created by users, assembly references, etc), while also giving the user a panel to do it manually if needed. (in progress, for alpha)
Give the user some options for configuring csproj files from the editor.(This was the same as above...)- Exporting. Assemblies must be bundled with PCK files. (need to do this in the Godot repo)
- Autocompletion and analysis with OmniSharp in the built-in editor. (very low priority, IDEs are the priority)
- Debugging and profiling from the editor. (very low priority, IDEs are the priority)
Generate and build the C# bindings project for the correct Godot API version.
Support exported variables:- Parse assembly IL to find the initial value of the fields. (progress frozen temporarily to focus on alpha. for now, we will just construct a temporary instance to get the initial value, like Unity does)
- Take the chance that C# is statically typed and has enums to improve the simplicity of the attribute (user doesn't need to specify the variable type nor a enum syntax if the type is an enum).
- Support for namespaces (neikeq/GodotSharp#9):
We will have to add a simple parser to detect the namespace. Languages with no parser will still use the above method.Done, although I would like to change this to use roslyn.
Support async and await from methods called by the engine.Need to support and equivalent to yielding to signals in GDScript.(await ToSignal(obj, "signal"))Assembly reloading:Serialization and state saving/loading.While serialization is done, it's basic Godot Variant serialization. The idea is to improve this to support other types not recognized by Variant.
- Try to use method thunks for certain virtual Godot methods that are called several times (like _fixed_process).
I still need to think how IDE integrations should behave, so this is what I have in mind so far. There will be three options:
- xbuild/msbuild: (in progress, for alpha, xbuild is deprecated from mono 5)
- Godot takes care of building using xbuild (msbuild on Windows). Uses built-in script editor and debugger.
- Visual Studio
- Visual Studio Code (implementation is similar to MonoDevelop)
- MonoDevelop/Xamarin Studio (in progress, for alpha)
- Improve syntax signals. (still not sure how. will wait for alpha feedback)
I was going to add support for syntax like node.method() instead of node.call("method") when communicating with GDScript (https://gist.github.com/neikeq/079e78bc3fded058e14ea8786d25ca7d), but it seems that won't be possible due to restrictions with the iOS platform.(yep, iOS ruined the dream~)
When mentioning manual bindings I refer to these files: (https://github.com/neikeq/GodotSharp/tree/master/mono/bindings/cs_files) These are files that cannot be automatically generated (only Object derived types are generated).
- Keep them up to date (will wait until compatibility breaking is complete).
- Benchmark all methods and replace them with internal calls if needed to improve performance. (in progress, for stable)