Skip to content
Snippets Groups Projects
Commit cec141ad authored by MirceaKitsune's avatar MirceaKitsune Committed by PilzAdam
Browse files

Allow footstep sounds to play for liquid and ladder nodes, making swimming and...

Allow footstep sounds to play for liquid and ladder nodes, making swimming and climbing sounds possible
parent 6ba50aa8
No related branches found
No related tags found
No related merge requests found
......@@ -307,7 +307,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime,
PlayerEyeOffset += player->eye_offset_first;
else
PlayerEyeOffset += player->eye_offset_third;
// Set head node transformation
m_headnode->setPosition(PlayerEyeOffset+v3f(0,cameratilt*-player->hurt_tilt_strength+fall_bobbing,0));
m_headnode->setRotation(v3f(player->getPitch(), 0, cameratilt*player->hurt_tilt_strength));
......@@ -369,7 +369,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime,
// Seperate camera position for calculation
v3f my_cp = m_camera_position;
// Reposition the camera for third person view
if (m_camera_mode > CAMERA_MODE_FIRST)
{
......@@ -413,7 +413,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime,
(((s16)(my_cp.Y/BS) - m_camera_offset.Y)/CAMERA_OFFSET_STEP);
m_camera_offset.Z += CAMERA_OFFSET_STEP*
(((s16)(my_cp.Z/BS) - m_camera_offset.Z)/CAMERA_OFFSET_STEP);
// Set camera node transformation
m_cameranode->setPosition(my_cp-intToFloat(m_camera_offset, BS));
m_cameranode->setUpVector(abs_cam_up);
......@@ -466,7 +466,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime,
wield_position.X -= 50 * sin(pow(digfrac, 0.8f) * M_PI);
wield_position.Y += 24 * sin(digfrac * 1.8 * M_PI);
wield_position.Z += 25 * 0.5;
// Euler angles are PURE EVIL, so why not use quaternions?
core::quaternion quat_begin(wield_rotation * core::DEGTORAD);
core::quaternion quat_end(v3f(80, 30, 100) * core::DEGTORAD);
......@@ -491,15 +491,19 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime,
// Render distance feedback loop
updateViewingRange(frametime, busytime);
// If the player seems to be walking on solid ground,
// If the player is walking, swimming, or climbing,
// view bobbing is enabled and free_move is off,
// start (or continue) the view bobbing animation.
v3f speed = player->getSpeed();
if ((hypot(speed.X, speed.Z) > BS) &&
(player->touching_ground) &&
(m_cache_view_bobbing == true) &&
(g_settings->getBool("free_move") == false ||
!m_gamedef->checkLocalPrivilege("fly")))
const bool movement_XZ = hypot(speed.X, speed.Z) > BS;
const bool movement_Y = abs(speed.Y) > BS;
const bool walking = movement_XZ && player->touching_ground;
const bool swimming = (movement_XZ || player->swimming_vertical) && player->in_liquid;
const bool climbing = movement_Y && player->is_climbing;
if ((walking || swimming || climbing) &&
m_cache_view_bobbing &&
(!g_settings->getBool("free_move") || !m_gamedef->checkLocalPrivilege("fly")))
{
// Start animation
m_view_bobbing_state = 1;
......@@ -542,7 +546,7 @@ void Camera::updateViewingRange(f32 frametime_in, f32 busytime_in)
f32 viewing_range_max = g_settings->getFloat("viewing_range_nodes_max");
viewing_range_max = MYMAX(viewing_range_min, viewing_range_max);
// Immediately apply hard limits
if(m_draw_control.wanted_range < viewing_range_min)
m_draw_control.wanted_range = viewing_range_min;
......@@ -639,7 +643,7 @@ void Camera::updateViewingRange(f32 frametime_in, f32 busytime_in)
}
new_range += wanted_range_change;
//f32 new_range_unclamped = new_range;
new_range = MYMAX(new_range, viewing_range_min);
new_range = MYMIN(new_range, viewing_range_max);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment