Skip to content

Commit 1adc514

Browse files
committed
Rename s_pitch, s_yaw and s_roll to s_eyePitch, s_eyeYaw and s_eyeRoll as this is more correct, and for consistency with s_eyePos
Clamp camera pitch to 60 degrees in software renderer
1 parent 6efe5d6 commit 1adc514

File tree

4 files changed

+19
-15
lines changed

4 files changed

+19
-15
lines changed

TheForceEngine/TFE_DarkForces/player.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ namespace TFE_DarkForces
219219
SecObject* s_playerObject = nullptr;
220220
SecObject* s_playerEye = nullptr;
221221
vec3_fixed s_eyePos = { 0 }; // s_camX, s_camY, s_camZ in the DOS code.
222-
angle14_32 s_pitch = 0, s_yaw = 0, s_roll = 0;
222+
angle14_32 s_eyePitch = 0, s_eyeYaw = 0, s_eyeRoll = 0;
223223
u32 s_playerEyeFlags = OBJ_FLAG_NEEDS_TRANSFORM;
224224
Tick s_playerTick;
225225
Tick s_prevPlayerTick;
@@ -907,9 +907,9 @@ namespace TFE_DarkForces
907907
s_eyePos.y = s_playerEye->posWS.y;
908908
s_eyePos.z = s_playerEye->posWS.z;
909909

910-
s_pitch = s_playerEye->pitch;
911-
s_yaw = s_playerEye->yaw;
912-
s_roll = s_playerEye->roll;
910+
s_eyePitch = s_playerEye->pitch;
911+
s_eyeYaw = s_playerEye->yaw;
912+
s_eyeRoll = s_playerEye->roll;
913913

914914
setCameraOffset(0, 0, 0);
915915
setCameraAngleOffset(0, 0, 0);
@@ -1265,13 +1265,13 @@ namespace TFE_DarkForces
12651265
s_eyePos.y = s_playerEye->posWS.y + s_camOffset.y - s_playerEye->worldHeight;
12661266
s_eyePos.z = s_playerEye->posWS.z + s_camOffset.z;
12671267

1268-
s_pitch = s_playerEye->pitch + s_camOffsetPitch;
1269-
s_yaw = s_playerEye->yaw + s_camOffsetYaw;
1270-
s_roll = s_playerEye->roll + s_camOffsetRoll;
1268+
s_eyePitch = s_playerEye->pitch + s_camOffsetPitch;
1269+
s_eyeYaw = s_playerEye->yaw + s_camOffsetYaw;
1270+
s_eyeRoll = s_playerEye->roll + s_camOffsetRoll;
12711271

12721272
if (s_playerEye->sector)
12731273
{
1274-
renderer_computeCameraTransform(s_playerEye->sector, s_pitch, s_yaw, s_eyePos.x, s_eyePos.y, s_eyePos.z);
1274+
renderer_computeCameraTransform(s_playerEye->sector, s_eyePitch, s_eyeYaw, s_eyePos.x, s_eyePos.y, s_eyePos.z);
12751275
}
12761276
renderer_setWorldAmbient(s_playerLight);
12771277
}
@@ -3222,9 +3222,9 @@ namespace TFE_DarkForces
32223222
}
32233223

32243224
SERIALIZE(ObjState_InitVersion, s_eyePos, defV3);
3225-
SERIALIZE(ObjState_InitVersion, s_pitch, 0);
3226-
SERIALIZE(ObjState_InitVersion, s_yaw, 0);
3227-
SERIALIZE(ObjState_InitVersion, s_roll, 0);
3225+
SERIALIZE(ObjState_InitVersion, s_eyePitch, 0);
3226+
SERIALIZE(ObjState_InitVersion, s_eyeYaw, 0);
3227+
SERIALIZE(ObjState_InitVersion, s_eyeRoll, 0);
32283228
SERIALIZE(ObjState_InitVersion, s_playerEyeFlags, 0);
32293229
SERIALIZE(ObjState_InitVersion, s_playerTick, 0);
32303230
SERIALIZE(ObjState_InitVersion, s_prevPlayerTick, 0);

TheForceEngine/TFE_DarkForces/player.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ namespace TFE_DarkForces
105105
extern fixed16_16 s_playerHeight;
106106
extern fixed16_16 s_playerYPos;
107107
extern vec3_fixed s_eyePos; // s_camX, s_camY, s_camZ in the DOS code.
108-
extern angle14_32 s_pitch, s_yaw, s_roll;
108+
extern angle14_32 s_eyePitch, s_eyeYaw, s_eyeRoll;
109109
extern angle14_32 s_playerYaw;
110110
extern Tick s_playerTick;
111111
extern Tick s_reviveTick;

TheForceEngine/TFE_DarkForces/sound.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ namespace TFE_DarkForces
421421

422422
// Calculate the pan.
423423
angle14_32 angle = vec2ToAngle(x - s_eyePos.x, z - s_eyePos.z);
424-
angle = getAngleDifference(s_yaw, angle);
424+
angle = getAngleDifference(s_eyeYaw, angle);
425425
*pan = s_tPan[((angle + 8192) / 512) & 31];
426426

427427
// TFE subtitles/captions

TheForceEngine/TFE_Jedi/Renderer/jediRenderer.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -457,10 +457,14 @@ namespace TFE_Jedi
457457
}
458458
#endif
459459

460+
// Clamp the pitch to 60 degrees (vanilla plus) for software renderer
461+
// Higher values may be passed in if the camera is being moved by a VUE or is attached to a non-player object
462+
angle14_32 clampedPitch = clamp(pitch, -2730, 2730);
463+
460464
// For now compute both fixed-point and floating-point camera transforms so that it is easier to swap between sub-renderers.
461465
// TODO: Find a cleaner alternative.
462-
RClassic_Fixed::computeCameraTransform(sector, pitch, yaw, camX, camY, camZ);
463-
RClassic_Float::computeCameraTransform(sector, f32(pitch), f32(yaw), fixed16ToFloat(camX), fixed16ToFloat(camY), fixed16ToFloat(camZ));
466+
RClassic_Fixed::computeCameraTransform(sector, clampedPitch, yaw, camX, camY, camZ);
467+
RClassic_Float::computeCameraTransform(sector, f32(clampedPitch), f32(yaw), fixed16ToFloat(camX), fixed16ToFloat(camY), fixed16ToFloat(camZ));
464468
RClassic_GPU::computeCameraTransform(sector, f32(pitch), f32(yaw), fixed16ToFloat(camX), fixed16ToFloat(camY), fixed16ToFloat(camZ));
465469
}
466470

0 commit comments

Comments
 (0)