mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-20 18:42:26 +00:00
- first round of vel refactoring.
VEL_FACTOR is used as a marker that later can be quickly removed once the data type gets changed over.
This commit is contained in:
parent
50a9ca49f3
commit
b46b087e0c
5 changed files with 20 additions and 24 deletions
|
@ -1846,7 +1846,7 @@ void movetransports_d(void)
|
|||
|
||||
int k = 0;
|
||||
|
||||
if (onfloorz && sectlotag == ST_1_ABOVE_WATER && ps[p].on_ground && ps[p].pos.Z > (sectp->floorz - 16) && (PlayerInput(p, SB_CROUCH) || ps[p].__vel.Z > 2048))
|
||||
if (onfloorz && sectlotag == ST_1_ABOVE_WATER && ps[p].on_ground && ps[p].pos.Z > (sectp->floorz - 16) && (PlayerInput(p, SB_CROUCH) || ps[p].vel.Z > 8 * VELZ_FACTOR))
|
||||
// if( onfloorz && sectlotag == 1 && ps[p].pos.z > (sectp->floorz-(6<<8)) )
|
||||
{
|
||||
k = 1;
|
||||
|
@ -1859,8 +1859,9 @@ void movetransports_d(void)
|
|||
ps[p].pos.Z = Owner->sector()->ceilingz + 7;
|
||||
ps[p].backupz();
|
||||
|
||||
ps[p].__vel.X = 4096 - (krand() & 8192);
|
||||
ps[p].__vel.Y = 4096 - (krand() & 8192);
|
||||
// this is actually below the precision óf the original Build coordinate system...
|
||||
ps[p].vel.X = ((krand() & 8192) ? 1 / 64. : -1 / 64.) * VEL_FACTOR;
|
||||
ps[p].vel.Y = ((krand() & 8192) ? 1 / 64. : -1 / 64.) * VEL_FACTOR;
|
||||
|
||||
}
|
||||
|
||||
|
@ -3524,9 +3525,8 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
|
|||
|
||||
if (a & face_player_smart)
|
||||
{
|
||||
double newx = ps[playernum].pos.X + (ps[playernum].__vel.X / 768) * inttoworld;
|
||||
double newy = ps[playernum].pos.Y + (ps[playernum].__vel.Y / 768) * inttoworld;
|
||||
goalang = getangle(newx - actor->spr.pos.X, newy - actor->spr.pos.Y);
|
||||
DVector2 newpos = ps[playernum].pos.XY() + (ps[playernum].vel.XY() * (4. / 3.) / VEL_FACTOR);
|
||||
goalang = getangle(newpos - actor->spr.pos.XY());
|
||||
angdif = getincangle(actor->int_ang(), goalang) >> 2;
|
||||
if (angdif > -8 && angdif < 0) angdif = 0;
|
||||
actor->add_int_ang(angdif);
|
||||
|
|
|
@ -3562,9 +3562,8 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
|
|||
|
||||
if (a & face_player_smart)
|
||||
{
|
||||
double newx = ps[pnum].pos.X + (ps[pnum].__vel.X / 768) * inttoworld;
|
||||
double newy = ps[pnum].pos.Y + (ps[pnum].__vel.Y / 768) * inttoworld;
|
||||
goalang = getangle(newx - actor->spr.pos.X, newy - actor->spr.pos.Y);
|
||||
DVector2 newpos = ps[pnum].pos.XY() + (ps[pnum].vel.XY() * (4. / 3.) / VEL_FACTOR);
|
||||
goalang = getangle(newpos - actor->spr.pos.XY());
|
||||
angdif = getincangle(actor->int_ang(), goalang) >> 2;
|
||||
if (angdif > -8 && angdif < 0) angdif = 0;
|
||||
actor->add_int_ang(angdif);
|
||||
|
|
|
@ -403,18 +403,18 @@ void DoPlayer(bool bSet, int lVar1, int lLabelID, int lVar2, DDukeActor* sActor,
|
|||
break;
|
||||
|
||||
case PLAYER_POSXV:
|
||||
if (bSet) ps[iPlayer].__vel.X = lValue;
|
||||
else SetGameVarID(lVar2, ps[iPlayer].__vel.X, sActor, sPlayer);
|
||||
if (bSet) ps[iPlayer].vel.X = FixedToFloat<18>(lValue);
|
||||
else SetGameVarID(lVar2, FloatToFixed<18>(ps[iPlayer].vel.X), sActor, sPlayer);
|
||||
break;
|
||||
|
||||
case PLAYER_POSYV:
|
||||
if (bSet) ps[iPlayer].__vel.Y = lValue;
|
||||
else SetGameVarID(lVar2, ps[iPlayer].__vel.Y, sActor, sPlayer);
|
||||
if (bSet) ps[iPlayer].vel.Y = FixedToFloat<18>(lValue);
|
||||
else SetGameVarID(lVar2, FloatToFixed<18>(ps[iPlayer].vel.Y), sActor, sPlayer);
|
||||
break;
|
||||
|
||||
case PLAYER_POSZV:
|
||||
if (bSet) ps[iPlayer].__vel.Z = lValue;
|
||||
else SetGameVarID(lVar2, ps[iPlayer].__vel.Z, sActor, sPlayer);
|
||||
if (bSet) ps[iPlayer].vel.Z = lValue * zmaptoworld;
|
||||
else SetGameVarID(lVar2, ps[iPlayer].vel.Z / zmaptoworld, sActor, sPlayer);
|
||||
break;
|
||||
|
||||
case PLAYER_LAST_PISSED_TIME:
|
||||
|
@ -2250,7 +2250,7 @@ int ParseState::parse(void)
|
|||
ps[g_p].footprintcount = 0;
|
||||
ps[g_p].weapreccnt = 0;
|
||||
ps[g_p].ftq = 0;
|
||||
ps[g_p].__vel.X = ps[g_p].__vel.Y = 0;
|
||||
ps[g_p].vel.X = ps[g_p].vel.Y = 0;
|
||||
if (!isRR()) ps[g_p].angle.orotscrnang = ps[g_p].angle.rotscrnang = nullAngle;
|
||||
|
||||
ps[g_p].falling_counter = 0;
|
||||
|
@ -2447,8 +2447,7 @@ int ParseState::parse(void)
|
|||
case concmd_slapplayer:
|
||||
insptr++;
|
||||
forceplayerangle(g_p);
|
||||
ps[g_p].__vel.X -= ps[g_p].angle.ang.Cos() * (1 << 21);
|
||||
ps[g_p].__vel.Y -= ps[g_p].angle.ang.Sin() * (1 << 21);
|
||||
ps[g_p].vel.XY() -= ps[g_p].angle.ang.ToVector() * 8 * VEL_FACTOR;
|
||||
return 0;
|
||||
case concmd_wackplayer:
|
||||
insptr++;
|
||||
|
@ -2456,8 +2455,7 @@ int ParseState::parse(void)
|
|||
forceplayerangle(g_p);
|
||||
else
|
||||
{
|
||||
ps[g_p].__vel.X -= ps[g_p].angle.ang.Cos() * (1 << 24);
|
||||
ps[g_p].__vel.Y -= ps[g_p].angle.ang.Sin() * (1 << 24);
|
||||
ps[g_p].vel.XY() -= ps[g_p].angle.ang.ToVector() * 64 * VEL_FACTOR;
|
||||
ps[g_p].jumping_counter = 767;
|
||||
ps[g_p].jumping_toggle = 1;
|
||||
}
|
||||
|
|
|
@ -183,9 +183,7 @@ void resetplayerstats(int snum)
|
|||
p->newOwner =nullptr;
|
||||
p->jumping_counter = 0;
|
||||
p->hard_landing = 0;
|
||||
p->__vel.X = 0; //!!
|
||||
p->__vel.Y = 0;
|
||||
p->__vel.Z = 0;
|
||||
p->vel.Zero();
|
||||
p->fric.X = 0;
|
||||
p->fric.Y = 0;
|
||||
p->somethingonplayer = nullptr;
|
||||
|
|
|
@ -201,7 +201,8 @@ struct CraneDef
|
|||
};
|
||||
|
||||
constexpr double VEL_FACTOR = FloatToFixed<18>(1);
|
||||
struct player_struct
|
||||
constexpr double VELZ_FACTOR = 256;
|
||||
struct player_struct
|
||||
{
|
||||
union
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue