cv_freecam_speed: Additional behaviour

- == 0 no-sells all movement
- less than 0 divides speed by that amount, instead of multiplying
This commit is contained in:
toaster 2024-03-23 20:53:14 +00:00
parent 5eb5c087d0
commit 91a7adb621
2 changed files with 14 additions and 5 deletions

View file

@ -1174,7 +1174,7 @@ consvar_t cv_fov[MAXSPLITSCREENPLAYERS] = {
Player("fov4", "90").floating_point().min_max(60*FRACUNIT, 179*FRACUNIT).onchange(Fov_OnChange).dont_save(),
};
consvar_t cv_freecam_speed = Player("freecam_speed", "1").min_max(1, 10).dont_save();
consvar_t cv_freecam_speed = Player("freecam_speed", "1").min_max(-64, 10).dont_save();
void I_JoyScale(void);
void I_JoyScale2(void);

View file

@ -2948,10 +2948,15 @@ void P_DemoCameraMovement(camera_t *cam, UINT8 num)
cam->angle += turning;
// camera movement:
if (!cam->button_a_held)
if (!cam->button_a_held && cv_freecam_speed.value)
{
int dir = ((cmd->buttons & BT_ACCELERATE) ? 1 : 0) + ((cmd->buttons & BT_BRAKE) ? -1 : 0);
fixed_t spd = 32*mapobjectscale*cv_freecam_speed.value;
fixed_t spd = 32*mapobjectscale;
if (cv_freecam_speed.value > 1)
spd *= cv_freecam_speed.value;
else if (cv_freecam_speed.value < -1)
spd /= -cv_freecam_speed.value;
switch (dir)
{
@ -3029,9 +3034,13 @@ void P_DemoCameraMovement(camera_t *cam, UINT8 num)
cam->momx = cam->momy = cam->momz = 0;
if (cmd->forwardmove != 0)
if (cmd->forwardmove != 0 && cv_freecam_speed.value)
{
fixed_t spd = cmd->forwardmove*mapobjectscale*cv_freecam_speed.value;
fixed_t spd = cmd->forwardmove*mapobjectscale;
if (cv_freecam_speed.value > 1)
spd *= cv_freecam_speed.value;
else if (cv_freecam_speed.value < -1)
spd /= -cv_freecam_speed.value;
thrustangle = cam->angle >> ANGLETOFINESHIFT;