@@ -30812,6 +30812,8 @@ void UpdateWorldSummary(ecs_iter_t *it) {
3081230812 summary[i].merge_time_total = (double)info->merge_time_total;
3081330813
3081430814 summary[i].frame_count ++;
30815+
30816+ summary[i].build_info = *ecs_get_build_info();
3081530817 }
3081630818}
3081730819
@@ -31092,6 +31094,7 @@ void FlecsMonitorImport(
3109231094 ECS_COMPONENT_DEFINE(world, EcsWorldSummary);
3109331095
3109431096#if defined(FLECS_META) && defined(FLECS_UNITS)
31097+ ecs_entity_t build_info = ecs_lookup(world, "flecs.core.build_info_t");
3109531098 ecs_struct(world, {
3109631099 .entity = ecs_id(EcsWorldSummary),
3109731100 .members = {
@@ -31102,7 +31105,8 @@ void FlecsMonitorImport(
3110231105 { .name = "frame_time_last", .type = ecs_id(ecs_f64_t), .unit = EcsSeconds },
3110331106 { .name = "system_time_last", .type = ecs_id(ecs_f64_t), .unit = EcsSeconds },
3110431107 { .name = "merge_time_last", .type = ecs_id(ecs_f64_t), .unit = EcsSeconds },
31105- { .name = "frame_count", .type = ecs_id(ecs_u64_t) }
31108+ { .name = "frame_count", .type = ecs_id(ecs_u64_t) },
31109+ { .name = "build_info", .type = build_info }
3110631110 }
3110731111 });
3110831112#endif
@@ -58343,6 +58347,28 @@ double ecs_meta_ptr_to_float(
5834358347
5834458348#ifdef FLECS_META
5834558349
58350+ /* Opaque type serializatior addon vector */
58351+ static
58352+ int flecs_addon_vec_serialize(const ecs_serializer_t *ser, const void *ptr) {
58353+ char ***data = ECS_CONST_CAST(char***, ptr);
58354+ char **addons = data[0];
58355+ do {
58356+ ser->value(ser, ecs_id(ecs_string_t), addons);
58357+ } while((++ addons)[0]);
58358+ return 0;
58359+ }
58360+
58361+ static
58362+ size_t flecs_addon_vec_count(const void *ptr) {
58363+ int32_t count = 0;
58364+ char ***data = ECS_CONST_CAST(char***, ptr);
58365+ char **addons = data[0];
58366+ do {
58367+ ++ count;
58368+ } while(addons[count]);
58369+ return flecs_ito(size_t, count);
58370+ }
58371+
5834658372/* Initialize reflection data for core components */
5834758373static
5834858374void flecs_meta_import_core_definitions(
@@ -58356,14 +58382,34 @@ void flecs_meta_import_core_definitions(
5835658382 }
5835758383 });
5835858384
58385+ ecs_entity_t string_vec = ecs_vector(world, {
58386+ .entity = ecs_entity(world, { .name = "flecs.core.string_vec_t "}),
58387+ .type = ecs_id(ecs_string_t)
58388+ });
58389+
58390+ ecs_entity_t addon_vec = ecs_opaque(world, {
58391+ .entity = ecs_component(world, {
58392+ .type = {
58393+ .name = "flecs.core.addon_vec_t",
58394+ .size = ECS_SIZEOF(char**),
58395+ .alignment = ECS_ALIGNOF(char**)
58396+ }
58397+ }),
58398+ .type = {
58399+ .as_type = string_vec,
58400+ .serialize = flecs_addon_vec_serialize,
58401+ .count = flecs_addon_vec_count,
58402+ }
58403+ });
58404+
5835958405 ecs_struct(world, {
5836058406 .entity = ecs_entity(world, {
5836158407 .name = "flecs.core.build_info_t",
5836258408 .root_sep = ""
5836358409 }),
5836458410 .members = {
5836558411 { .name = "compiler", .type = ecs_id(ecs_string_t) },
58366- { .name = "addons", .type = ecs_id(ecs_string_t) },
58412+ { .name = "addons", .type = addon_vec },
5836758413 { .name = "version", .type = ecs_id(ecs_string_t) },
5836858414 { .name = "version_major", .type = ecs_id(ecs_i16_t) },
5836958415 { .name = "version_minor", .type = ecs_id(ecs_i16_t) },
@@ -58379,12 +58425,15 @@ static
5837958425void flecs_meta_import_doc_definitions(
5838058426 ecs_world_t *world)
5838158427{
58428+ (void)world;
58429+ #ifdef FLECS_DOC
5838258430 ecs_struct(world, {
5838358431 .entity = ecs_id(EcsDocDescription),
5838458432 .members = {
5838558433 { .name = "value", .type = ecs_id(ecs_string_t) }
5838658434 }
5838758435 });
58436+ #endif
5838858437}
5838958438
5839058439/* Initialize reflection data for meta components */
0 commit comments