Open limbonaut opened 10 months ago
get_script_instance()
is missing; no workaround? See next bullet.GDVIRTUAL_*
are not implemented in GDExtension: it seems there is no way to bind virtual methods that can be implemented by scripts.
ClassDB::add_virtual_method
is also missing...call()
in both C++ and GDScript. Very unintuitive. Besides, methods are not actually marked as virtual in the docs, which causes a warning that, by default, is treated as an error.EditorHelp
is not exposed, particularly EditorHelp::get_doc_data
, which makes it hard to implement documentation tooltips.Binding virtual method is now available in godot-cpp, will this complete gdextension version's missing features?
Binding virtual method is now available in godot-cpp, will this complete gdextension version's missing features?
It's definitely one of the most missing bits in GDExtension, and I'm really glad that virtual methods are coming. Since it is only available in 4.3 branch, and because LimboAI targets the most recent stable release (4.2.x currently), it might take a while before support lands in LimboAI. I assume it should come along with v1.1 or v1.2, and close to first 4.3 RC or beta3. It depends on Godot 4.3 release date.
Alas, it's not the last missing feature:
BBParam
resources. They are not exposed in the API (see https://github.com/godotengine/godot-proposals/issues/8908).why no plugin.cfg file? I find the list of plugins with their current version and the ability to enable/disable them helpful in the godot editor.
why no plugin.cfg file? I find the list of plugins with their current version and the ability to enable/disable them helpful in the godot editor.
Is that even possible? It's a native C++ editor plugin, developed as an engine module first, and ported to GDExtension. AFAIK plugin.cfg
is for GDScript editor plugins. :shrug:
why no plugin.cfg file? I find the list of plugins with their current version and the ability to enable/disable them helpful in the godot editor.
Is that even possible? It's a native C++ editor plugin, developed as an engine module first, and ported to GDExtension. AFAIK
plugin.cfg
is for GDScript editor plugins. 🤷
Ah, that explains a lot about the plugins that aren't showing up, I did not know that. Thanks!
However, I added a plugin.cfg to limboai before I asked and it shows up in the plugins list with version, etc - the enable/disable doesn't work though. ( I didn't read through the plugin docs first though, sorry). Seems to me native editors plugins should also have that, but without the ability to enable/disable without a reboot? ( although that would be great as well) but that is a godot issue that I'll have to think through, look at the plugin arch and maybe propose/submit a solution to if I care enough ( I probably don't).
So how do I know what version is installed? Seems like a VERSION.txt file or something similar at the root of the plugin would be very useful.
Coming from the unity package manager ( and a lot of similar managed plugin frameworks in a lot of software ) Godot is a bit of a shock. Not having reviews/ratings in the asset 'store' is understandable, but not knowing what version of plugin you have installed is not.
BTW - thanks for LimboAI - so far it's been flawless and easy to use. :D
Godot Engine has a bunch of plugins in the core: they are not visible in that list as well, and you can't disable them. LimboAI is like some of those internal plugins, and so are some other GDExtension addons. It's somewhat confusing terminology in Godot, plugins and addons. And I agree with that GDExtension addons should also have some kind of manifest file for the Asset Library, and it should be visible in the UI with some update mechanism. A new asset store is in development for Godot. Maybe it'll have a better UX.
So how do I know what version is installed? Seems like a VERSION.txt file or something similar at the root of the plugin would be very useful.
Yeah, only engine builds have versions visible inside the editor, but for GDExtension it's not there. Ideally, such functionality needs to be automatic, or I'll simply forget to update it. I've got some versioning working using git tags in GitHub workflows. What I can do is save that info to a file for the GDExtension build. That's a good idea.
Well done fixing virtual methods in cd0bc8e.
Goal
Status
Implemented and merged, with unresolved issues documented below.
Progress
ERROR: Condition "_instance_bindings != nullptr && _instance_bindings[0].binding != nullptr" is true.