Type-safe signals for engine classes #1111
Merged
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.
Following up #1000, this pull request exposes all signals declared in Godot engine classes.
Closes #1108.
For example,
Node
has thechild_entered_tree
signal:To connect such a signal in Rust, we can simply do:
In other words, it's the exact same API as before.
This PR also comes with other small changes:
WithSignals
trait is split intoWithSignals
(all signal-enabled classes) andWithUserSignals
(only#[signal]
user-defined ones).Gd::signals()
now takes&mut
instead of&
. This is mostly for consistency withself.signals()
, as well as Godot's own APIsObject::connect
,Object::emit
etc. all operating on&mut self
. Technically it makes not much difference, but signal manipulation being linked to mutation has a higher chance of detecting unintended changes.