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:
parent
74125a74d3
commit
258101a910
14 changed files with 112 additions and 121 deletions
|
@ -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> ¤t_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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue