summaryrefslogtreecommitdiff
path: root/core/extension
AgeCommit message (Collapse)Author
2022-05-04Merge pull request #60723 from reduz/refactor-module-initializationRémi Verschelde
2022-05-04Refactor module initializationreduz
* Changed to use the same stages as extensions. * Makes the initialization more coherent, helping solve problems due to lack of stages. * Makes it easier to port between module and extension. * removed the DRIVER initialization level (no longer needed).
2022-05-03Merge pull request #60714 from Calinou/typedef-remove-refRémi Verschelde
Remove `RES` and `REF` typedefs in favor of spelled out `Ref<>`
2022-05-03Remove `RES` and `REF` typedefs in favor of spelled out `Ref<>`Hugo Locurcio
These typedefs don't save much typing compared to the full `Ref<Resource>` and `Ref<RefCounted>`, yet they sometimes introduce confusion among new contributors.
2022-04-29Add GDNativeInterface::get_library_path to GDExtensionEmmanuel Leblond
2022-04-20Fix more issues found by cppcheck.bruvzg
2022-04-13Merge pull request #60093 from TokageItLab/reset-blendRémi Verschelde
Make blend animation to use ResetTrack as default value
2022-04-11Make FileAccess and DirAccess classes reference counted.bruvzg
2022-04-10Make blend animation to use ResetTrack as default valueSilc 'Tokage' Renew
2022-04-06Fix some issues found by cppcheck.bruvzg
2022-03-28Merge pull request #59553 from reduz/script-extension-supportRémi Verschelde
2022-03-27GDExtension: change to_string signature to accept GDNativeStringPtr instead ↵Jan Haller
of returning const char*
2022-03-27Add GDExtension support to Scriptreduz
* Ability to create script languages from GDExtension * Some additions to gdnative_extension.h to make this happen * Moved the GDExtension binder to core This now allows creating scripting languages from GDExtension, with the same ease as if it was a module. It replaces the old PluginScript from Godot 3.x. Warning: GodotCPP will need to be updated to support this (it may be a bit of work as ScriptInstance needs to be created over there again).
2022-03-22Add static method support to ClassDBreduz
* Based on the work done for Variant in the past. * Added `ClassDB::bind_static_method` * Cleaned up ClassDB::bind_method to use variadic templates. This adds support for having static methods in Object derived classes. Note that this does not make it work yet in GDScript or Mono and, while it works for GDExtension, GodotCPP needs to be updated.
2022-03-15Create GDExtension clases for PhysicsServer3Dreduz
* Allows creating a GDExtension based 3D Physics Server (for Bullet, PhysX, etc. support) * Some changes on native struct binding for PhysicsServer This allows a 3D Physics server created entirely from GDExtension. Once it works, the idea is to port the 2D one to it.
2022-03-10Discern between virtual and abstract class bindingsreduz
* Previous "virtual" classes (which can't be instantiated) are not corretly named "abstract". * Added a new "virtual" category for classes, they can't be instantiated from the editor, but can be inherited from script and extensions. * Converted a large amount of classes from "abstract" to "virtual" where it makes sense. Most classes that make sense have been converted. Missing: * Physics servers * VideoStream * Script* classes. which will go in a separate PR due to the complexity involved.
2022-03-09Remove VARIANT_ARG* macrosreduz
* Very old macros from the time Godot was created. * Limited arguments to 5 (then later changed to 8) in many places. * They were replaced by C++11 Variadic Templates. * Renamed methods that take argument pointers to have a "p" suffix. This was used in some places and not in others, so made it standard. * Also added a dereference check for Variant*. Helped catch a couple of bugs.
2022-02-28Reorder native extension types initialization, initializing editor lastGilles Roudière
2022-02-22Merge pull request #58331 from poiati/fix-extension-registration-order-2Rémi Verschelde
2022-02-20Fix extension registration order.Paulo Poiati
2022-02-20Resolving suggestions on comment formatting.Anish Bhobe
2022-02-20Fixing iteration for extension level loading.Anish Bhobe
Extensions are not getting instantiating properly due to iteration calling the wrong levels for loading.
2022-01-03Update copyright statements to 2022Rémi Verschelde
Happy new year to the wonderful Godot community!
2021-12-09Replace String comparisons with "", String() to is_empty()Nathan Franke
Also: - Adds two stress tests to test_string.h - Changes to .empty() on std::strings
2021-11-30Change gdnative interface so that Godot object initialization should be ↵Gilles Roudière
triggered from the extension side
2021-11-22[GDExtension] Implement missing Dictionary index operators.bruvzg
Co-authored-by: Bastiaan Olij <mux213@gmail.com>
2021-11-17Fix array access in gdextensionsBastiaan Olij
2021-10-14Implement toast notifications in the editorGilles Roudière
2021-10-07Add typedef to GDNativeInstanceBindingCallbacksColin Kinloch
2021-10-05Merge pull request #52711 from m4gr3d/provide_getter_for_project_data_dir_masterRémi Verschelde
2021-10-01Implement TextServer GDExtension interface, remove TextServer GDNative ↵bruvzg
interface.
2021-09-30Use range iterators for `Map`Lightning_A
2021-09-22[ClassDB] Unify construct/extension retrieval.Fabio Alessandrelli
2021-09-22[Core] Add ClassDB functions to retrieve/construct extensions.Fabio Alessandrelli
Calling the constructor alone is not enough if the class to be instantiated is not a base class. This commit adds two functions, one for retrieving the the extension class reference, the other to construct an instance using the constructor and the extension class reference.
2021-09-16Merge pull request #52739 from BastiaanOlij/gdextension_array_indexRémi Verschelde
2021-09-16Add GD extensions operator functions for arraysBastiaan Olij
2021-09-16Add property group and subgroup registration to extensionsBastiaan Olij
2021-09-15Provide a getter for the project data directory.ne0fhyk
2021-09-13Add driver types to GD extension initialisation levelsBastiaan Olij
2021-09-02Add functions for access members by index on packed array objectsBastiaan Olij
2021-08-26Merge pull request #51928 from reduz/extension-loaderJuan Linietsky
Implement Extension Loader
2021-08-23Implement NativeExtension pointer argumentsreduz
* Allows calling into native extensions directly with a pointer * Makes it easier to implement some APIs more efficiently * Appears with a "*" in the documentation for the argument. * Implementing the pointer handling is entirely up to the implementation, although the extension API provides some hint. * AudioStream has been implemented as an example, allowing to create NativeExtension based AudioStreams.
2021-08-22Replace BIND_VMETHOD by new GDVIRTUAL syntaxreduz
* New syntax is type safe. * New syntax allows for type safe virtuals in native extensions. * New syntax permits extremely fast calling. Note: Everything was replaced where possible except for `_gui_input` `_input` and `_unhandled_input`. These will require API rework on a separate PR as they work different than the rest of the functions. Added a new method flag METHOD_FLAG_OBJECT_CORE, used internally. Allows to not dump the core virtuals like `_notification` to the json API, since each language will implement those as it is best fits.
2021-08-20Implement Extension Loaderreduz
* Extensions are now scanned and loaded on demand. * Extensions found are cached into a file that is used to load them (which is also exported). * Editor will ask to restart when an extension requires core functionality. * Editor will attempt to load extensions always before importing or loading scenes. This ensures extensions can register the relevant types.
2021-08-17Properly set up virtual calls for extensionsGeorge Marques
2021-08-17A few fixes in the extension C APIGeorge Marques
- Add MethodBind call (besides ptrcall), since vararg methods don't work with ptrcall. - Fix argument name in register constant function to the way it actually is used in the engine. - Change the integer constant type to GDNativeInt to keep it consistent.
2021-08-17Initialize call error struct when calling extensionsGeorge Marques
This allows users to not need to set it when the call is correct.
2021-08-13Refactors the memnew_placement.AndreaCatania
With this commit the macro `memnew_placement` uses the standard memory placement syntax: `new (mem) TheClass()`, and removes the outdated and not used syntax: ``` _ALWAYS_INLINE_ void *operator new(size_t p_size, void *p_pointer, size_t check, const char *p_description) { ``` Thanks to this change, the function `memnew_placement` call is compatible with any class, and can also initialize classes with non-empty constructor: ``` // This is valid, like before. memnew_placement(mem, Variant); // This works too: memnew_placement(mem, Variant(123)); ```
2021-08-09Rename GDNative call error enum values to use GDNATIVE prefixGeorge Marques
To make sure it does not clash with other libraries.
2021-08-05Improve extension systemGeorge Marques
- Fix library loading and initialization. - Add extra methods/parameters in the interface needed by extenstions. - Add Variant destructors and functions for extracting values and creating Variants from values.