]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/localplayer.cpp
Biome API: Re-calculate biome at every surface in a mapchunk column
[dragonfireclient.git] / src / localplayer.cpp
index b36bef4d9ab78c8fafc1209c1535c4eb073d0bc5..69d4ec7efa104197a20b5fb04d306e1290203d72 100644 (file)
@@ -74,8 +74,6 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
 
        v3f position = getPosition();
 
-       v3f old_speed = m_speed;
-
        // Copy parent position if local player is attached
        if(isAttached)
        {
@@ -100,7 +98,7 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
        /*
                Collision detection
        */
-       
+
        bool is_valid_position;
        MapNode node;
        v3s16 pp;
@@ -191,7 +189,7 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
                v3f lwn_f = intToFloat(m_sneak_node, BS);
                position.X = rangelim(position.X, lwn_f.X-maxd, lwn_f.X+maxd);
                position.Z = rangelim(position.Z, lwn_f.Z-maxd, lwn_f.Z+maxd);
-               
+
                if(!is_climbing)
                {
                        f32 min_y = lwn_f.Y + 0.5*BS;
@@ -205,8 +203,13 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
                }
        }
 
+       // this shouldn't be hardcoded but transmitted from server
        float player_stepheight = touching_ground ? (BS*0.6) : (BS*0.2);
 
+#ifdef __ANDROID__
+       player_stepheight += (0.5 * BS);
+#endif
+
        v3f accel_f = v3f(0,0,0);
 
        collisionMoveResult result = collisionMoveSimple(env, m_gamedef,
@@ -221,7 +224,7 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
        */
        bool touching_ground_was = touching_ground;
        touching_ground = result.touching_ground;
-    
+
     //bool standing_on_unloaded = result.standing_on_unloaded;
 
        /*
@@ -272,7 +275,7 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
                        f32 max_axis_distance_f = MYMAX(
                                        fabs(player_p2df.X-node_p2df.X),
                                        fabs(player_p2df.Y-node_p2df.Y));
-                                       
+
                        if(distance_f > min_distance_f ||
                                        max_axis_distance_f > 0.5*BS + sneak_max + 0.1*BS)
                                continue;
@@ -296,7 +299,7 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
                        min_distance_f = distance_f;
                        new_sneak_node = p;
                }
-               
+
                bool sneak_node_found = (min_distance_f < 100000.0*BS*0.9);
 
                m_sneak_node = new_sneak_node;
@@ -309,12 +312,12 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
                if(sneak_node_found && control.sneak)
                        touching_ground = true;
        }
-       
+
        /*
                Set new position
        */
        setPosition(position);
-       
+
        /*
                Report collisions
        */
@@ -362,7 +365,7 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d,
        */
        m_old_node_below = floatToInt(position - v3f(0,BS/2,0), BS);
        m_old_node_below_type = nodemgr->get(map->getNodeNoEx(m_old_node_below)).name;
-       
+
        /*
                Check properties of the node on which the player is standing
        */
@@ -395,10 +398,10 @@ void LocalPlayer::applyControl(float dtime)
 
        v3f move_direction = v3f(0,0,1);
        move_direction.rotateXZBy(getYaw());
-       
+
        v3f speedH = v3f(0,0,0); // Horizontal (X, Z)
        v3f speedV = v3f(0,0,0); // Vertical (Y)
-       
+
        bool fly_allowed = m_gamedef->checkLocalPrivilege("fly");
        bool fast_allowed = m_gamedef->checkLocalPrivilege("fast");
 
@@ -410,7 +413,7 @@ void LocalPlayer::applyControl(float dtime)
 
        // Whether superspeed mode is used or not
        bool superspeed = false;
-       
+
        if(g_settings->getBool("always_fly_fast") && free_move && fast_move)
                superspeed = true;
 
@@ -420,7 +423,7 @@ void LocalPlayer::applyControl(float dtime)
                // If free movement and fast movement, always move fast
                if(free_move && fast_move)
                        superspeed = true;
-               
+
                // Auxiliary button 1 (E)
                if(control.aux1)
                {
@@ -543,7 +546,7 @@ void LocalPlayer::applyControl(float dtime)
                        {
                                speedJ.Y = movement_speed_jump * physics_override_jump;
                                setSpeed(speedJ);
-                               
+
                                MtEvent *e = new SimpleTriggerEvent("PlayerJump");
                                m_gamedef->event()->put(e);
                        }