-
-
Notifications
You must be signed in to change notification settings - Fork 212
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Export properties #3
Labels
c: register
Register classes, functions and other symbols to GDScript
feature
Adds functionality to the library
Comments
Bromeon
added
feature
Adds functionality to the library
c: register
Register classes, functions and other symbols to GDScript
labels
Oct 3, 2022
Closed
It was suggested that, for cases where there's no actual need for a member variable to back a property, we can define a 0-byte type |
bors bot
added a commit
that referenced
this issue
Feb 1, 2023
67: PR #3/5 Astolfo feature/builtin-vector r=Bromeon a=RealAstolfo This PR builds upon ttencates macro and my math functions to create a rust implementation of what godot has in its C++ as close as i think, meant to be merged after #66 Co-authored-by: RealAstolfo <[email protected]>
5 tasks
bors bot
added a commit
that referenced
this issue
Mar 21, 2023
177: More complete #[export] implementation r=Bromeon a=ttencate Also: - Remove unused `property` argument. - Rename arguments `getter` and `setter` to `get` and `set` to stay closer to GDScript and save keystrokes. - Check at compilation time that the referenced getter and setter actually exist (otherwise Godot gives a cryptic "invalid get/set index" error). See #3. TBD: - [ ] ~~`strip_quotes` should go away, not sure if it even works correctly if using e.g. raw string literals. Use an actual Rust parser? Omit the quotes from the argument instead, i.e. `get = get_my_field` instead of `get = "get_my_field"`?~~ See discussion below. - [ ] ~~Make `KvParser::parse` take a closure so we can check that all fields have been consumed~~ See discussion below. - [x] Omitting one of getter/setter should make field write/read only - [x] Use `get`/`set` without arguments to generate a default one - [x] Make generated getters and setters `pub` since they're public to Godot anyway Co-authored-by: Thomas ten Cate <[email protected]>
bors bot
added a commit
that referenced
this issue
Mar 21, 2023
177: More complete #[export] implementation r=Bromeon a=ttencate Also: - Remove unused `property` argument. - Rename arguments `getter` and `setter` to `get` and `set` to stay closer to GDScript and save keystrokes. - Check at compilation time that the referenced getter and setter actually exist (otherwise Godot gives a cryptic "invalid get/set index" error). See #3. TBD: - [ ] ~~`strip_quotes` should go away, not sure if it even works correctly if using e.g. raw string literals. Use an actual Rust parser? Omit the quotes from the argument instead, i.e. `get = get_my_field` instead of `get = "get_my_field"`?~~ See discussion below. - [ ] ~~Make `KvParser::parse` take a closure so we can check that all fields have been consumed~~ See discussion below. - [x] Omitting one of getter/setter should make field write/read only - [x] Use `get`/`set` without arguments to generate a default one - [x] Make generated getters and setters `pub` since they're public to Godot anyway Co-authored-by: Thomas ten Cate <[email protected]>
bors bot
added a commit
that referenced
this issue
Mar 21, 2023
177: More complete #[export] implementation r=Bromeon a=ttencate Also: - Remove unused `property` argument. - Rename arguments `getter` and `setter` to `get` and `set` to stay closer to GDScript and save keystrokes. - Check at compilation time that the referenced getter and setter actually exist (otherwise Godot gives a cryptic "invalid get/set index" error). See #3. TBD: - [ ] ~~`strip_quotes` should go away, not sure if it even works correctly if using e.g. raw string literals. Use an actual Rust parser? Omit the quotes from the argument instead, i.e. `get = get_my_field` instead of `get = "get_my_field"`?~~ See discussion below. - [ ] ~~Make `KvParser::parse` take a closure so we can check that all fields have been consumed~~ See discussion below. - [x] Omitting one of getter/setter should make field write/read only - [x] Use `get`/`set` without arguments to generate a default one - [x] Make generated getters and setters `pub` since they're public to Godot anyway Co-authored-by: Thomas ten Cate <[email protected]>
bors bot
added a commit
that referenced
this issue
Mar 21, 2023
177: More complete #[export] implementation r=Bromeon a=ttencate Also: - Remove unused `property` argument. - Rename arguments `getter` and `setter` to `get` and `set` to stay closer to GDScript and save keystrokes. - Check at compilation time that the referenced getter and setter actually exist (otherwise Godot gives a cryptic "invalid get/set index" error). See #3. TBD: - [ ] ~~`strip_quotes` should go away, not sure if it even works correctly if using e.g. raw string literals. Use an actual Rust parser? Omit the quotes from the argument instead, i.e. `get = get_my_field` instead of `get = "get_my_field"`?~~ See discussion below. - [ ] ~~Make `KvParser::parse` take a closure so we can check that all fields have been consumed~~ See discussion below. - [x] Omitting one of getter/setter should make field write/read only - [x] Use `get`/`set` without arguments to generate a default one - [x] Make generated getters and setters `pub` since they're public to Godot anyway Co-authored-by: Thomas ten Cate <[email protected]>
bors bot
added a commit
that referenced
this issue
Mar 21, 2023
177: More complete #[export] implementation r=Bromeon a=ttencate Also: - Remove unused `property` argument. - Rename arguments `getter` and `setter` to `get` and `set` to stay closer to GDScript and save keystrokes. - Check at compilation time that the referenced getter and setter actually exist (otherwise Godot gives a cryptic "invalid get/set index" error). See #3. TBD: - [ ] ~~`strip_quotes` should go away, not sure if it even works correctly if using e.g. raw string literals. Use an actual Rust parser? Omit the quotes from the argument instead, i.e. `get = get_my_field` instead of `get = "get_my_field"`?~~ See discussion below. - [ ] ~~Make `KvParser::parse` take a closure so we can check that all fields have been consumed~~ See discussion below. - [x] Omitting one of getter/setter should make field write/read only - [x] Use `get`/`set` without arguments to generate a default one - [x] Make generated getters and setters `pub` since they're public to Godot anyway Co-authored-by: Thomas ten Cate <[email protected]>
This is done. Any further improvements can be tracked in separate issues. |
Hapenia-Lans
pushed a commit
to Hapenia-Lans/gdextension
that referenced
this issue
May 26, 2023
# This is the 1st commit message: Parse gdextension_interface.h declarations using regex # This is the commit message #2: AsUninit trait to convert FFI pointers to their uninitialized versions # This is the commit message godot-rust#3: GodotFfi::from_sys_init() now uses uninitialized pointer types # This is the commit message godot-rust#4: Introduce GDExtensionUninitialized*Ptr, without changing semantics # This is the commit message godot-rust#5: Adjust init code to new get_proc_address mechanism # This is the commit message godot-rust#6: Make `trace` feature available in godot-ffi, fix interface access before initialization # This is the commit message godot-rust#7: Compatibility layer between Godot 4.0 and 4.1 (different GDExtension APIs) # This is the commit message godot-rust#8: Add GdextBuild to access build/runtime metadata # This is the commit message godot-rust#9: Detect 4.0 <-> 4.1 mismatches in both directions + missing `compatibility_minimum = 4.1` # This is the commit message godot-rust#10: Detect legacy/modern version of C header (also without `custom-godot` feature) # This is the commit message godot-rust#11: CI: add jobs that use patched 4.0.x versions # This is the commit message godot-rust#12: Remove several memory leaks by constructing into uninitialized pointers # This is the commit message godot-rust#13: CI: memcheck jobs for both 4.0.3 and nightly # This is the commit message godot-rust#14: Remove ToVariant, FromVariant, and VariantMetadata impls for pointers This commit splits SignatureTuple into two separate traits: PtrcallSignatureTuple and VarcallSignatureTuple. The latter is a child of the former. PtrcallSignatureTuple is used for ptrcall and only demands GodotFuncMarshall of its arguments. VarcallSignatureTuple is used for varcall and additionally demands ToVariant, FromVariant, and VariantMetadata of its arguments, so pointers cannot benefit from the optimizations provided by varcall over ptrcall. # This is the commit message godot-rust#15: Adds FromVariant and ToVariant proc macros # This is the commit message godot-rust#16: godot-core: builtin: reimplement Plane functions/methods # This is the commit message godot-rust#17: impl GodotFfi for Option<T> when T is pointer sized and nullable godot-rust#240 Additionally FromVariant and ToVariant are also implemented for Option<Gd<T>> to satisfy all the requirements for ffi and godot_api. # This is the commit message godot-rust#18: Fix UB in virtual method calls that take objects Fix incorrect incrementing of refcount when calling in to godot Fix refcount not being incremented when we receive a refcounted object in virtual methods # This is the commit message godot-rust#19: fix UB caused by preload weirdness # This is the commit message godot-rust#20: Implements swizzle and converts from/to tuples
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
c: register
Register classes, functions and other symbols to GDScript
feature
Adds functionality to the library
Allow a way to export Rust fields as GDScript properties, e.g.:
This tracks the basic feature, all the customization around GDScript's
@export
can come later.Until this is implemented,
#[func]
functions can serve as a workaround to pass data back and forth.The text was updated successfully, but these errors were encountered: