Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Changed All games: Allow camera players to move almost twice as fast …
…as non-camera players when "running".
  • Loading branch information
danij-deng committed May 21, 2010
1 parent 13e6367 commit 43a4985
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 21 deletions.
3 changes: 1 addition & 2 deletions doomsday/plugins/common/include/g_common.h
Expand Up @@ -72,8 +72,7 @@ void G_SetGameAction(gameaction_t action);

int P_CameraXYMovement(mobj_t* mo);
int P_CameraZMovement(mobj_t* mo);
void P_Thrust3D(struct player_s* player, angle_t angle,
float lookdir, int forwardmove, int sidemove);
void P_Thrust3D(struct player_s* player, angle_t angle, float lookdir, float forwardMove, float sideMove);

DEFCC( CCmdMakeLocal );
DEFCC( CCmdSetCamera );
Expand Down
25 changes: 11 additions & 14 deletions doomsday/plugins/common/src/p_player.c
Expand Up @@ -768,30 +768,27 @@ void P_SetYellowMessage(player_t* pl, char *msg, boolean noHide)
}
#endif

void P_Thrust3D(player_t *player, angle_t angle, float lookdir,
int forwardmovex, int sidemovex)
void P_Thrust3D(player_t* player, angle_t angle, float lookdir,
float forwardMove, float sideMove)
{
angle_t pitch = LOOKDIR2DEG(lookdir) / 360 * ANGLE_MAX;
angle_t sideangle = angle - ANG90;
mobj_t *mo = player->plr->mo;
float zmul;
float mom[3];
float forwardmove = FIX2FLT(forwardmovex);
float sidemove = FIX2FLT(sidemovex);
angle_t pitch = LOOKDIR2DEG(lookdir) / 360 * ANGLE_MAX;
angle_t sideangle = angle - ANG90;
mobj_t* mo = player->plr->mo;
float zmul, mom[3];

angle >>= ANGLETOFINESHIFT;
pitch >>= ANGLETOFINESHIFT;
mom[MX] = forwardmove * FIX2FLT(finecosine[angle]);
mom[MY] = forwardmove * FIX2FLT(finesine[angle]);
mom[MZ] = forwardmove * FIX2FLT(finesine[pitch]);
mom[MX] = forwardMove * FIX2FLT(finecosine[angle]);
mom[MY] = forwardMove * FIX2FLT(finesine[angle]);
mom[MZ] = forwardMove * FIX2FLT(finesine[pitch]);

zmul = FIX2FLT(finecosine[pitch]);
mom[MX] *= zmul;
mom[MY] *= zmul;

sideangle >>= ANGLETOFINESHIFT;
mom[MX] += sidemove * FIX2FLT(finecosine[sideangle]);
mom[MY] += sidemove * FIX2FLT(finesine[sideangle]);
mom[MX] += sideMove * FIX2FLT(finecosine[sideangle]);
mom[MY] += sideMove * FIX2FLT(finesine[sideangle]);

mo->mom[MX] += mom[MX];
mo->mom[MY] += mom[MY];
Expand Down
11 changes: 6 additions & 5 deletions doomsday/plugins/common/src/p_user.c
Expand Up @@ -3,8 +3,8 @@
* License: GPL
* Online License Link: http://www.gnu.org/licenses/gpl.html
*
*\author Copyright © 2000-2009 Jaakko Keränen <jaakko.keranen@iki.fi>
*\author Copyright © 2006-2009 Daniel Swanson <danij@dengine.net>
*\author Copyright © 2000-2010 Jaakko Keränen <jaakko.keranen@iki.fi>
*\author Copyright © 2006-2010 Daniel Swanson <danij@dengine.net>
*\author Copyright © 1999 Activision
*\author Copyright © 1993-1996 by id Software, Inc.
*
Expand Down Expand Up @@ -383,12 +383,13 @@ void P_MovePlayer(player_t *player)
onground = P_IsPlayerOnGround(player);
if(dp->flags & DDPF_CAMERA) // $democam
{
static const fixed_t cameraSpeed[2] = {0x19, 0x31};
static const float cameraSpeed[2] = { FIX2FLT(0x19), FIX2FLT(0x54) };
int moveMul = 2048;

// Cameramen have a 3D thrusters!
P_Thrust3D(player, plrmo->angle, dp->lookDir,
brain->forwardMove * cameraSpeed[speed] * 2048,
brain->sideMove * cameraSpeed[speed] * 2048);
brain->forwardMove * cameraSpeed[speed] * moveMul,
brain->sideMove * cameraSpeed[speed] * moveMul);
}
else
{
Expand Down

0 comments on commit 43a4985

Please sign in to comment.