gdext
gdext copied to clipboard
Rust bindings for Godot 4
**Background:** type-ptr is passed to a Godot FFI function, representing the return type as an output parameter. This type-ptr contains _the address_ of an object-ptr. **Problem:** the object-ptr was not...
_Upstream issue: https://github.com/godotengine/godot/issues/66231_ On Windows, the Godot editor "locks" a DLL containing a GDExtension library and releases it only after shutdown. Native code can thus not be recompiled as long...
This is friendly note so that you don't freak out when seeing this project it broken against Godot's master :smiley: see https://github.com/godotengine/godot/pull/67750 & https://github.com/godotengine/godot-cpp/pull/896 Basically GDExtension API uses `StringName` (almost)...
There are some low-hanging fruits for making the library faster, this issue tracks such approaches. **Codegen** - [ ] Check `rustfmt` performance -- parallelize or allow skipping - [x] Cache...
When "minimal" was added as a feature, `examples` and `itest` included the `godot` package with the feature "minimal". As a result, when building the workspace, even if the workspace is...
Currently, `RefCell` and `i32` are used to store user-defined `GodotClass` instances and their reference counts: https://github.com/godot-rust/gdextension/blob/a64f22409e05d1353492fded4aa36a4b4e6b710d/godot-core/src/storage.rs#L15-L21 In a multi-threaded configuration of the engine, this may lead to unsoundness when the...
Bindgen not only adds a ton of dependencies that slow down initial compilation, but it is regularly an obstacle for users to get started, because they don't have LLVM installed...
As soon as the library becomes a bit more stable, we can release our first `0.x` versions to crates.io. Crate publishing was in the past blocked by unreleased dependencies, see...
Similar to the old `NodeResolveExt`, utility methods would allow more idiomatic access to the scene tree. Those could be provided as an extension trait or in a dedicated module/struct. Examples:...
Enums
Once #3 and #4 are ready, enums could be supported. Maybe this could start as a builder API, and then proc-macros. See also: https://github.com/godot-rust/godot-rust/pull/775