Inherited methods bindings #900
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR offers an implementation for binding inherited methods, using
ClassDB::bind_inherited_method<DerivedClass>(...).It can avoid a lot of boilerplate code in some extensions, where the registered class has to redefine every bound method.
I wasn't sure if this would be helpful on Godot's side or even if it doesn't already work. So tell me if it would be better done there first.
The main obstacle was
TYPED_METHOD_BINDininclude/godot_cpp/core/method_bind.hpp: it is necessary to call the method on a derived instance to offsetthiscorrectly. (Without doing so, the extension compiled but the calls went nuts becausethiswas wrong)Thus I also offer to get completely rid of
TYPED_METHOD_BIND, as in always using typed method bindings. It was introduced in #649 because it was mandatory for Windows builds, but I don't see where not using it would be required: please enlighten me if there is an example.On top of that, it makes the file much more readable!