No easy way to #[export]
custom types · Issue #227 · godot-rust/gdext (original) (raw)
I do not know if this is a bug, but at the very least it is very unintuitive.
This works:
#[derive(Copy, Clone)] #[repr(i32)] pub enum Alignment { Left = 0, Center = 1, Right = 2, }
impl VariantMetadata for Alignment { fn variant_type() -> VariantType { VariantType::Int }
fn param_metadata() -> GDExtensionClassMethodArgumentMetadata {
GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT32
}
}
#[derive(GodotClass)] #[class(base=Control)] pub struct Foo { #[export] bar: Array, }
However, this does not (compiler error attached):
#[derive(Copy, Clone)] #[repr(i32)] pub enum Alignment { Left = 0, Center = 1, Right = 2, }
impl VariantMetadata for Alignment { fn variant_type() -> VariantType { VariantType::Int }
fn param_metadata() -> GDExtensionClassMethodArgumentMetadata {
GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT32
}
}
#[derive(GodotClass)] #[class(base=Control)] pub struct Foo { #[export] bar: Alignment, }
The only difference is that the former uses Array<Alignment>
, while the latter uses raw Alignment
.
The error:
out.txt