Browse Source

davey: walk up bases - close #1313

skypjack 2 weeks ago
parent
commit
7cd612cc87
2 changed files with 22 additions and 6 deletions
  1. 4 0
      src/entt/tools/davey.hpp
  2. 18 6
      testbed/meta/meta.cpp

+ 4 - 0
src/entt/tools/davey.hpp

@@ -131,6 +131,10 @@ static void present_element(const meta_any &obj, OnEntity on_entity) {
             ImGui::Text("%s: %s", label, underlying_type.data());
         }
     }
+
+    for([[maybe_unused]] const auto [id, base]: obj.type().base()) {
+        present_element<Entity>(obj.allow_cast(base.type()), on_entity);
+    }
 }
 
 template<entity_like Entity, typename Allocator>

+ 18 - 6
testbed/meta/meta.cpp

@@ -1,3 +1,4 @@
+#include <SDL3/SDL_rect.h>
 #include <component/input_listener_component.h>
 #include <component/position_component.h>
 #include <component/rect_component.h>
@@ -8,6 +9,18 @@
 namespace testbed {
 
 void meta_setup() {
+    entt::meta_factory<SDL_FPoint>()
+        .type("sdl_fpoint")
+        .data<&SDL_FPoint::x>("x")
+        .data<&SDL_FPoint::y>("y");
+
+    entt::meta_factory<SDL_FRect>()
+        .type("sdl_frect")
+        .data<&SDL_FRect::x>("x")
+        .data<&SDL_FRect::y>("y")
+        .data<&SDL_FRect::w>("w")
+        .data<&SDL_FRect::h>("h");
+
     entt::meta_factory<input_listener_component::type>()
         .type("command type")
         .data<input_listener_component::type::UP>("up")
@@ -19,17 +32,16 @@ void meta_setup() {
         .type("input listener")
         .data<&input_listener_component::command>("command");
 
+    entt::meta_factory<SDL_FPoint>()
+        .type("point");
+
     entt::meta_factory<position_component>()
         .type("position")
-        .data<&SDL_FPoint::x>("x")
-        .data<&SDL_FPoint::y>("y");
+        .base<SDL_FPoint>();
 
     entt::meta_factory<rect_component>()
         .type("rect")
-        .data<&SDL_FRect::x>("x")
-        .data<&SDL_FRect::y>("y")
-        .data<&SDL_FRect::w>("w")
-        .data<&SDL_FRect::h>("h");
+        .base<SDL_FRect>();
 
     entt::meta_factory<renderable_component>()
         .type("renderable");