diff options
Diffstat (limited to 'src/core.cpp')
-rw-r--r-- | src/core.cpp | 64 |
1 files changed, 46 insertions, 18 deletions
diff --git a/src/core.cpp b/src/core.cpp index 5039ffe..986ecc1 100644 --- a/src/core.cpp +++ b/src/core.cpp @@ -20,9 +20,11 @@ #include "font.hpp" #include "graphic.hpp" #include "key.hpp" -#include "mesh.hpp" -#include "model.hpp" #include "rotation_3d.hpp" +#include "skeletal_model.hpp" +#include "skeletal_mesh.hpp" +#include "static_model.hpp" +#include "static_mesh.hpp" #include "sound.hpp" #include "sprite.hpp" #include "texture.hpp" @@ -51,14 +53,22 @@ vk_debug_callback( { // Set level. Log::Level log_level; - if(message_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT) + switch(message_severity) + { + case VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT: log_level = Log::Level::Trace; - else if(message_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT) + break; + case VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT: log_level = Log::Level::Information; - else if(message_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) + break; + case VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT: log_level = Log::Level::Warning; - else if(message_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT) + break; + case VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT: + default: log_level = Log::Level::Error; + break; + } // Log message. cg_core.log.message(log_level, callback_data->pMessage); @@ -144,7 +154,9 @@ load_game(void *obj) cg_graphic_finish_config(cg_core.mrb); cg_core.max_frame_duration = - duration<long long, std::milli>(1000 / cg_core.fps); + duration<long long, std::milli>(1000 / cg_core.fps); + // FIXME: actually calculates the real delta time. + cg_core.delta_time = 1.0f / cg_core.fps; } void @@ -593,6 +605,26 @@ unload_vk_graphics_pipeline_3d(void *obj) } void +load_vk_graphics_pipeline_3d_skeletal(void *obj) +{ + try + { + cg_core.vk_graphics_pipeline_3d_skeletal = + std::make_unique<VK::GraphicsPipeline3DSkeletal>(); + } + catch(const CommandError &e) + { + throw CommandError{"Failed to create 3d skeletal graphics pipeline."}; + } +} + +void +unload_vk_graphics_pipeline_3d_skeletal(void *obj) +{ + cg_core.vk_graphics_pipeline_3d_skeletal = nullptr; +} + +void load_vk_graphics_pipeline_2d_solid(void *obj) { try @@ -660,14 +692,14 @@ unload_vk_renderer(void *obj) void load_mruby_interface(void *obj) { - mrb_value main_obj = mrb_obj_iv_inspect(cg_core.mrb, cg_core.mrb->top_self); - cg_candy_gear_init(cg_core.mrb); cg_font_init(cg_core.mrb); cg_key_init(cg_core.mrb); - cg_mesh_init(cg_core.mrb); - cg_model_init(cg_core.mrb); cg_rotation_3d_init(cg_core.mrb); + cg_skeletal_model_init(cg_core.mrb); + cg_skeletal_mesh_init(cg_core.mrb); + cg_static_model_init(cg_core.mrb); + cg_static_mesh_init(cg_core.mrb); cg_sound_init(cg_core.mrb); cg_sprite_init(cg_core.mrb); cg_texture_init(cg_core.mrb); @@ -675,13 +707,6 @@ load_mruby_interface(void *obj) cg_vector_4d_init(cg_core.mrb); cg_view_2d_init(cg_core.mrb); cg_view_3d_init(cg_core.mrb); - - mrb_funcall_id(cg_core.mrb, main_obj, cg_core.sym_init, 0); - if (cg_core.mrb->exc) - { - mrb_print_error(cg_core.mrb); - throw CommandError{"Error initializing game."}; - } } } @@ -709,6 +734,9 @@ const CommandChain cg_sCore::loader{ &unload_vk_graphics_pipeline_2d_solid_layout}, {&load_vk_graphics_pipeline_2d_wired_layout, &unload_vk_graphics_pipeline_2d_wired_layout}, + // TODO: finish skeletal mesh animation + // {&load_vk_graphics_pipeline_3d_skeletal, + // &unload_vk_graphics_pipeline_3d_skeletal}, {&load_vk_graphics_pipeline_3d, &unload_vk_graphics_pipeline_3d}, {&load_vk_graphics_pipeline_2d_solid, &unload_vk_graphics_pipeline_2d_solid}, {&load_vk_graphics_pipeline_2d_wired, &unload_vk_graphics_pipeline_2d_wired}, |