// Rotate camera and add move values to usercmd void IN_Move( float frametime, usercmd_t *cmd ) { Vector viewangles; gEngfuncs.GetViewAngles( viewangles ); bool fLadder = false; if( cl_laddermode->value !=2 ) fLadder = gEngfuncs.GetLocalPlayer()->curstate.movetype == MOVETYPE_FLY; //if(ac_forwardmove || ac_sidemove) //gEngfuncs.Con_Printf("Move: %f %f %f %f\n", ac_forwardmove, ac_sidemove, rel_pitch, rel_yaw); #if 0 if( in_mlook.state & 1 ) { V_StopPitchDrift(); } #endif if( !gHUD.m_iIntermission ) { if( gHUD.GetSensitivity() != 0 ) { rel_yaw *= gHUD.GetSensitivity(); rel_pitch *= gHUD.GetSensitivity(); } else { rel_yaw *= sensitivity->value; rel_pitch *= sensitivity->value; } viewangles[YAW] += rel_yaw; if( fLadder ) { if( ( cl_laddermode->value == 1 ) ) viewangles[YAW] -= ac_sidemove * 5; ac_sidemove = 0; } // if(gHUD.m_MOTD.m_bShow) // gHUD.m_MOTD.scroll += rel_pitch; else viewangles[PITCH] += rel_pitch; if (viewangles[PITCH] > cl_pitchdown->value) viewangles[PITCH] = cl_pitchdown->value; if (viewangles[PITCH] < -cl_pitchup->value) viewangles[PITCH] = -cl_pitchup->value; } float rgfl[3]; viewangles.CopyToArray( rgfl ); gEngfuncs.SetViewAngles( rgfl ); if( ac_movecount ) { IN_ToggleButtons( ac_forwardmove / ac_movecount, ac_sidemove / ac_movecount ); if( ac_forwardmove ) cmd->forwardmove = ac_forwardmove * cl_forwardspeed->value / ac_movecount; if( ac_sidemove ) cmd->sidemove = ac_sidemove * cl_sidespeed->value / ac_movecount; } ac_sidemove = ac_forwardmove = rel_pitch = rel_yaw = 0; ac_movecount = 0; }
// Rotate camera and add move values to usercmd void FWGSInput::IN_Move( float frametime, usercmd_t *cmd ) { Vector viewangles; bool fLadder = false; if( gHUD.m_iIntermission ) return; // we can't move during intermission if( cl_laddermode->value != 2 ) { cl_entity_t *pplayer = gEngfuncs.GetLocalPlayer(); if( pplayer ) fLadder = pplayer->curstate.movetype == MOVETYPE_FLY; } //if(ac_forwardmove || ac_sidemove) //gEngfuncs.Con_Printf("Move: %f %f %f %f\n", ac_forwardmove, ac_sidemove, rel_pitch, rel_yaw); #if 0 if( in_mlook.state & 1 ) { V_StopPitchDrift(); } #endif if( CL_IsDead() ) { viewangles = dead_viewangles; // HACKHACK: see below } else { gEngfuncs.GetViewAngles( viewangles ); } if( gHUD.GetSensitivity() != 0 ) { rel_yaw *= gHUD.GetSensitivity(); rel_pitch *= gHUD.GetSensitivity(); } else { rel_yaw *= sensitivity->value; rel_pitch *= sensitivity->value; } viewangles[YAW] += rel_yaw; if( fLadder ) { if( cl_laddermode->value == 1 ) viewangles[YAW] -= ac_sidemove * 5; ac_sidemove = 0; } if( gHUD.m_MOTD.m_bShow ) gHUD.m_MOTD.scroll += rel_pitch; else viewangles[PITCH] += rel_pitch; if( viewangles[PITCH] > cl_pitchdown->value ) viewangles[PITCH] = cl_pitchdown->value; if( viewangles[PITCH] < -cl_pitchup->value ) viewangles[PITCH] = -cl_pitchup->value; // HACKHACK: change viewangles directly in viewcode, // so viewangles when player is dead will not be changed on server if( !CL_IsDead() ) { gEngfuncs.SetViewAngles( viewangles ); } dead_viewangles = viewangles; // keep them actual if( ac_movecount ) { IN_ToggleButtons( ac_forwardmove / ac_movecount, ac_sidemove / ac_movecount ); if( ac_forwardmove ) cmd->forwardmove = ac_forwardmove * cl_forwardspeed->value / ac_movecount; if( ac_sidemove ) cmd->sidemove = ac_sidemove * cl_sidespeed->value / ac_movecount; if( ( in_speed.state & 1 ) && ( ac_sidemove || ac_forwardmove ) ) { cmd->forwardmove *= cl_movespeedkey->value; cmd->sidemove *= cl_movespeedkey->value; } } ac_sidemove = ac_forwardmove = rel_pitch = rel_yaw = 0; ac_movecount = 0; }