diff --git a/engine/core/include/engine.hpp b/engine/core/include/engine.hpp index da9063e..7a9fd4f 100755 --- a/engine/core/include/engine.hpp +++ b/engine/core/include/engine.hpp @@ -342,12 +342,12 @@ namespace prism { void update_animation_channel(Scene& scene, const AnimationChannel& channel, float time); - app* app = nullptr; + app* current_app = nullptr; GFX* gfx = nullptr; std::unique_ptr input; std::unique_ptr physics; - std::unique_ptr renderer; + std::unique_ptr current_renderer; std::vector timers, timers_to_remove; diff --git a/engine/core/include/imgui_backend.hpp b/engine/core/include/imgui_backend.hpp index 41a494f..c253bb2 100644 --- a/engine/core/include/imgui_backend.hpp +++ b/engine/core/include/imgui_backend.hpp @@ -2,6 +2,7 @@ #include #include +#include #include "platform.hpp" diff --git a/engine/core/src/engine.cpp b/engine/core/src/engine.cpp index 8d86741..e00f100 100755 --- a/engine/core/src/engine.cpp +++ b/engine/core/src/engine.cpp @@ -31,7 +31,7 @@ engine::engine(const int argc, char* argv[]) { console::register_command("echo", console::argument_format(1), [](const console::arguments& args) { log(std::get(args[0].data)); }); - + console::register_command("platform_info", console::argument_format(0), [this](const console::arguments&) { log("Platform: {}", platform::get_name()); log("GFX: {}", gfx->get_name()); @@ -57,11 +57,11 @@ engine::~engine() = default; void engine::set_app(prism::app* p_app) { Expects(p_app != nullptr); - this->app = p_app; + this->current_app = p_app; } prism::app* engine::get_app() const { - return app; + return current_app; } void engine::pause() { @@ -89,7 +89,7 @@ bool engine::is_quitting() const { } void engine::prepare_quit() { - app->prepare_quit(); + current_app->prepare_quit(); } void engine::set_gfx(GFX* p_gfx) { @@ -107,7 +107,7 @@ prism::input_system* engine::get_input() { } prism::renderer* engine::get_renderer() { - return renderer.get(); + return current_renderer.get(); } Physics* engine::get_physics() { @@ -391,19 +391,19 @@ void engine::add_window(void* native_handle, const platform::window_ptr window_p window->identifier = window_ptr; if(platform::is_main_window(window_ptr)) { - renderer = std::make_unique(gfx); + current_renderer = std::make_unique(gfx); ImGuiViewport* main_viewport = ImGui::GetMainViewport(); main_viewport->PlatformHandle = ::engine->get_main_window(); } - + const auto drawable_extent = platform::get_window_drawable_size(window_ptr); - + gfx->initialize_view(native_handle, window_ptr, drawable_extent.width, drawable_extent.height); window->extent = extent; - window->render_target = renderer->allocate_render_target(drawable_extent); + window->render_target = current_renderer->allocate_render_target(drawable_extent); render_ready = true; } @@ -424,7 +424,7 @@ void engine::resize(const platform::window_ptr identifier, const prism::Extent e const auto drawable_extent = platform::get_window_drawable_size(identifier); gfx->recreate_view(identifier, drawable_extent.width, drawable_extent.height); - renderer->resize_render_target(*window->render_target, drawable_extent); + current_renderer->resize_render_target(*window->render_target, drawable_extent); } void engine::move(const platform::window_ptr identifier) { @@ -622,8 +622,8 @@ void engine::begin_frame(const float delta_time) { if(console_enabled) draw_console(); - if(app != nullptr) - app->begin_frame(); + if(current_app != nullptr) + current_app->begin_frame(); } void engine::end_frame() { @@ -675,18 +675,18 @@ void engine::update(const float delta_time) { input->update(); - app->update(delta_time); - + current_app->update(delta_time); + + if(cutscene != nullptr && play_cutscene && !paused) { + update_cutscene(current_cutscene_time); + + current_cutscene_time += delta_time; + } + if(current_scene != nullptr) { if(update_physics && !paused) physics->update(delta_time); - - if(cutscene != nullptr && play_cutscene && !paused) { - update_cutscene(current_cutscene_time); - - current_cutscene_time += delta_time; - } - + for(auto& target : animation_targets) { if((target.current_time * target.animation.ticks_per_second) > target.animation.duration) { if(target.looping) { @@ -724,11 +724,11 @@ void engine::render(const platform::window_ptr index) { if(platform::is_main_window(index)) { imgui->render(); - app->render(commandbuffer); + current_app->render(commandbuffer); } - if(renderer != nullptr) - renderer->render(commandbuffer, app->wants_no_scene_rendering() ? nullptr : current_scene, *window->render_target, index); + if(current_renderer != nullptr) + current_renderer->render(commandbuffer, current_app->wants_no_scene_rendering() ? nullptr : current_scene, *window->render_target, index); gfx->submit(commandbuffer, index); }