summaryrefslogtreecommitdiff
path: root/modules/mono/mono_gd/gd_mono.cpp
AgeCommit message (Collapse)Author
2018-11-08Improve the C# API projects generationIgnacio Etcheverry
- Now there is only one solution that contains both GodotSharp and GodotSharpEditor project. Previously we had one solution for each project - GodotSharpEditor reference GodotShatp with a 'ProjectReference'. Previously it was a 'Reference' to the assembly - This also simplifies the command line option to generate this solution: 'godot --generate-cs-api <OutputDir>'
2018-10-25Merge pull request #23162 from neikeq/ccIgnacio Etcheverry
Proper support for namespaces and other enhancement/fixes
2018-10-25Parse C# script namespace and classIgnacio Etcheverry
- Added a very simple parser that can extract the namespace and class name of a C# script.
2018-10-22Fix internal assembly load fromIgnacio Etcheverry
- Also make sure we load API assemblies from 'res://.mono/assemblies/'.
2018-10-21Removed undeclared and unused variable, which caused a compile errorMads Ynddal
2018-10-06Mono: Fix crash on NodePath/RID disposal during Godot shutdownIgnacio Etcheverry
2018-10-03Mono: Editor and export template dependencies and fixesIgnacio Etcheverry
- Bundle editor dependencies: - 'GodotSharp': Root data directory for the editor - 'Tools': Editor dependencies. Only GodotSharp.dll for now. - 'Api': Prebuilt GodotSharp and GodotSharpEditor API assemblies. - 'Mono': Mono files to bundle with the editor. - 'bin': (Optional, not used for now) Mono bin directory. - 'etc': Mono configuration files. - 'lib': Mono dependency shared libraries. - 'lib/mono/4.5': Framework assemblies. - Added build option to copy the required files from the mono installation to 'GodotSharp/Mono'. Enable with 'copy_mono_root=yes'. Disabled by default. - Export template dependencies: - 'data_AppName'/'data_Godot': - 'Mono': Mono files to bundle with the game. - 'etc': Mono configuration files. - 'lib': Mono dependency shared libraries. - The data directory is generated when compiling and must be bundled with the export templates. In the case of OSX, the data directory must be placed inside the 'osx.zip' export template. - In OSX, alternative location for directories (needed for app bundles) are: - 'data_AppName/Mono/etc' --> '../Resources/GodotSharp/Mono/etc' - 'data_AppName/Mono/lib' --> '../Frameworks/GodotSharp/Mono/lib' - The editor can bundle prebuilt API assemblies. - Generate them with a tools build by running: `--generate-cs-core-api <GodotSharp_OutputDir> --generate-cs-editor-api <GodotSharpEditor_OutputDir> <GodotSharp_OutputDir>/bin/Release/GodotSharp.dll` (This command will be simplified in the future and both projects will be in the same solution) - Build the solutions and copy the output files to '#bin/GodotSharp/Api'. - Fixed API assembly being added twice during the export process.
2018-09-26Do not update cache if the C# API assembly is out of syncIgnacio Etcheverry
2018-09-17Mono: Fix opening code editors in OSX and cleanupIgnacio Etcheverry
2018-09-13Merge pull request #21982 from luzpaz/misc-typosRémi Verschelde
Misc. typos
2018-09-12Misc. typosluz.paz
Found via `codespell -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po"`
2018-09-12Make core/ includes absolute, remove subfolders from include pathRémi Verschelde
This allows more consistency in the manner we include core headers, where previously there would be a mix of absolute, relative and include path-dependent includes.
2018-09-12C#: Fix cs_files glue mismatch bugIgnacio Etcheverry
2018-09-12Fix/workaround for issue #21667Ignacio Etcheverry
When a Reference managed instance is garbage collected and its finalizer is called, it could happen that the native instance is referenced once again before the finalizer can unreference and memdelete it. The workaround is to create a new managed instance when this happens (at least for now).
2018-09-12Add some mono root hint dirs for OSXIgnacio Etcheverry
Fixes #13355
2018-09-12Cleanup of c# api files and bindings generatorIgnacio Etcheverry
- We no longer generate RID and NodePath C# classes. Both will be maintained manually. - We no longer generate C# declarations and runtime registration of internal calls for the following classes: RID, NodePath, String, GD, SignalAwaiter and Godot.Object (partial base). - We no longer auto-generate the base members of Godot.Object. They will be maintained manually as a partial class. This makes it easier to maintain these C# classes and their internal calls, as well as the bindings generator which no longer generates C# classes that don't derive from Godot Object, and it no longer generates the Godot.Object base members (which where unreadable in the bindings generator code). - Added missing 'RID(Object from)' constructor to the RID C# class. - Replaced MONO_GLUE_DISABLED constant macro with MONO_GLUE_ENABLED. - Add sources in module/mono/glue even if glue is disabled, but surround glue files with ifdef MONO_GLUE_ENABLED.
2018-08-24Add print_verbose to print to stdout only in verbose modeRémi Verschelde
Equivalent of the cumbersome: if (OS::get_singleton()->is_stdout_verbose()) print_line(msg);
2018-07-26Reduce unnecessary COW on Vector by make writing explicitHein-Pieter van Braam
This commit makes operator[] on Vector const and adds a write proxy to it. From now on writes to Vectors need to happen through the .write proxy. So for instance: Vector<int> vec; vec.push_back(10); std::cout << vec[0] << std::endl; vec.write[0] = 20; Failing to use the .write proxy will cause a compilation error. In addition COWable datatypes can now embed a CowData pointer to their data. This means that String, CharString, and VMap no longer use or derive from Vector. _ALWAYS_INLINE_ and _FORCE_INLINE_ are now equivalent for debug and non-debug builds. This is a lot faster for Vector in the editor and while running tests. The reason why this difference used to exist is because force-inlined methods used to give a bad debugging experience. After extensive testing with modern compilers this is no longer the case.
2018-07-18Style: Format code with clang-format 6.0.1Rémi Verschelde
2018-07-04Mono: Pending exceptions and cleanupIgnacio Etcheverry
2018-03-18Mono: Runtime main args and assembly search fixesIgnacio Etcheverry
- Setup runtime main args during initialization. This must be done manually by embedders who do not call mono_runtime_run_main. Fixes NullReferenceException in System.Environment. - Continue to search the assembly in the rest of the search locations if loading it from one of them failed.
2018-02-25Mono: Better versioning and gracefully unloading of Godot API assembliesIgnacio Etcheverry
2018-02-22Mono: Add project export pluginIgnacio Etcheverry
2018-02-16Makes project manager never initialize mono debug.Pieter-Jan Briers
The heuristic whether we're in the project manager inside GDMono didn't work if the project manager was launched by not having any path to run. This is fixed now by making a Main::is_project_manager().
2018-01-26Mono: Don't defer call to dispose queue objects when finalizing domainIgnacio Etcheverry
It's going to be called anyway after `mono_domain_finalize`. This also prevents crashes, since the MessageQueue singleton could already be freed at this point (see: #15702).
2018-01-09Mono: Implement stack info for errors and exceptionsIgnacio Etcheverry
2018-01-05Add missing copyright headers and fix formattingRémi Verschelde
Using `misc/scripts/fix_headers.py` on all Godot files. Some missing header guards were added, and the header inclusion order was fixed in the Bullet module.
2018-01-04Mono: Add properties support in scriptsIgnacio Etcheverry
2018-01-01Update copyright statements to 2018Rémi Verschelde
Happy new year to the wonderful Godot community!
2018-01-01Mono: Script lifetime fixesIgnacio Etcheverry
- alloc_language_binding: Use strong GC handle as well for references. Fixes #15138 - Set the native instance field of Godot.Object to IntPtr.Zero when it's freed. - Create weak handles without tracking resurrection (that was causing trouble). This means we have to call notification predelete before queueing a native Object for deletion, and use the MonoObject* passed by the finalizer because the weak GC handle target will return NULL at this point.
2017-11-01Fix thread checking to queue instances for deletionIgnacio Etcheverry
2017-10-29Mono: Add build project button and reload intervalIgnacio Etcheverry
2017-10-27Mono: Use "UnnamedProject" if application/config/name is emptyUnknown
2017-10-23Mono: Prevent raising exceptions in native codeIgnacio Etcheverry
For now we will just print the exceptions we catch. Later, we should use something similar to 'mono_set_pending_exception(ex)'.
2017-10-21Cleanup unnecessary debug printsRémi Verschelde
2017-10-10 Fix getting struct elements from MonoArray (#11978)Ignacio Etcheverry
* Fix getting struct elements from MonoArray * Revert undesired change
2017-10-07Fix dot separated assembly names confused with file extensionsIgnacio Etcheverry
2017-10-07Fix assembly load hooksIgnacio Etcheverry
2017-10-05Uninitialized local and domain finalize fixesIgnacio Etcheverry
- Make sure to run the GC before and after finalizing the scripts domain.
2017-10-03Added mono moduleIgnacio Etcheverry