diff options
Diffstat (limited to 'src/client/game.cpp')
-rw-r--r-- | src/client/game.cpp | 83 |
1 files changed, 42 insertions, 41 deletions
diff --git a/src/client/game.cpp b/src/client/game.cpp index 33707df4a..aa794a755 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -839,7 +839,7 @@ private: MapDrawControl *draw_control = nullptr; Camera *camera = nullptr; Clouds *clouds = nullptr; // Free using ->Drop() - Sky *sky = nullptr; // Free using ->Drop() + Sky *m_sky = nullptr; // Free using ->Drop() Hud *hud = nullptr; Minimap *mapper = nullptr; @@ -1159,8 +1159,8 @@ void Game::shutdown() if (gui_chat_console) gui_chat_console->drop(); - if (sky) - sky->drop(); + if (m_sky) + m_sky->drop(); /* cleanup menus */ while (g_menumgr.menuCount() > 0) { @@ -1293,7 +1293,7 @@ bool Game::createClient(const GameStartData &start_data) { showOverlayMessage(N_("Creating client..."), 0, 10); - draw_control = new MapDrawControl; + draw_control = new MapDrawControl(); if (!draw_control) return false; @@ -1334,7 +1334,7 @@ bool Game::createClient(const GameStartData &start_data) /* Camera */ - camera = new Camera(*draw_control, client); + camera = new Camera(*draw_control, client, m_rendering_engine); if (!camera->successfullyCreated(*error_message)) return false; client->setCamera(camera); @@ -1346,8 +1346,8 @@ bool Game::createClient(const GameStartData &start_data) /* Skybox */ - sky = new Sky(-1, texture_src, shader_src); - scsf->setSky(sky); + m_sky = new Sky(-1, m_rendering_engine, texture_src, shader_src); + scsf->setSky(m_sky); skybox = NULL; // This is used/set later on in the main run loop /* Pre-calculated values @@ -2754,23 +2754,23 @@ void Game::handleClientEvent_HudChange(ClientEvent *event, CameraOrientation *ca void Game::handleClientEvent_SetSky(ClientEvent *event, CameraOrientation *cam) { - sky->setVisible(false); + m_sky->setVisible(false); // Whether clouds are visible in front of a custom skybox. - sky->setCloudsEnabled(event->set_sky->clouds); + m_sky->setCloudsEnabled(event->set_sky->clouds); if (skybox) { skybox->remove(); skybox = NULL; } // Clear the old textures out in case we switch rendering type. - sky->clearSkyboxTextures(); + m_sky->clearSkyboxTextures(); // Handle according to type if (event->set_sky->type == "regular") { // Shows the mesh skybox - sky->setVisible(true); + m_sky->setVisible(true); // Update mesh based skybox colours if applicable. - sky->setSkyColors(event->set_sky->sky_color); - sky->setHorizonTint( + m_sky->setSkyColors(event->set_sky->sky_color); + m_sky->setHorizonTint( event->set_sky->fog_sun_tint, event->set_sky->fog_moon_tint, event->set_sky->fog_tint_type @@ -2778,61 +2778,62 @@ void Game::handleClientEvent_SetSky(ClientEvent *event, CameraOrientation *cam) } else if (event->set_sky->type == "skybox" && event->set_sky->textures.size() == 6) { // Disable the dyanmic mesh skybox: - sky->setVisible(false); + m_sky->setVisible(false); // Set fog colors: - sky->setFallbackBgColor(event->set_sky->bgcolor); + m_sky->setFallbackBgColor(event->set_sky->bgcolor); // Set sunrise and sunset fog tinting: - sky->setHorizonTint( + m_sky->setHorizonTint( event->set_sky->fog_sun_tint, event->set_sky->fog_moon_tint, event->set_sky->fog_tint_type ); // Add textures to skybox. for (int i = 0; i < 6; i++) - sky->addTextureToSkybox(event->set_sky->textures[i], i, texture_src); + m_sky->addTextureToSkybox(event->set_sky->textures[i], i, texture_src); } else { // Handle everything else as plain color. if (event->set_sky->type != "plain") infostream << "Unknown sky type: " << (event->set_sky->type) << std::endl; - sky->setVisible(false); - sky->setFallbackBgColor(event->set_sky->bgcolor); + m_sky->setVisible(false); + m_sky->setFallbackBgColor(event->set_sky->bgcolor); // Disable directional sun/moon tinting on plain or invalid skyboxes. - sky->setHorizonTint( + m_sky->setHorizonTint( event->set_sky->bgcolor, event->set_sky->bgcolor, "custom" ); } + delete event->set_sky; } void Game::handleClientEvent_SetSun(ClientEvent *event, CameraOrientation *cam) { - sky->setSunVisible(event->sun_params->visible); - sky->setSunTexture(event->sun_params->texture, + m_sky->setSunVisible(event->sun_params->visible); + m_sky->setSunTexture(event->sun_params->texture, event->sun_params->tonemap, texture_src); - sky->setSunScale(event->sun_params->scale); - sky->setSunriseVisible(event->sun_params->sunrise_visible); - sky->setSunriseTexture(event->sun_params->sunrise, texture_src); + m_sky->setSunScale(event->sun_params->scale); + m_sky->setSunriseVisible(event->sun_params->sunrise_visible); + m_sky->setSunriseTexture(event->sun_params->sunrise, texture_src); delete event->sun_params; } void Game::handleClientEvent_SetMoon(ClientEvent *event, CameraOrientation *cam) { - sky->setMoonVisible(event->moon_params->visible); - sky->setMoonTexture(event->moon_params->texture, + m_sky->setMoonVisible(event->moon_params->visible); + m_sky->setMoonTexture(event->moon_params->texture, event->moon_params->tonemap, texture_src); - sky->setMoonScale(event->moon_params->scale); + m_sky->setMoonScale(event->moon_params->scale); delete event->moon_params; } void Game::handleClientEvent_SetStars(ClientEvent *event, CameraOrientation *cam) { - sky->setStarsVisible(event->star_params->visible); - sky->setStarCount(event->star_params->count, false); - sky->setStarColor(event->star_params->starcolor); - sky->setStarScale(event->star_params->scale); + m_sky->setStarsVisible(event->star_params->visible); + m_sky->setStarCount(event->star_params->count, false); + m_sky->setStarColor(event->star_params->starcolor); + m_sky->setStarScale(event->star_params->scale); delete event->star_params; } @@ -3709,7 +3710,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, direct_brightness = time_brightness; sunlight_seen = true; } else { - float old_brightness = sky->getBrightness(); + float old_brightness = m_sky->getBrightness(); direct_brightness = client->getEnv().getClientMap() .getBackgroundBrightness(MYMIN(runData.fog_range * 1.2, 60 * BS), daynight_ratio, (int)(old_brightness * 255.5), &sunlight_seen) @@ -3736,7 +3737,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, runData.time_of_day_smooth = time_of_day_smooth; - sky->update(time_of_day_smooth, time_brightness, direct_brightness, + m_sky->update(time_of_day_smooth, time_brightness, direct_brightness, sunlight_seen, camera->getCameraMode(), player->getYaw(), player->getPitch()); @@ -3744,7 +3745,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, Update clouds */ if (clouds) { - if (sky->getCloudsVisible()) { + if (m_sky->getCloudsVisible()) { clouds->setVisible(true); clouds->step(dtime); // camera->getPosition is not enough for 3rd person views @@ -3754,14 +3755,14 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, camera_node_position.Y = camera_node_position.Y + camera_offset.Y * BS; camera_node_position.Z = camera_node_position.Z + camera_offset.Z * BS; clouds->update(camera_node_position, - sky->getCloudColor()); + m_sky->getCloudColor()); if (clouds->isCameraInsideCloud() && m_cache_enable_fog) { // if inside clouds, and fog enabled, use that as sky // color(s) video::SColor clouds_dark = clouds->getColor() .getInterpolated(video::SColor(255, 0, 0, 0), 0.9); - sky->overrideColors(clouds_dark, clouds->getColor()); - sky->setInClouds(true); + m_sky->overrideColors(clouds_dark, clouds->getColor()); + m_sky->setInClouds(true); runData.fog_range = std::fmin(runData.fog_range * 0.5f, 32.0f * BS); // do not draw clouds after all clouds->setVisible(false); @@ -3782,7 +3783,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, if (m_cache_enable_fog) { driver->setFog( - sky->getBgColor(), + m_sky->getBgColor(), video::EFT_FOG_LINEAR, runData.fog_range * m_cache_fog_start, runData.fog_range * 1.0, @@ -3792,7 +3793,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, ); } else { driver->setFog( - sky->getBgColor(), + m_sky->getBgColor(), video::EFT_FOG_LINEAR, 100000 * BS, 110000 * BS, @@ -3872,7 +3873,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime, /* Drawing begins */ - const video::SColor &skycolor = sky->getSkyColor(); + const video::SColor &skycolor = m_sky->getSkyColor(); TimeTaker tt_draw("Draw scene"); driver->beginScene(true, true, skycolor); |