mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-08 03:28:03 +03:00
Fix jump stutter on steps
This commit is contained in:
parent
12bcd53336
commit
02d7433405
4 changed files with 13 additions and 14 deletions
|
@ -68,7 +68,7 @@ void lara_as_controlled(ITEM_INFO* item, COLL_INFO* coll)
|
|||
coll->Setup.EnableObjectPush = false;
|
||||
coll->Setup.EnableSpaz = false;
|
||||
|
||||
if (item->frameNumber == TestLastFrame(item, item->animNumber) - 1)
|
||||
if (item->frameNumber == g_Level.Anims[item->animNumber].frameEnd - 1)
|
||||
{
|
||||
info->gunStatus = LG_HANDS_FREE;
|
||||
|
||||
|
@ -97,7 +97,7 @@ void lara_as_walk_forward(ITEM_INFO* item, COLL_INFO* coll)
|
|||
LaraInfo*& info = item->data;
|
||||
|
||||
info->jumpCount++;
|
||||
if (info->jumpCount > LARA_JUMP_TIME - 4) // If anyone complains about the walk jump being nerfed, increase this value.
|
||||
if (info->jumpCount > LARA_JUMP_TIME - 4)
|
||||
info->jumpCount = LARA_JUMP_TIME - 4;
|
||||
|
||||
if (item->hitPoints <= 0)
|
||||
|
@ -232,14 +232,15 @@ void lara_as_run_forward(ITEM_INFO* item, COLL_INFO* coll)
|
|||
!item->gravityStatus &&
|
||||
info->waterStatus != LW_WADE)
|
||||
{
|
||||
info->jumpQueued = TrInput & IN_FORWARD;
|
||||
|
||||
if (info->jumpCount >= LARA_JUMP_TIME)
|
||||
{
|
||||
item->goalAnimState = LS_JUMP_FORWARD;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
info->jumpQueued = TrInput & IN_FORWARD;
|
||||
}
|
||||
|
||||
if (TrInput & IN_SPRINT && info->sprintTimer &&
|
||||
info->waterStatus != LW_WADE)
|
||||
{
|
||||
|
@ -247,7 +248,7 @@ void lara_as_run_forward(ITEM_INFO* item, COLL_INFO* coll)
|
|||
return;
|
||||
}
|
||||
|
||||
if (TrInput & IN_ROLL &&
|
||||
if (TrInput & IN_ROLL && !info->jumpQueued &&
|
||||
info->waterStatus != LW_WADE)
|
||||
{
|
||||
item->goalAnimState = LS_ROLL_FORWARD;
|
||||
|
|
|
@ -1488,7 +1488,6 @@ bool TestLaraStepUp(ITEM_INFO* item, COLL_INFO* coll)
|
|||
{
|
||||
if (coll->Middle.Floor < -CLICK(0.5f) && // Lower floor bound.
|
||||
coll->Middle.Floor >= -STEPUP_HEIGHT && // Upper floor bound.
|
||||
coll->Middle.Floor != NO_HEIGHT &&
|
||||
item->currentAnimState != LS_CRAWL_IDLE && // Crawl step up handled differently.
|
||||
item->currentAnimState != LS_CRAWL_FORWARD)
|
||||
{
|
||||
|
@ -1502,7 +1501,6 @@ bool TestLaraStepDown(ITEM_INFO* item, COLL_INFO* coll)
|
|||
{
|
||||
if (coll->Middle.Floor > CLICK(0.5f) && // Upper floor bound.
|
||||
coll->Middle.Floor <= STEPUP_HEIGHT && // Lower floor bound.
|
||||
coll->Middle.Floor != NO_HEIGHT &&
|
||||
item->currentAnimState != LS_CRAWL_IDLE && // Crawl step down handled differently.
|
||||
item->currentAnimState != LS_CRAWL_FORWARD)
|
||||
{
|
||||
|
|
|
@ -198,13 +198,13 @@ void TranslateItem(ITEM_INFO* item, int x, int y, int z)
|
|||
item->pos.zPos += -s * x + c * z;
|
||||
}
|
||||
|
||||
int GetChange(ITEM_INFO* item, ANIM_STRUCT* anim)
|
||||
bool GetChange(ITEM_INFO* item, ANIM_STRUCT* anim)
|
||||
{
|
||||
if (item->currentAnimState == item->goalAnimState)
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
if (anim->numberChanges <= 0)
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
for (int i = 0; i < anim->numberChanges; i++)
|
||||
{
|
||||
|
@ -219,13 +219,13 @@ int GetChange(ITEM_INFO* item, ANIM_STRUCT* anim)
|
|||
item->animNumber = range->linkAnimNum;
|
||||
item->frameNumber = range->linkFrameNum;
|
||||
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
BOUNDING_BOX* GetBoundsAccurate(ITEM_INFO* item)
|
||||
|
|
|
@ -61,7 +61,7 @@ short GetFrameNumber(short objectID, short animNumber, short frameToStart);
|
|||
int GetFrameCount(short animNumber);
|
||||
int GetNextAnimState(ITEM_INFO* item);
|
||||
int GetNextAnimState(short objectID, short animNumber);
|
||||
int GetChange(ITEM_INFO* item, ANIM_STRUCT* anim);
|
||||
bool GetChange(ITEM_INFO* item, ANIM_STRUCT* anim);
|
||||
int GetFrame(ITEM_INFO* item, ANIM_FRAME* framePtr[], int* rate);
|
||||
ANIM_FRAME* GetBestFrame(ITEM_INFO* item);
|
||||
BOUNDING_BOX* GetBoundsAccurate(ITEM_INFO* item);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue