restore CF_FOLLOW_CENTER camera flag functionality (#640)

* restore CF_FOLLOW_CENTER camera flag functionality
* remove useless comments, use IsLara;
* Fix formatting

Co-authored-by: Lwmte <3331699+Lwmte@users.noreply.github.com>
This commit is contained in:
Troye 2022-08-07 05:39:13 -05:00 committed by GitHub
parent 37c4b4e4c2
commit 58be730a31
7 changed files with 27 additions and 22 deletions

1
.gitignore vendored
View file

@ -24,3 +24,4 @@ packages/
*.wav
*.trc
*.str
*.ten

View file

@ -14,6 +14,7 @@ Global
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x64.ActiveCfg = Debug|Win32
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x64.Build.0 = Debug|Win32
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x86.ActiveCfg = Debug|Win32
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x86.Build.0 = Debug|Win32
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x64.ActiveCfg = Release|Win32

View file

@ -171,7 +171,6 @@ void lara_as_pushable_push(ItemInfo* item, CollisionInfo* coll)
Camera.targetAngle = ANGLE(35.0f);
Camera.targetElevation = -ANGLE(25.0f);
Camera.flags = CF_FOLLOW_CENTER;
Camera.laraNode = LM_TORSO;
}
// State: LS_PUSHABLE_PULL (37)
@ -186,7 +185,6 @@ void lara_as_pushable_pull(ItemInfo* item, CollisionInfo* coll)
Camera.targetAngle = ANGLE(35.0f);
Camera.targetElevation = -ANGLE(25.0f);
Camera.flags = CF_FOLLOW_CENTER;
Camera.laraNode = LM_TORSO;
}
// State: LS_PUSHABLE_GRAB (38)

View file

@ -445,7 +445,7 @@ void lara_as_slopeclimb(ItemInfo* item, CollisionInfo* coll)
else
item->Pose.Orientation.x++;
Camera.flags = 1;
Camera.flags = CF_FOLLOW_CENTER;
if (Camera.type != CameraType::Chase)
return;
@ -464,7 +464,7 @@ void lara_as_slopefall(ItemInfo* item, CollisionInfo* coll)
else
item->Pose.Orientation.x++;
Camera.flags = 1;
Camera.flags = CF_FOLLOW_CENTER;
if (Camera.type != CameraType::Chase)
return;
@ -629,7 +629,7 @@ void lara_as_slopeclimbup(ItemInfo* item, CollisionInfo* coll)
else
item->Pose.Orientation.x++;
Camera.flags = 1;
Camera.flags = CF_FOLLOW_CENTER;
if (Camera.type != CameraType::Chase)
return; // If camera mode isn't chase (0) then don't change camera angles.
@ -660,7 +660,7 @@ void lara_as_slopeclimbdown(ItemInfo* item, CollisionInfo* coll)
else
item->Pose.Orientation.x++;
Camera.flags = 1;
Camera.flags = CF_FOLLOW_CENTER;
if (Camera.type != CameraType::Chase)
return;
@ -695,7 +695,7 @@ void lara_as_sclimbstart(ItemInfo* item, CollisionInfo* coll)
if (frac > 1.0f)
frac = 1.0f;
Camera.flags = 1;
Camera.flags = CF_FOLLOW_CENTER;
int distance = TestLaraWall(item, 0, SECTOR(1.5f), 0) ? SECTOR(1) : CLICK(6.5f);
@ -717,7 +717,7 @@ void lara_as_sclimbstart(ItemInfo* item, CollisionInfo* coll)
}
else// if (item->animNumber == LA_OVERHANG_MONKEY_SLOPE_CONCAVE)
{
//Camera.flags = 1;
//Camera.flags = CF_FOLLOW_CENTER;
Camera.targetElevation = -ANGLE(11.25f);
Camera.targetDistance = CLICK(6.5f);
Camera.speed = 15;
@ -736,7 +736,7 @@ void lara_as_sclimbstop(ItemInfo* item, CollisionInfo* coll)
// Following camera effect during the slope to underlying monkey transition.
if (item->Animation.AnimNumber == LA_OVERHANG_SLOPE_MONKEY_CONVEX)
{
Camera.flags = 1;
Camera.flags = CF_FOLLOW_CENTER;
Camera.targetDistance = CLICK(6.5f);
Camera.targetElevation = ANGLE(11.25f);
Camera.targetspeed = 15;
@ -751,7 +751,7 @@ void lara_as_sclimbstop(ItemInfo* item, CollisionInfo* coll)
if (frac > 1.0f)
frac = 1.0f;
Camera.flags = 1;
Camera.flags = CF_FOLLOW_CENTER;
if (item->Animation.FrameNumber < g_Level.Anims[item->Animation.AnimNumber].frameEnd)
{

View file

@ -142,7 +142,7 @@ void InitialiseCamera()
Camera.numberFrames = 1;
Camera.type = CameraType::Chase;
Camera.speed = 1;
Camera.flags = CF_FOLLOW_CENTER;
Camera.flags = CF_NONE;
Camera.bounce = 0;
Camera.number = -1;
Camera.fixedCamera = false;
@ -1544,20 +1544,24 @@ void CalculateCamera()
Camera.target.roomNumber = item->RoomNumber;
Camera.target.y = y;
auto shift = (bounds->X1 + bounds->X2 + bounds->Z1 + bounds->Z2) / 4;
x = item->Pose.Position.x + shift * phd_sin(item->Pose.Orientation.y);
z = item->Pose.Position.z + shift * phd_cos(item->Pose.Orientation.y);
x = item->Pose.Position.x;
z = item->Pose.Position.z;
if (Camera.flags == CF_FOLLOW_CENTER) //Troye Aug. 7th 2022
{
auto shift = (bounds->Z1 + bounds->Z2) / 2;
x += shift * phd_sin(item->Pose.Orientation.y);
z += shift * phd_cos(item->Pose.Orientation.y);
}
Camera.target.x = x;
Camera.target.z = z;
if (item->ObjectNumber == ID_LARA)
{
// CF_FOLLOW_CENTER sets target on the item, ConfirmCameraTargetPos overrides this target,
// hence the flag check. Troye Aug. 7th 2022
if (item->IsLara() && Camera.flags != CF_FOLLOW_CENTER)
ConfirmCameraTargetPos();
x = Camera.target.x;
y = Camera.target.y;
z = Camera.target.z;
}
if (fixedCamera == Camera.fixedCamera)
{

View file

@ -43,6 +43,7 @@ struct CAMERA_INFO
enum CAMERA_FLAGS
{
CF_NONE = 0,
CF_FOLLOW_CENTER = 1,
CF_NO_CHUNKY = 2,
CF_CHASE_OBJECT = 3,

View file

@ -69,7 +69,7 @@ namespace TEN::Entities::TR3
Lara.Control.HandStatus = HandStatus::Busy;
Lara.Control.Weapon.GunType = LaraWeaponType::None;
Camera.flags = 1;
Camera.flags = CF_FOLLOW_CENTER;
Camera.targetAngle = ANGLE(170.0f);
Camera.targetElevation = -ANGLE(25.0f);
}