mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Properly keep noclip state in Game and ClientMap
This commit is contained in:
parent
5f3af7d18b
commit
575caa8015
3 changed files with 23 additions and 17 deletions
|
@ -219,13 +219,11 @@ void ClientMap::updateDrawList()
|
|||
// Number of blocks occlusion culled
|
||||
u32 blocks_occlusion_culled = 0;
|
||||
|
||||
// No occlusion culling when free_move is on and camera is
|
||||
// inside ground
|
||||
// No occlusion culling when free_move is on and camera is inside ground
|
||||
bool occlusion_culling_enabled = true;
|
||||
if (g_settings->getBool("free_move") && g_settings->getBool("noclip")) {
|
||||
if (m_control.allow_noclip) {
|
||||
MapNode n = getNode(cam_pos_nodes);
|
||||
if (n.getContent() == CONTENT_IGNORE ||
|
||||
m_nodedef->get(n).solidness == 2)
|
||||
if (n.getContent() == CONTENT_IGNORE || m_nodedef->get(n).solidness == 2)
|
||||
occlusion_culling_enabled = false;
|
||||
}
|
||||
|
||||
|
@ -678,19 +676,17 @@ void ClientMap::renderPostFx(CameraMode cam_mode)
|
|||
|
||||
MapNode n = getNode(floatToInt(m_camera_position, BS));
|
||||
|
||||
// - If the player is in a solid node, make everything black.
|
||||
// - If the player is in liquid, draw a semi-transparent overlay.
|
||||
// - Do not if player is in third person mode
|
||||
const ContentFeatures& features = m_nodedef->get(n);
|
||||
video::SColor post_effect_color = features.post_effect_color;
|
||||
if(features.solidness == 2 && !(g_settings->getBool("noclip") &&
|
||||
m_client->checkLocalPrivilege("noclip")) &&
|
||||
cam_mode == CAMERA_MODE_FIRST)
|
||||
{
|
||||
|
||||
// If the camera is in a solid node, make everything black.
|
||||
// (first person mode only)
|
||||
if (features.solidness == 2 && cam_mode == CAMERA_MODE_FIRST &&
|
||||
!m_control.allow_noclip) {
|
||||
post_effect_color = video::SColor(255, 0, 0, 0);
|
||||
}
|
||||
if (post_effect_color.getAlpha() != 0)
|
||||
{
|
||||
|
||||
if (post_effect_color.getAlpha() != 0) {
|
||||
// Draw a full-screen rectangle
|
||||
video::IVideoDriver* driver = SceneManager->getVideoDriver();
|
||||
v2u32 ss = driver->getScreenSize();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue