| 337 | } |
| 338 | |
| 339 | void create_test_scene(SRendererId renderer) |
| 340 | { |
| 341 | // allocate 100 movable cubes |
| 342 | auto renderableT_builder = make_zeroed<sugoi::type_builder_t>(); |
| 343 | renderableT_builder |
| 344 | .with<skr_translation_comp_t, skr_rotation_comp_t, skr_scale_comp_t>() |
| 345 | .with<skr_index_comp_t, skr_movement_comp_t>() |
| 346 | .with<skr_render_effect_t>() |
| 347 | .with(SUGOI_COMPONENT_GUID); |
| 348 | // allocate renderable |
| 349 | auto renderableT = make_zeroed<sugoi_entity_type_t>(); |
| 350 | renderableT.type = renderableT_builder.build(); |
| 351 | uint32_t init_idx = 0; |
| 352 | auto primSetup = [&](sugoi_chunk_view_t* view) { |
| 353 | auto translations = sugoi::get_owned_rw<skr_translation_comp_t>(view); |
| 354 | auto rotations = sugoi::get_owned_rw<skr_rotation_comp_t>(view); |
| 355 | auto scales = sugoi::get_owned_rw<skr_scale_comp_t>(view); |
| 356 | auto indices = sugoi::get_owned_rw<skr_index_comp_t>(view); |
| 357 | auto movements = sugoi::get_owned_rw<skr_movement_comp_t>(view); |
| 358 | auto states = sugoi::get_owned_rw<game::anim_state_t>(view); |
| 359 | auto guids = (skr_guid_t*)sugoiV_get_owned_ro(view, SUGOI_COMPONENT_GUID); |
| 360 | for (uint32_t i = 0; i < view->count; i++) |
| 361 | { |
| 362 | if (guids) |
| 363 | sugoi_make_guid(&guids[i]); |
| 364 | if (movements) |
| 365 | { |
| 366 | translations[i].value = { 0.f, 0.f, 0.f }; |
| 367 | rotations[i].euler = { 0.f, 0.f, 0.f }; |
| 368 | scales[i].value = { 8.f, 8.f, 8.f }; |
| 369 | if (indices) indices[i].value = init_idx++; |
| 370 | } |
| 371 | else |
| 372 | { |
| 373 | translations[i].value = { 0.f, 30.f, -10.f }; |
| 374 | rotations[i].euler = { 90.f, 0.f, 0.f }; |
| 375 | scales[i].value = { .25f, .25f, .25f }; |
| 376 | } |
| 377 | if (states) |
| 378 | { |
| 379 | using namespace skr::guid::literals; |
| 380 | states[i].animation_resource = u8"83c0db0b-08cd-4951-b1c3-65c2008d0113"_guid; |
| 381 | states[i].animation_resource.resolve(true, renderer->get_sugoi_storage()); |
| 382 | } |
| 383 | } |
| 384 | if (auto feature_arrs = sugoiV_get_owned_rw(view, sugoi_id_of<skr_render_effect_t>::get())) |
| 385 | { |
| 386 | if (movements) |
| 387 | skr_render_effect_attach(renderer, view, u8"ForwardEffect"); |
| 388 | else |
| 389 | skr_render_effect_attach(renderer, view, u8"ForwardEffectSkin"); |
| 390 | } |
| 391 | }; |
| 392 | sugoiS_allocate_type(renderer->get_sugoi_storage(), &renderableT, 512, SUGOI_LAMBDA(primSetup)); |
| 393 | |
| 394 | SKR_LOG_DEBUG(u8"Create Scene 0!"); |
| 395 | |
| 396 | // allocate 1 player entity |
no test coverage detected