mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-02 09:47:58 +03:00
Don't fall off asymmetric angle connections
This commit is contained in:
parent
998add5815
commit
0ea3f86d48
2 changed files with 14 additions and 6 deletions
|
@ -51,7 +51,7 @@ bool TestValidLedge(ITEM_INFO* item, COLL_INFO* coll, bool ignoreHeadroom)
|
|||
if (abs(left - right) >= slopeDelta)
|
||||
return false;
|
||||
|
||||
if (!TestValidLedgeAngle(coll))
|
||||
if (!TestValidLedgeAngle(item, coll))
|
||||
return false;
|
||||
|
||||
if (!ignoreHeadroom)
|
||||
|
@ -64,9 +64,9 @@ bool TestValidLedge(ITEM_INFO* item, COLL_INFO* coll, bool ignoreHeadroom)
|
|||
return (coll->CollisionType == CT_FRONT);
|
||||
}
|
||||
|
||||
bool TestValidLedgeAngle(COLL_INFO* coll)
|
||||
bool TestValidLedgeAngle(ITEM_INFO* item, COLL_INFO* coll)
|
||||
{
|
||||
return (abs((short)(coll->NearestLedgeAngle - coll->Setup.ForwardAngle)) <= LARA_GRAB_THRESHOLD);
|
||||
return (abs((short)(coll->NearestLedgeAngle - item->pos.yRot)) <= LARA_GRAB_THRESHOLD);
|
||||
}
|
||||
|
||||
bool TestLaraVault(ITEM_INFO* item, COLL_INFO* coll)
|
||||
|
@ -177,7 +177,7 @@ bool TestLaraVault(ITEM_INFO* item, COLL_INFO* coll)
|
|||
SnapItemToLedge(item, coll, 0.1f);
|
||||
}
|
||||
|
||||
if (TestValidLedgeAngle(coll) && Lara.climbStatus)
|
||||
if (TestValidLedgeAngle(item, coll) && Lara.climbStatus)
|
||||
{
|
||||
if (coll->Front.Floor > -1920 || Lara.waterStatus == LW_WADE || coll->FrontLeft.Floor > -1920 || coll->FrontRight.Floor > -2048 || coll->Middle.Ceiling > -1158)
|
||||
{
|
||||
|
@ -671,7 +671,15 @@ bool TestLaraHang(ITEM_INFO* item, COLL_INFO* coll)
|
|||
|
||||
coll->Front.Floor = front;
|
||||
|
||||
if (!flag2 && coll->Middle.Ceiling < 0 && coll->CollisionType == CT_FRONT && !flag && !coll->HitStatic && cdif <= -950 && dfront >= -60 && dfront <= 60)
|
||||
if (!flag2 &&
|
||||
coll->Middle.Ceiling < 0 &&
|
||||
coll->CollisionType == CT_FRONT &&
|
||||
!flag &&
|
||||
!coll->HitStatic &&
|
||||
cdif <= -950 &&
|
||||
dfront >= -60 &&
|
||||
dfront <= 60 &&
|
||||
TestValidLedgeAngle(item, coll))
|
||||
{
|
||||
if (item->speed != 0)
|
||||
SnapItemToLedge(item, coll);
|
||||
|
|
|
@ -6,7 +6,7 @@ struct COLL_INFO;
|
|||
|
||||
SPLAT_COLL TestLaraWall(ITEM_INFO* item, int front, int right, int down);
|
||||
bool TestValidLedge(ITEM_INFO* item, COLL_INFO* coll, bool ignoreHeadroom = false);
|
||||
bool TestValidLedgeAngle(COLL_INFO* coll);
|
||||
bool TestValidLedgeAngle(ITEM_INFO* item, COLL_INFO* coll);
|
||||
bool TestLaraVault(ITEM_INFO* item, COLL_INFO* coll);
|
||||
bool TestLaraStandUp(COLL_INFO* coll);
|
||||
bool TestLaraSlide(ITEM_INFO* item, COLL_INFO* coll);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue