Skip to content

Commit 4fe3227

Browse files
committed
swars: When loading a level, restore tank turret angle
The turret angle should be set from transformation matrix, like for all vehicles. This updates the old code which probably was supposed to do that, but had some copy-paste errors.
1 parent a24797c commit 4fe3227

1 file changed

Lines changed: 18 additions & 7 deletions

File tree

src/lvfiles.c

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -258,15 +258,26 @@ ulong load_level_pc_handle(TbFileHandle lev_fh)
258258
p_thing->U.UVehicle.Object = next_object - 1;
259259
game_objects[next_object - 1].ThingNo = k;
260260
VNAV_unkn_func_207(p_thing);
261-
k = p_thing->U.UVehicle.MatrixIndex;
262-
angle = LbArcTanAngle(local_mats[k].R[0][2], local_mats[k].R[2][2]);
263-
p_thing->U.UVehicle.AngleY = (angle + LbFPMath_PI) & LbFPMath_AngleMask;
261+
{
262+
k = p_thing->U.UVehicle.MatrixIndex;
263+
angle = LbArcTanAngle(local_mats[k].R[0][2], local_mats[k].R[2][2]);
264+
p_thing->U.UVehicle.AngleY = (angle + LbFPMath_PI) & LbFPMath_AngleMask;
265+
}
264266

265267
veh_add(p_thing, p_thing->StartFrame);
266-
k = p_thing->U.UVehicle.MatrixIndex;
267-
angle = LbArcTanAngle(local_mats[k].R[0][2], local_mats[k].R[2][2]);
268-
p_thing->U.UVehicle.AngleY = (angle + LbFPMath_PI) & LbFPMath_AngleMask;
269-
if (p_thing->SubType == SubTT_VEH_MECH)
268+
269+
if (p_thing->SubType == SubTT_VEH_TANK)
270+
{
271+
if (p_thing->U.UVehicle.SubThing != 0)
272+
{
273+
struct Thing *p_mgun;
274+
p_mgun = &things[p_thing->U.UVehicle.SubThing];
275+
k = p_mgun->U.UVehicle.MatrixIndex;
276+
angle = LbArcTanAngle(local_mats[k].R[0][2], local_mats[k].R[2][2]);
277+
p_mgun->U.UVehicle.AngleY = (angle + LbFPMath_PI) & LbFPMath_AngleMask;
278+
}
279+
}
280+
else if (p_thing->SubType == SubTT_VEH_MECH)
270281
{
271282
if (!mech_initialized)
272283
{

0 commit comments

Comments
 (0)