From 2895e8ac05108a181aaf17e9b20d7501257969ed Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 29 Aug 2022 22:26:20 +0200 Subject: [PATCH] - partial floatification of handle_se26 --- source/games/duke/src/actors.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/source/games/duke/src/actors.cpp b/source/games/duke/src/actors.cpp index d95965cc4..788e08ca1 100644 --- a/source/games/duke/src/actors.cpp +++ b/source/games/duke/src/actors.cpp @@ -4241,28 +4241,27 @@ void handle_se22(DDukeActor* actor) void handle_se26(DDukeActor* actor) { auto sc = actor->sector(); - int x, l; + double zvel = actor->spr.zvel * zinttoworld; actor->spr.xvel = 32; - l = MulScale(actor->spr.xvel, bcos(actor->int_ang()), 14); - x = MulScale(actor->spr.xvel, bsin(actor->int_ang()), 14); + DVector2 vect = { 2 * actor->spr.angle.Cos(), 2 * actor->spr.angle.Sin() }; // was: (32 * bsin) >> 14 actor->spr.shade++; if (actor->spr.shade > 7) { actor->set_int_xy( actor->temp_data[3], actor->temp_data[4]); - sc->add_int_floorz(-((actor->spr.zvel * actor->spr.shade) - actor->spr.zvel)); + sc->addfloorz(-((zvel * actor->spr.shade) - zvel)); actor->spr.shade = 0; } else - sc->add_int_floorz(actor->spr.zvel); + sc->addfloorz(zvel); DukeSectIterator it(actor->sector()); while (auto a2 = it.Next()) { if (a2->spr.statnum != 3 && a2->spr.statnum != 10) { - a2->add_int_pos({ l, x, actor->spr.zvel }); + a2->spr.pos = DVector3(vect, zvel); SetActor(a2, a2->spr.pos); } } @@ -4270,9 +4269,9 @@ void handle_se26(DDukeActor* actor) for (int p = connecthead; p >= 0; p = connectpoint2[p]) if (ps[p].GetActor()->sector() == actor->sector() && ps[p].on_ground) { - ps[p].fric.X += l << 5; - ps[p].fric.Y += x << 5; - ps[p].pos.Z += actor->spr.zvel * zmaptoworld; + ps[p].fric.X += int(vect.X * 512); + ps[p].fric.Y += int(vect.Y * 512); + ps[p].pos.Z += zvel; } ms(actor);