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},  | 
