C++: Base classes registered with GDREGISTER_RUNTIME_CLASS() don't display their properties in the inspector when selecting a child class.

Godot Version

godot 4.5.1

Question

I have recently started working on a C++ gameplay module and to avoid peppering the code with Engine::get_singleton()->is_editor_hint() I registered my classes with GDREGISTER_RUNTIME_CLASS().

Everything seemed to be working fine until I noticed that child classes were not listing their parent classes’ properties in the inspector.
Regular engine class properties show up fine, but a cursory look at the code base shows that they are all registered with GDREGISTER_CLASS().

Is this intended behavior?
If it is, it kind of limits the use of GDREGISTER_RUNTIME_CLASS() in many real world use cases.

Thanks

I believe that when GDREGISTER_RUNTIME_CLASS is used, it won’t save any values set in the Inspector at all. Runtime classes are just placeholders in the Editor, so you wouldn’t be able to change the default values.

Values are saving fine for the most derived class even if it is registered with GDREGISTER_RUNTIME_CLASS().
It just looks like when going up the hierarchy to display ancestor properties, the inspector ignores/doesn’t see parent runtime classes and skips directly to the first GDREGISTER_CLASS().