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.EnableObjectPush = false;
|
||||||
coll->Setup.EnableSpaz = 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;
|
info->gunStatus = LG_HANDS_FREE;
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ void lara_as_walk_forward(ITEM_INFO* item, COLL_INFO* coll)
|
||||||
LaraInfo*& info = item->data;
|
LaraInfo*& info = item->data;
|
||||||
|
|
||||||
info->jumpCount++;
|
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;
|
info->jumpCount = LARA_JUMP_TIME - 4;
|
||||||
|
|
||||||
if (item->hitPoints <= 0)
|
if (item->hitPoints <= 0)
|
||||||
|
@ -232,12 +232,13 @@ void lara_as_run_forward(ITEM_INFO* item, COLL_INFO* coll)
|
||||||
!item->gravityStatus &&
|
!item->gravityStatus &&
|
||||||
info->waterStatus != LW_WADE)
|
info->waterStatus != LW_WADE)
|
||||||
{
|
{
|
||||||
info->jumpQueued = TrInput & IN_FORWARD;
|
|
||||||
|
|
||||||
if (info->jumpCount >= LARA_JUMP_TIME)
|
if (info->jumpCount >= LARA_JUMP_TIME)
|
||||||
|
{
|
||||||
item->goalAnimState = LS_JUMP_FORWARD;
|
item->goalAnimState = LS_JUMP_FORWARD;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
info->jumpQueued = TrInput & IN_FORWARD;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TrInput & IN_SPRINT && info->sprintTimer &&
|
if (TrInput & IN_SPRINT && info->sprintTimer &&
|
||||||
|
@ -247,7 +248,7 @@ void lara_as_run_forward(ITEM_INFO* item, COLL_INFO* coll)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TrInput & IN_ROLL &&
|
if (TrInput & IN_ROLL && !info->jumpQueued &&
|
||||||
info->waterStatus != LW_WADE)
|
info->waterStatus != LW_WADE)
|
||||||
{
|
{
|
||||||
item->goalAnimState = LS_ROLL_FORWARD;
|
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.
|
if (coll->Middle.Floor < -CLICK(0.5f) && // Lower floor bound.
|
||||||
coll->Middle.Floor >= -STEPUP_HEIGHT && // Upper 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_IDLE && // Crawl step up handled differently.
|
||||||
item->currentAnimState != LS_CRAWL_FORWARD)
|
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.
|
if (coll->Middle.Floor > CLICK(0.5f) && // Upper floor bound.
|
||||||
coll->Middle.Floor <= STEPUP_HEIGHT && // Lower 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_IDLE && // Crawl step down handled differently.
|
||||||
item->currentAnimState != LS_CRAWL_FORWARD)
|
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;
|
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)
|
if (item->currentAnimState == item->goalAnimState)
|
||||||
return 0;
|
return false;
|
||||||
|
|
||||||
if (anim->numberChanges <= 0)
|
if (anim->numberChanges <= 0)
|
||||||
return 0;
|
return false;
|
||||||
|
|
||||||
for (int i = 0; i < anim->numberChanges; i++)
|
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->animNumber = range->linkAnimNum;
|
||||||
item->frameNumber = range->linkFrameNum;
|
item->frameNumber = range->linkFrameNum;
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOUNDING_BOX* GetBoundsAccurate(ITEM_INFO* item)
|
BOUNDING_BOX* GetBoundsAccurate(ITEM_INFO* item)
|
||||||
|
|
|
@ -61,7 +61,7 @@ short GetFrameNumber(short objectID, short animNumber, short frameToStart);
|
||||||
int GetFrameCount(short animNumber);
|
int GetFrameCount(short animNumber);
|
||||||
int GetNextAnimState(ITEM_INFO* item);
|
int GetNextAnimState(ITEM_INFO* item);
|
||||||
int GetNextAnimState(short objectID, short animNumber);
|
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);
|
int GetFrame(ITEM_INFO* item, ANIM_FRAME* framePtr[], int* rate);
|
||||||
ANIM_FRAME* GetBestFrame(ITEM_INFO* item);
|
ANIM_FRAME* GetBestFrame(ITEM_INFO* item);
|
||||||
BOUNDING_BOX* GetBoundsAccurate(ITEM_INFO* item);
|
BOUNDING_BOX* GetBoundsAccurate(ITEM_INFO* item);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue