From 02ee21f4571cda15d4bf0ee42128709cfab0485b Mon Sep 17 00:00:00 2001 From: HampusM Date: Sun, 5 Jul 2026 01:04:56 +0200 Subject: feat(engine): add get_variant_reflection fn to enum reflection --- engine-macros/src/reflection/enum_impl.rs | 12 +++++++++++- engine-reflection/src/lib.rs | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/engine-macros/src/reflection/enum_impl.rs b/engine-macros/src/reflection/enum_impl.rs index baf1732..f46b977 100644 --- a/engine-macros/src/reflection/enum_impl.rs +++ b/engine-macros/src/reflection/enum_impl.rs @@ -166,7 +166,17 @@ fn generate_impls( get_default_value: || { #get_default_value_fn }, - cast_dyn_any: |ptr| ptr.cast::() + cast_dyn_any: |ptr| ptr.cast::(), + get_variant_reflection: |target| { + use std::any::Any; + use #engine_crate_path::reflection::EnumReflectionExt; + + let target = target.downcast_ref::()?; + + Some(::get_variant_reflection( + target + )) + } } ) }; diff --git a/engine-reflection/src/lib.rs b/engine-reflection/src/lib.rs index ce770e9..2b8d01a 100644 --- a/engine-reflection/src/lib.rs +++ b/engine-reflection/src/lib.rs @@ -141,6 +141,8 @@ pub struct Enum pub get_default_value: fn() -> Option, pub cast_dyn_any: CastDynAnyFn, + + pub get_variant_reflection: fn(&dyn Any) -> Option<&'static EnumVariant>, } impl Enum -- cgit v1.2.3-18-g5258