1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

refacto: RenderingEngine is now better hidden

* No more access to the singleton instance from everywhere (RenderingEngine::get_instance dropped)
* RenderingEngine::get_timer_time is now non static
* RenderingEngine::draw_menu_scene is now non static
* RenderingEngine::draw_scene is now non static
* RenderingEngine::{initialize,finalize} are now non static
* RenderingEngine::run is now non static
* RenderingEngine::getWindowSize now have a static helper. It was mandatory to hide the global get_instance access
This commit is contained in:
Loic Blot 2021-04-28 12:48:13 +02:00 committed by Loïc Blot
parent 74125a74d3
commit 258101a910
14 changed files with 112 additions and 121 deletions

View file

@ -642,6 +642,7 @@ public:
bool startup(bool *kill,
InputHandler *input,
RenderingEngine *rendering_engine,
const GameStartData &game_params,
std::string &error_message,
bool *reconnect,
@ -853,6 +854,7 @@ private:
these items (e.g. device)
*/
IrrlichtDevice *device;
RenderingEngine *m_rendering_engine;
video::IVideoDriver *driver;
scene::ISceneManager *smgr;
bool *kill;
@ -994,6 +996,7 @@ Game::~Game()
bool Game::startup(bool *kill,
InputHandler *input,
RenderingEngine *rendering_engine,
const GameStartData &start_data,
std::string &error_message,
bool *reconnect,
@ -1001,21 +1004,21 @@ bool Game::startup(bool *kill,
{
// "cache"
this->device = RenderingEngine::get_raw_device();
m_rendering_engine = rendering_engine;
device = m_rendering_engine->get_raw_device();
this->kill = kill;
this->error_message = &error_message;
this->reconnect_requested = reconnect;
reconnect_requested = reconnect;
this->input = input;
this->chat_backend = chat_backend;
this->simple_singleplayer_mode = start_data.isSinglePlayer();
simple_singleplayer_mode = start_data.isSinglePlayer();
input->keycache.populate();
driver = device->getVideoDriver();
smgr = RenderingEngine::get_scene_manager();
smgr = m_rendering_engine->get_scene_manager();
RenderingEngine::get_scene_manager()->getParameters()->
setAttribute(scene::OBJ_LOADER_IGNORE_MATERIAL_FILES, true);
smgr->getParameters()->setAttribute(scene::OBJ_LOADER_IGNORE_MATERIAL_FILES, true);
// Reinit runData
runData = GameRunData();
@ -1036,7 +1039,7 @@ bool Game::startup(bool *kill,
if (!createClient(start_data))
return false;
RenderingEngine::initialize(client, hud);
m_rendering_engine->initialize(client, hud);
return true;
}
@ -1055,7 +1058,7 @@ void Game::run()
Profiler::GraphValues dummyvalues;
g_profiler->graphGet(dummyvalues);
draw_times.last_time = RenderingEngine::get_timer_time();
draw_times.last_time = m_rendering_engine->get_timer_time();
set_light_table(g_settings->getFloat("display_gamma"));
@ -1067,12 +1070,12 @@ void Game::run()
irr::core::dimension2d<u32> previous_screen_size(g_settings->getU16("screen_w"),
g_settings->getU16("screen_h"));
while (RenderingEngine::run()
while (m_rendering_engine->run()
&& !(*kill || g_gamecallback->shutdown_requested
|| (server && server->isShutdownRequested()))) {
const irr::core::dimension2d<u32> &current_screen_size =
RenderingEngine::get_video_driver()->getScreenSize();
m_rendering_engine->get_video_driver()->getScreenSize();
// Verify if window size has changed and save it if it's the case
// Ensure evaluating settings->getBool after verifying screensize
// First condition is cheaper
@ -1085,7 +1088,7 @@ void Game::run()
}
// Calculate dtime =
// RenderingEngine::run() from this iteration
// m_rendering_engine->run() from this iteration
// + Sleep time until the wanted FPS are reached
limitFps(&draw_times, &dtime);
@ -1134,7 +1137,7 @@ void Game::run()
void Game::shutdown()
{
RenderingEngine::finalize();
m_rendering_engine->finalize();
#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR <= 8
if (g_settings->get("3d_mode") == "pageflip") {
driver->setRenderTarget(irr::video::ERT_STEREO_BOTH_BUFFERS);
@ -1463,7 +1466,7 @@ bool Game::connectToServer(const GameStartData &start_data,
start_data.password, start_data.address,
*draw_control, texture_src, shader_src,
itemdef_manager, nodedef_manager, sound, eventmgr,
RenderingEngine::get_instance(), connect_address.isIPv6(), m_game_ui.get());
m_rendering_engine, connect_address.isIPv6(), m_game_ui.get());
client->m_simple_singleplayer_mode = simple_singleplayer_mode;
@ -1485,9 +1488,9 @@ bool Game::connectToServer(const GameStartData &start_data,
f32 dtime;
f32 wait_time = 0; // in seconds
fps_control.last_time = RenderingEngine::get_timer_time();
fps_control.last_time = m_rendering_engine->get_timer_time();
while (RenderingEngine::run()) {
while (m_rendering_engine->run()) {
limitFps(&fps_control, &dtime);
@ -1524,7 +1527,7 @@ bool Game::connectToServer(const GameStartData &start_data,
if (client->m_is_registration_confirmation_state) {
if (registration_confirmation_shown) {
// Keep drawing the GUI
RenderingEngine::draw_menu_scene(guienv, dtime, true);
m_rendering_engine->draw_menu_scene(guienv, dtime, true);
} else {
registration_confirmation_shown = true;
(new GUIConfirmRegistration(guienv, guienv->getRootGUIElement(), -1,
@ -1560,9 +1563,9 @@ bool Game::getServerContent(bool *aborted)
FpsControl fps_control = { 0 };
f32 dtime; // in seconds
fps_control.last_time = RenderingEngine::get_timer_time();
fps_control.last_time = m_rendering_engine->get_timer_time();
while (RenderingEngine::run()) {
while (m_rendering_engine->run()) {
limitFps(&fps_control, &dtime);
@ -1600,13 +1603,13 @@ bool Game::getServerContent(bool *aborted)
if (!client->itemdefReceived()) {
const wchar_t *text = wgettext("Item definitions...");
progress = 25;
RenderingEngine::draw_load_screen(text, guienv, texture_src,
m_rendering_engine->draw_load_screen(text, guienv, texture_src,
dtime, progress);
delete[] text;
} else if (!client->nodedefReceived()) {
const wchar_t *text = wgettext("Node definitions...");
progress = 30;
RenderingEngine::draw_load_screen(text, guienv, texture_src,
m_rendering_engine->draw_load_screen(text, guienv, texture_src,
dtime, progress);
delete[] text;
} else {
@ -1633,7 +1636,7 @@ bool Game::getServerContent(bool *aborted)
}
progress = 30 + client->mediaReceiveProgress() * 35 + 0.5;
RenderingEngine::draw_load_screen(utf8_to_wide(message.str()), guienv,
m_rendering_engine->draw_load_screen(utf8_to_wide(message.str()), guienv,
texture_src, dtime, progress);
}
}
@ -3886,7 +3889,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime,
} catch (SettingNotFoundException) {
}
#endif
RenderingEngine::draw_scene(skycolor, m_game_ui->m_flags.show_hud,
m_rendering_engine->draw_scene(skycolor, m_game_ui->m_flags.show_hud,
m_game_ui->m_flags.show_minimap, draw_wield_tool, draw_crosshair);
/*
@ -4016,7 +4019,7 @@ inline void Game::limitFps(FpsControl *fps_timings, f32 *dtime)
void Game::showOverlayMessage(const char *msg, float dtime, int percent, bool draw_clouds)
{
const wchar_t *wmsg = wgettext(msg);
RenderingEngine::draw_load_screen(wmsg, guienv, texture_src, dtime, percent,
m_rendering_engine->draw_load_screen(wmsg, guienv, texture_src, dtime, percent,
draw_clouds);
delete[] wmsg;
}
@ -4229,6 +4232,7 @@ void Game::showPauseMenu()
void the_game(bool *kill,
InputHandler *input,
RenderingEngine *rendering_engine,
const GameStartData &start_data,
std::string &error_message,
ChatBackend &chat_backend,
@ -4243,8 +4247,8 @@ void the_game(bool *kill,
try {
if (game.startup(kill, input, start_data, error_message,
reconnect_requested, &chat_backend)) {
if (game.startup(kill, input, rendering_engine, start_data,
error_message, reconnect_requested, &chat_backend)) {
game.run();
}