mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-28 15:57:59 +03:00
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:
parent
37c4b4e4c2
commit
58be730a31
7 changed files with 27 additions and 22 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -24,3 +24,4 @@ packages/
|
||||||
*.wav
|
*.wav
|
||||||
*.trc
|
*.trc
|
||||||
*.str
|
*.str
|
||||||
|
*.ten
|
||||||
|
|
|
@ -14,6 +14,7 @@ Global
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x64.ActiveCfg = Debug|Win32
|
{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.ActiveCfg = Debug|Win32
|
||||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x86.Build.0 = Debug|Win32
|
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Debug|x86.Build.0 = Debug|Win32
|
||||||
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x64.ActiveCfg = Release|Win32
|
{15AB0220-541C-4DA1-94EB-ED3C47E4582E}.Release|x64.ActiveCfg = Release|Win32
|
||||||
|
|
|
@ -171,7 +171,6 @@ void lara_as_pushable_push(ItemInfo* item, CollisionInfo* coll)
|
||||||
Camera.targetAngle = ANGLE(35.0f);
|
Camera.targetAngle = ANGLE(35.0f);
|
||||||
Camera.targetElevation = -ANGLE(25.0f);
|
Camera.targetElevation = -ANGLE(25.0f);
|
||||||
Camera.flags = CF_FOLLOW_CENTER;
|
Camera.flags = CF_FOLLOW_CENTER;
|
||||||
Camera.laraNode = LM_TORSO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// State: LS_PUSHABLE_PULL (37)
|
// State: LS_PUSHABLE_PULL (37)
|
||||||
|
@ -186,7 +185,6 @@ void lara_as_pushable_pull(ItemInfo* item, CollisionInfo* coll)
|
||||||
Camera.targetAngle = ANGLE(35.0f);
|
Camera.targetAngle = ANGLE(35.0f);
|
||||||
Camera.targetElevation = -ANGLE(25.0f);
|
Camera.targetElevation = -ANGLE(25.0f);
|
||||||
Camera.flags = CF_FOLLOW_CENTER;
|
Camera.flags = CF_FOLLOW_CENTER;
|
||||||
Camera.laraNode = LM_TORSO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// State: LS_PUSHABLE_GRAB (38)
|
// State: LS_PUSHABLE_GRAB (38)
|
||||||
|
|
|
@ -445,7 +445,7 @@ void lara_as_slopeclimb(ItemInfo* item, CollisionInfo* coll)
|
||||||
else
|
else
|
||||||
item->Pose.Orientation.x++;
|
item->Pose.Orientation.x++;
|
||||||
|
|
||||||
Camera.flags = 1;
|
Camera.flags = CF_FOLLOW_CENTER;
|
||||||
|
|
||||||
if (Camera.type != CameraType::Chase)
|
if (Camera.type != CameraType::Chase)
|
||||||
return;
|
return;
|
||||||
|
@ -464,7 +464,7 @@ void lara_as_slopefall(ItemInfo* item, CollisionInfo* coll)
|
||||||
else
|
else
|
||||||
item->Pose.Orientation.x++;
|
item->Pose.Orientation.x++;
|
||||||
|
|
||||||
Camera.flags = 1;
|
Camera.flags = CF_FOLLOW_CENTER;
|
||||||
|
|
||||||
if (Camera.type != CameraType::Chase)
|
if (Camera.type != CameraType::Chase)
|
||||||
return;
|
return;
|
||||||
|
@ -629,7 +629,7 @@ void lara_as_slopeclimbup(ItemInfo* item, CollisionInfo* coll)
|
||||||
else
|
else
|
||||||
item->Pose.Orientation.x++;
|
item->Pose.Orientation.x++;
|
||||||
|
|
||||||
Camera.flags = 1;
|
Camera.flags = CF_FOLLOW_CENTER;
|
||||||
|
|
||||||
if (Camera.type != CameraType::Chase)
|
if (Camera.type != CameraType::Chase)
|
||||||
return; // If camera mode isn't chase (0) then don't change camera angles.
|
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
|
else
|
||||||
item->Pose.Orientation.x++;
|
item->Pose.Orientation.x++;
|
||||||
|
|
||||||
Camera.flags = 1;
|
Camera.flags = CF_FOLLOW_CENTER;
|
||||||
|
|
||||||
if (Camera.type != CameraType::Chase)
|
if (Camera.type != CameraType::Chase)
|
||||||
return;
|
return;
|
||||||
|
@ -695,7 +695,7 @@ void lara_as_sclimbstart(ItemInfo* item, CollisionInfo* coll)
|
||||||
if (frac > 1.0f)
|
if (frac > 1.0f)
|
||||||
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);
|
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)
|
else// if (item->animNumber == LA_OVERHANG_MONKEY_SLOPE_CONCAVE)
|
||||||
{
|
{
|
||||||
//Camera.flags = 1;
|
//Camera.flags = CF_FOLLOW_CENTER;
|
||||||
Camera.targetElevation = -ANGLE(11.25f);
|
Camera.targetElevation = -ANGLE(11.25f);
|
||||||
Camera.targetDistance = CLICK(6.5f);
|
Camera.targetDistance = CLICK(6.5f);
|
||||||
Camera.speed = 15;
|
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.
|
// Following camera effect during the slope to underlying monkey transition.
|
||||||
if (item->Animation.AnimNumber == LA_OVERHANG_SLOPE_MONKEY_CONVEX)
|
if (item->Animation.AnimNumber == LA_OVERHANG_SLOPE_MONKEY_CONVEX)
|
||||||
{
|
{
|
||||||
Camera.flags = 1;
|
Camera.flags = CF_FOLLOW_CENTER;
|
||||||
Camera.targetDistance = CLICK(6.5f);
|
Camera.targetDistance = CLICK(6.5f);
|
||||||
Camera.targetElevation = ANGLE(11.25f);
|
Camera.targetElevation = ANGLE(11.25f);
|
||||||
Camera.targetspeed = 15;
|
Camera.targetspeed = 15;
|
||||||
|
@ -751,7 +751,7 @@ void lara_as_sclimbstop(ItemInfo* item, CollisionInfo* coll)
|
||||||
if (frac > 1.0f)
|
if (frac > 1.0f)
|
||||||
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)
|
if (item->Animation.FrameNumber < g_Level.Anims[item->Animation.AnimNumber].frameEnd)
|
||||||
{
|
{
|
||||||
|
|
|
@ -142,7 +142,7 @@ void InitialiseCamera()
|
||||||
Camera.numberFrames = 1;
|
Camera.numberFrames = 1;
|
||||||
Camera.type = CameraType::Chase;
|
Camera.type = CameraType::Chase;
|
||||||
Camera.speed = 1;
|
Camera.speed = 1;
|
||||||
Camera.flags = CF_FOLLOW_CENTER;
|
Camera.flags = CF_NONE;
|
||||||
Camera.bounce = 0;
|
Camera.bounce = 0;
|
||||||
Camera.number = -1;
|
Camera.number = -1;
|
||||||
Camera.fixedCamera = false;
|
Camera.fixedCamera = false;
|
||||||
|
@ -1544,20 +1544,24 @@ void CalculateCamera()
|
||||||
Camera.target.roomNumber = item->RoomNumber;
|
Camera.target.roomNumber = item->RoomNumber;
|
||||||
Camera.target.y = y;
|
Camera.target.y = y;
|
||||||
|
|
||||||
auto shift = (bounds->X1 + bounds->X2 + bounds->Z1 + bounds->Z2) / 4;
|
x = item->Pose.Position.x;
|
||||||
x = item->Pose.Position.x + shift * phd_sin(item->Pose.Orientation.y);
|
z = item->Pose.Position.z;
|
||||||
z = item->Pose.Position.z + shift * phd_cos(item->Pose.Orientation.y);
|
|
||||||
|
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.x = x;
|
||||||
Camera.target.z = z;
|
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();
|
ConfirmCameraTargetPos();
|
||||||
x = Camera.target.x;
|
|
||||||
y = Camera.target.y;
|
|
||||||
z = Camera.target.z;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fixedCamera == Camera.fixedCamera)
|
if (fixedCamera == Camera.fixedCamera)
|
||||||
{
|
{
|
||||||
|
@ -2125,4 +2129,4 @@ void HandleOptics()
|
||||||
ResetLaraFlex(LaraItem);
|
ResetLaraFlex(LaraItem);
|
||||||
|
|
||||||
TrInput &= ~IN_LOOK;
|
TrInput &= ~IN_LOOK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ struct CAMERA_INFO
|
||||||
|
|
||||||
enum CAMERA_FLAGS
|
enum CAMERA_FLAGS
|
||||||
{
|
{
|
||||||
|
CF_NONE = 0,
|
||||||
CF_FOLLOW_CENTER = 1,
|
CF_FOLLOW_CENTER = 1,
|
||||||
CF_NO_CHUNKY = 2,
|
CF_NO_CHUNKY = 2,
|
||||||
CF_CHASE_OBJECT = 3,
|
CF_CHASE_OBJECT = 3,
|
||||||
|
|
|
@ -69,7 +69,7 @@ namespace TEN::Entities::TR3
|
||||||
Lara.Control.HandStatus = HandStatus::Busy;
|
Lara.Control.HandStatus = HandStatus::Busy;
|
||||||
Lara.Control.Weapon.GunType = LaraWeaponType::None;
|
Lara.Control.Weapon.GunType = LaraWeaponType::None;
|
||||||
|
|
||||||
Camera.flags = 1;
|
Camera.flags = CF_FOLLOW_CENTER;
|
||||||
Camera.targetAngle = ANGLE(170.0f);
|
Camera.targetAngle = ANGLE(170.0f);
|
||||||
Camera.targetElevation = -ANGLE(25.0f);
|
Camera.targetElevation = -ANGLE(25.0f);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue