- add_int_zvel

This commit is contained in:
Christoph Oelckers 2022-09-01 00:30:16 +02:00
parent 6ddfd8e97a
commit 8bfedc327f
10 changed files with 42 additions and 37 deletions

View file

@ -120,6 +120,11 @@ public:
{
spr. zvel = v;
}
void add_int_zvel(int v)
{
spr.zvel += v;
}
// Same as above but with inverted y and z axes to match the renderer's coordinate system.
double interpolatedx(double const smoothratio, int const scale = 16)

View file

@ -1324,7 +1324,7 @@ void movetongue(DDukeActor *actor, int tongue, int jaw)
auto q = EGS(actor->sector(),
actor->int_pos().X + MulScale(k, bcos(actor->int_ang()), 9),
actor->int_pos().Y + MulScale(k, bsin(actor->int_ang()), 9),
actor->int_pos().Z + ((k * Sgn(actor->int_zvel())) * abs(actor->spr.zvel / 12)), tongue, -40 + (k << 1),
actor->int_pos().Z + ((k * Sgn(actor->int_zvel())) * abs(actor->int_zvel() / 12)), tongue, -40 + (k << 1),
8, 8, 0, 0, 0, actor, 5);
if (q)
{
@ -1336,7 +1336,7 @@ void movetongue(DDukeActor *actor, int tongue, int jaw)
auto spawned = EGS(actor->sector(),
actor->int_pos().X + MulScale(k, bcos(actor->int_ang()), 9),
actor->int_pos().Y + MulScale(k, bsin(actor->int_ang()), 9),
actor->int_pos().Z + ((k * Sgn(actor->int_zvel())) * abs(actor->spr.zvel / 12)), jaw, -40,
actor->int_pos().Z + ((k * Sgn(actor->int_zvel())) * abs(actor->int_zvel() / 12)), jaw, -40,
32, 32, 0, 0, 0, actor, 5);
if (spawned)
{
@ -1568,7 +1568,7 @@ void forcesphere(DDukeActor* actor, int forcesphere)
if (actor->temp_data[3] > 0)
{
if (actor->int_zvel() < 6144)
actor->spr.zvel += 192;
actor->add_int_zvel( 192);
actor->spr.pos.Z += actor->spr.zvel * inttoworld;
if (actor->spr.pos.Z > sectp->floorz)
actor->spr.pos.Z = sectp->floorz;
@ -2102,11 +2102,11 @@ bool money(DDukeActor* actor, int BLOODPOOL)
if (sectp->lotag == 2)
{
if (actor->int_zvel() < 64)
actor->spr.zvel += (gs.gravity >> 5) + (krand() & 7);
actor->add_int_zvel( (gs.gravity >> 5) + (krand() & 7));
}
else
if (actor->int_zvel() < 144)
actor->spr.zvel += (gs.gravity >> 5) + (krand() & 7);
actor->add_int_zvel( (gs.gravity >> 5) + (krand() & 7));
}
ssp(actor, CLIPMASK0);
@ -2213,10 +2213,10 @@ bool jibs(DDukeActor *actor, int JIBS6, bool timeout, bool callsetsprite, bool f
if (sectp->lotag == 2)
{
if (actor->int_zvel() < 1024)
actor->spr.zvel += 48;
actor->add_int_zvel( 48);
else actor->set_int_zvel(1024);
}
else actor->spr.zvel += gs.gravity - 50;
else actor->add_int_zvel( gs.gravity - 50);
}
actor->add_int_pos({ MulScale(actor->spr.xvel, bcos(actor->int_ang()), 14), MulScale(actor->spr.xvel, bsin(actor->int_ang()), 14), 0 });
@ -2381,7 +2381,7 @@ void shell(DDukeActor* actor, bool morecheck)
actor->temp_data[0]++;
actor->temp_data[0] &= 3;
}
if (actor->int_zvel() < 128) actor->spr.zvel += (gs.gravity / 13); // 8
if (actor->int_zvel() < 128) actor->add_int_zvel( (gs.gravity / 13)); // 8
else actor->spr.zvel -= 64;
if (actor->spr.xvel > 0)
actor->spr.xvel -= 4;
@ -2396,7 +2396,7 @@ void shell(DDukeActor* actor, bool morecheck)
actor->temp_data[0]++;
actor->temp_data[0] &= 3;
}
if (actor->int_zvel() < 512) actor->spr.zvel += (gs.gravity / 3); // 52;
if (actor->int_zvel() < 512) actor->add_int_zvel( (gs.gravity / 3)); // 52;
if (actor->spr.xvel > 0)
actor->spr.xvel--;
else
@ -2493,7 +2493,7 @@ void scrap(DDukeActor* actor, int SCRAP1, int SCRAP6)
else actor->temp_data[0]++;
}
}
if (actor->int_zvel() < 4096) actor->spr.zvel += gs.gravity - 50;
if (actor->int_zvel() < 4096) actor->add_int_zvel( gs.gravity - 50);
actor->add_int_pos({ MulScale(actor->spr.xvel, bcos(actor->int_ang()), 14), MulScale(actor->spr.xvel, bsin(actor->int_ang()), 14), actor->spr.zvel });
}
else
@ -3352,7 +3352,7 @@ void handle_se05(DDukeActor* actor, int FIRELASER)
actor->temp_data[3]++;
if (actor->temp_data[3] == 5)
{
actor->spr.zvel += 1024;
actor->add_int_zvel( 1024);
FTA(7, &ps[myconnectindex]);
}
}
@ -4235,7 +4235,7 @@ void handle_se22(DDukeActor* actor)
void handle_se26(DDukeActor* actor)
{
auto sc = actor->sector();
double zvel = actor->spr.zvel * zinttoworld;
double zvel = actor->int_zvel() * zinttoworld;
actor->spr.xvel = 32;
DVector2 vect = 2 * actor->spr.angle.ToVector(); // was: (32 * bsin) >> 14
@ -4850,7 +4850,7 @@ void makeitfall(DDukeActor* actor)
if( actor->sector()->lotag == 2 && actor->int_zvel() > 3122 )
actor->set_int_zvel(3144);
if(actor->int_zvel() < 6144)
actor->spr.zvel += c;
actor->add_int_zvel( c);
else actor->set_int_zvel(6144);
actor->add_int_z(actor->int_zvel());
}
@ -4985,7 +4985,7 @@ void alterang(int ang, DDukeActor* actor, int playernum)
aang = actor->int_ang();
actor->spr.xvel += (*moveptr - actor->spr.xvel) / 5;
if (actor->int_zvel() < 648) actor->spr.zvel += ((*(moveptr + 1) << 4) - actor->int_zvel()) / 5;
if (actor->int_zvel() < 648) actor->add_int_zvel( ((*(moveptr + 1) << 4) - actor->int_zvel()) / 5);
if (isRRRA() && (ang & windang))
actor->set_int_ang(WindDir);
@ -5079,7 +5079,7 @@ void fall_common(DDukeActor *actor, int playernum, int JIBS6, int DRONE, int BLO
if (actor->spr.pos.Z < actor->floorz - FOURSLEIGHT_F)
{
actor->spr.zvel += c;
actor->add_int_zvel( c);
actor->add_int_z(actor->int_zvel());
if (actor->int_zvel() > 6144) actor->set_int_zvel(6144);

View file

@ -772,7 +772,7 @@ void movefallers_d(void)
if (act->spr.pos.Z < sectp->floorz - 1)
{
act->spr.zvel += x;
act->add_int_zvel( x);
if (act->int_zvel() > 6144)
act->set_int_zvel(6144);
act->add_int_z(act->int_zvel());
@ -1340,7 +1340,7 @@ static bool movefireball(DDukeActor* actor)
actor->temp_data[0]++;
}
if (actor->int_zvel() < 15000)
actor->spr.zvel += 200;
actor->add_int_zvel( 200);
return false;
}
@ -1576,7 +1576,7 @@ static void weaponcommon_d(DDukeActor* proj)
vec3_t offset = {
MulScale(k, bcos(proj->int_ang()), 9),
MulScale(k, bsin(proj->int_ang()), 9),
(k * Sgn(proj->int_zvel())) * abs(proj->spr.zvel / 24)
(k * Sgn(proj->int_zvel())) * abs(proj->int_zvel() / 24)
};
auto spawned = EGS(proj->sector(),
@ -1594,7 +1594,7 @@ static void weaponcommon_d(DDukeActor* proj)
}
}
else if (proj->spr.picnum == SPIT) if (proj->int_zvel() < 6144)
proj->spr.zvel += gs.gravity - 112;
proj->add_int_zvel( gs.gravity - 112);
if (coll.type != 0)
{
@ -3552,7 +3552,7 @@ void move_d(DDukeActor *actor, int playernum, int xvel)
auto moveptr = &ScriptCode[actor->temp_data[1]];
if (a & geth) actor->spr.xvel += (*moveptr - actor->spr.xvel) >> 1;
if (a & getv) actor->spr.zvel += ((*(moveptr + 1) << 4) - actor->int_zvel()) >> 1;
if (a & getv) actor->add_int_zvel( ((*(moveptr + 1) << 4) - actor->int_zvel()) >> 1);
if (a & dodgebullet)
dodge(actor);

View file

@ -690,7 +690,7 @@ void movefallers_r(void)
if (act->spr.pos.Z < sectp->floorz - 1)
{
act->spr.zvel += x;
act->add_int_zvel( x);
if (act->int_zvel() > 6144)
act->set_int_zvel(6144);
act->add_int_z(act->int_zvel());
@ -956,7 +956,7 @@ static void chickenarrow(DDukeActor* actor)
if (actor->spr.hitag > 180)
if (actor->spr.zvel <= 0)
actor->spr.zvel += 200;
actor->add_int_zvel( 200);
}
}
@ -1264,7 +1264,7 @@ static void weaponcommon_r(DDukeActor *proj)
auto x = EGS(proj->sector(),
proj->int_pos().X + MulScale(k, bcos(proj->int_ang()), 9),
proj->int_pos().Y + MulScale(k, bsin(proj->int_ang()), 9),
proj->int_pos().Z + ((k * Sgn(proj->int_zvel())) * abs(proj->spr.zvel / 24)), FIRELASER, -40 + (k << 2),
proj->int_pos().Z + ((k * Sgn(proj->int_zvel())) * abs(proj->int_zvel() / 24)), FIRELASER, -40 + (k << 2),
proj->spr.xrepeat, proj->spr.yrepeat, 0, 0, 0, proj->GetOwner(), 5);
if (x)
@ -1275,7 +1275,7 @@ static void weaponcommon_r(DDukeActor *proj)
}
}
else if (proj->spr.picnum == SPIT) if (proj->int_zvel() < 6144)
proj->spr.zvel += gs.gravity - 112;
proj->add_int_zvel( gs.gravity - 112);
if (coll.type != 0)
{
@ -3621,7 +3621,7 @@ void move_r(DDukeActor *actor, int pnum, int xvel)
auto moveptr = &ScriptCode[actor->temp_data[1]];
if (a & geth) actor->spr.xvel += (*moveptr - actor->spr.xvel) >> 1;
if (a & getv) actor->spr.zvel += ((*(moveptr + 1) << 4) - actor->int_zvel()) >> 1;
if (a & getv) actor->add_int_zvel( ((*(moveptr + 1) << 4) - actor->int_zvel()) >> 1);
if (a & dodgebullet)
dodge(actor);

View file

@ -805,7 +805,7 @@ static void shootrpg(DDukeActor *actor, int p, int sx, int sy, int sz, int sa, i
{
spawned->spr.extra >>= 2;
spawned->add_int_ang(16 - (krand() & 31));
spawned->spr.zvel += 256 - (krand() & 511);
spawned->add_int_zvel( 256 - (krand() & 511));
if (ps[p].hbomb_hold_delay)
{

View file

@ -716,7 +716,7 @@ static void shootrpg(DDukeActor* actor, int p, int sx, int sy, int sz, int sa, i
{
spawned->spr.extra >>= 2;
spawned->add_int_ang(16 - (krand() & 31));
spawned->spr.zvel += 256 - (krand() & 511);
spawned->add_int_zvel( 256 - (krand() & 511));
if (ps[p].hbomb_hold_delay)
{

View file

@ -575,7 +575,7 @@ void Gravity(DExhumedActor* pActor)
if (pActor->spr.zvel <= 1024)
{
if (pActor->int_zvel() < 2048) {
pActor->spr.zvel += 512;
pActor->add_int_zvel( 512);
}
}
else
@ -594,7 +594,7 @@ void Gravity(DExhumedActor* pActor)
}
else if (pActor->int_zvel() < 0)
{
pActor->spr.zvel += 64;
pActor->add_int_zvel( 64);
if (pActor->int_zvel() > 0) {
pActor->set_int_zvel(0);
}
@ -603,7 +603,7 @@ void Gravity(DExhumedActor* pActor)
}
else
{
pActor->spr.zvel += 512;
pActor->add_int_zvel( 512);
if (pActor->int_zvel() > 16384) {
pActor->set_int_zvel(16384);
}

View file

@ -1434,7 +1434,7 @@ void AISpark::Tick(RunListEvent* ev)
return;
}
pActor->spr.zvel += 128;
pActor->add_int_zvel( 128);
auto nMov = movesprite(pActor, pActor->spr.xvel << 12, pActor->spr.yvel << 12, pActor->int_zvel(), 2560, -2560, CLIPMASK1);
if (!nMov.type && !nMov.exbits) {

View file

@ -264,7 +264,7 @@ int DoWallBloodDrip(DSWActor* actor)
// if you are between the ceiling and floor fall fast
if (actor->spr.pos.Z > actor->user.pos.Y && actor->spr.pos.Z < actor->user.pos.Z)
{
actor->spr.zvel += 300;
actor->add_int_zvel( 300);
actor->add_int_z(actor->int_zvel());
}
else

View file

@ -9135,7 +9135,7 @@ int DoRail(DSWActor* actor)
actorNew->spr.xvel += (RandomRange(140)-RandomRange(140));
actorNew->spr.yvel += (RandomRange(140)-RandomRange(140));
actorNew->spr.zvel += (RandomRange(140)-RandomRange(140));
actorNew->add_int_zvel( (RandomRange(140)-RandomRange(140)));
actorNew->user.RotNum = 5;
NewStateGroup(actorNew, sg_RailPuff);
@ -9292,7 +9292,7 @@ int SpawnExtraMicroMini(DSWActor* actor)
actorNew->set_int_ang(NORM_ANGLE(actorNew->int_ang() + RandomRange(64) - 32));
actorNew->set_int_zvel(actor->int_zvel());
actorNew->spr.zvel += RandomRange(Z(16)) - Z(8);
actorNew->add_int_zvel( RandomRange(Z(16)) - Z(8));
UpdateChange(actorNew);
return 0;
@ -13428,7 +13428,7 @@ int InitMicro(PLAYER* pp)
actorNew->spr.clipdist = 64L>>2;
// randomize zvelocity
actorNew->spr.zvel += RandomRange(Z(8)) - Z(5);
actorNew->add_int_zvel( RandomRange(Z(8)) - Z(5));
actorNew->user.RotNum = 5;
NewStateGroup(actorNew, &sg_Micro[0]);
@ -14991,7 +14991,7 @@ int InitTurretMicro(DSWActor* actor, PLAYER* pp)
actorNew->spr.clipdist = 64L>>2;
// randomize zvelocity
actorNew->spr.zvel += RandomRange(Z(8)) - Z(5);
actorNew->add_int_zvel( RandomRange(Z(8)) - Z(5));
actorNew->user.RotNum = 5;
NewStateGroup(actorNew, &sg_Micro[0]);
@ -16720,7 +16720,7 @@ int SpawnSmokePuff(DSWActor* actor)
int DoBubble(DSWActor* actor)
{
actor->add_int_z(-actor->int_zvel());
actor->spr.zvel += 32;
actor->add_int_zvel( 32);
if (actor->int_zvel() > 768)
actor->set_int_zvel(768);