]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
simplifying Warsow-style physics code even more, as it now can use a common code...
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 8 May 2009 09:58:13 +0000 (09:58 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 8 May 2009 09:58:13 +0000 (09:58 +0000)
This could be done after the observation that CPMA-style acceleration never kicks in in Warsow mode.

The sv_aircontrol is now expected to be zero in Warsow-style mode, as it does nothing in that mode anyway! If you do set it, you get Warsow and CPMA air control added!

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8952 d7cf8633-e32d-0410-b094-e92efae38249

cl_input.c

index 2e87ef2c2bab853444448ec9f98dd3043225566a..19938660390b3f9c0033035c79b610656158a9d0 100644 (file)
@@ -1152,68 +1152,37 @@ void CL_ClientMovement_Physics_Walk(cl_clientmovement_state_t *s)
                {
                        // apply air speed limit
                        vec_t accel, wishspeed2;
+                       qboolean accelerating;
+
                        wishspeed = min(wishspeed, cl.movevars_maxairspeed);
                        if (s->crouched)
                                wishspeed *= 0.5;
                        accel = cl.movevars_airaccelerate;
+
+                       accelerating = (DotProduct(s->velocity, wishdir) > 0);
                        wishspeed2 = wishspeed;
 
-                       if(cl.movevars_warsowbunny_turnaccel)
+                       // CPM: air control
+                       if(cl.movevars_airstopaccelerate != 0)
+                               if(DotProduct(s->velocity, wishdir) < 0)
+                                       accel = cl.movevars_airstopaccelerate;
+                       if(s->cmd.forwardmove == 0 && s->cmd.sidemove != 0)
                        {
-                               qboolean accelerating, decelerating;
-                               //qboolean aircontrol;
-                               accelerating = (DotProduct(s->velocity, wishdir) > 0);
-                               decelerating = (DotProduct(s->velocity, wishdir) < 0);
-                               //aircontrol = false;
-
-                               if(accelerating && s->cmd.sidemove == 0 && s->cmd.forwardmove != 0)
-                               {
-                                       CL_ClientMovement_Physics_PM_AirAccelerate(s, wishdir, wishspeed2);
-                               }
-                               else
-                               {
-                                       // CPM: air control
-                                       if(cl.movevars_airstopaccelerate != 0)
-                                               if(DotProduct(s->velocity, wishdir) < 0)
-                                                       accel = cl.movevars_airstopaccelerate;
-                                       if(s->cmd.forwardmove == 0 && s->cmd.sidemove != 0)
-                                       {
-                                               if(cl.movevars_maxairstrafespeed)
-                                                       if(wishspeed > cl.movevars_maxairstrafespeed)
-                                                               wishspeed = cl.movevars_maxairstrafespeed;
-                                               if(cl.movevars_airstrafeaccelerate)
-                                                       accel = cl.movevars_airstrafeaccelerate;
-                                               //if(cl.movevars_aircontrol)
-                                                       //aircontrol = true;
-                                       }
-                                       // !CPM
-                                       
-                                       CL_ClientMovement_Physics_PM_Accelerate(s, wishdir, wishspeed, accel, cl.movevars_airaccel_qw, cl.movevars_airaccel_sideways_friction / cl.movevars_maxairspeed);
-                                       //if(aircontrol)
-                                               //CL_ClientMovement_Physics_CPM_PM_Aircontrol(s, wishdir, wishspeed2);
-                                               // div0: this never kicks in, as aircontrol is only set to TRUE if self.movement_x == 0 && self.movement_y != 0, but then the function does nothing
-                               }
+                               if(cl.movevars_maxairstrafespeed)
+                                       if(wishspeed > cl.movevars_maxairstrafespeed)
+                                               wishspeed = cl.movevars_maxairstrafespeed;
+                               if(cl.movevars_airstrafeaccelerate)
+                                       accel = cl.movevars_airstrafeaccelerate;
                        }
-                       else
-                       {
-                               // CPM: air control
-                               if(cl.movevars_airstopaccelerate != 0)
-                                       if(DotProduct(s->velocity, wishdir) < 0)
-                                               accel = cl.movevars_airstopaccelerate;
-                               if(s->cmd.forwardmove == 0 && s->cmd.sidemove != 0)
-                               {
-                                       if(cl.movevars_maxairstrafespeed)
-                                               if(wishspeed > cl.movevars_maxairstrafespeed)
-                                                       wishspeed = cl.movevars_maxairstrafespeed;
-                                       if(cl.movevars_airstrafeaccelerate)
-                                               accel = cl.movevars_airstrafeaccelerate;
-                               }
-                               // !CPM
+                       // !CPM
 
+                       if(cl.movevars_warsowbunny_turnaccel && accelerating && s->cmd.sidemove == 0 && s->cmd.forwardmove != 0)
+                               CL_ClientMovement_Physics_PM_AirAccelerate(s, wishdir, wishspeed2);
+                       else
                                CL_ClientMovement_Physics_PM_Accelerate(s, wishdir, wishspeed, accel, cl.movevars_airaccel_qw, cl.movevars_airaccel_sideways_friction / cl.movevars_maxairspeed);
-                               if(cl.movevars_aircontrol)
-                                       CL_ClientMovement_Physics_CPM_PM_Aircontrol(s, wishdir, wishspeed2);
-                       }
+
+                       if(cl.movevars_aircontrol)
+                               CL_ClientMovement_Physics_CPM_PM_Aircontrol(s, wishdir, wishspeed2);
                }
                s->velocity[2] -= cl.movevars_gravity * cl.movevars_entgravity * s->cmd.frametime;
                CL_ClientMovement_Move(s);