fix: fix sprinting
This commit is contained in:
@@ -274,11 +274,13 @@ void LocalPlayer::aiStep()
|
||||
if (changingDimensionDelay > 0) changingDimensionDelay--;
|
||||
bool wasJumping = input->jumping;
|
||||
float runTreshold = 0.8f;
|
||||
float sprintForward = input->sprintForward;
|
||||
|
||||
bool wasRunning = input->ya >= runTreshold;
|
||||
bool wasRunning = sprintForward >= runTreshold;
|
||||
//input->tick( dynamic_pointer_cast<Player>( shared_from_this() ) );
|
||||
// 4J-PB - make it a localplayer
|
||||
input->tick( this );
|
||||
sprintForward = input->sprintForward;
|
||||
if (isUsingItem())
|
||||
{
|
||||
input->xa *= 0.2f;
|
||||
@@ -302,9 +304,20 @@ void LocalPlayer::aiStep()
|
||||
// world with low food, then reload it in creative.
|
||||
if(abilities.mayfly || isAllowedToFly() ) enoughFoodToSprint = true;
|
||||
|
||||
bool forwardEnoughToTriggerSprint = sprintForward >= runTreshold;
|
||||
bool forwardReturnedToDeadzone = sprintForward == 0.0f;
|
||||
bool forwardEnoughToContinueSprint = sprintForward >= runTreshold;
|
||||
|
||||
#ifdef _WINDOWS64
|
||||
if (GetXboxPad() == 0 && input->usingKeyboardMovement)
|
||||
{
|
||||
forwardEnoughToContinueSprint = sprintForward > 0.0f;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _WINDOWS64
|
||||
// Keyboard sprint: Ctrl held while moving forward
|
||||
if (GetXboxPad() == 0 && KMInput.IsKeyDown(VK_CONTROL) && input->ya > 0.0f &&
|
||||
if (GetXboxPad() == 0 && input->usingKeyboardMovement && KMInput.IsKeyDown(VK_CONTROL) && sprintForward > 0.0f &&
|
||||
enoughFoodToSprint && !isUsingItem() && !hasEffect(MobEffect::blindness) && onGround)
|
||||
{
|
||||
if (!isSprinting()) setSprinting(true);
|
||||
@@ -314,7 +327,7 @@ void LocalPlayer::aiStep()
|
||||
// 4J - altered this slightly to make sure that the joypad returns to below returnTreshold in between registering two movements up to runThreshold
|
||||
if (onGround && !isSprinting() && enoughFoodToSprint && !isUsingItem() && !hasEffect(MobEffect::blindness))
|
||||
{
|
||||
if( !wasRunning && input->ya >= runTreshold )
|
||||
if( !wasRunning && forwardEnoughToTriggerSprint )
|
||||
{
|
||||
if (sprintTriggerTime == 0)
|
||||
{
|
||||
@@ -331,7 +344,7 @@ void LocalPlayer::aiStep()
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( ( sprintTriggerTime > 0 ) && ( input->ya == 0.0f ) ) // ya of 0.0f here signifies that we have returned to the deadzone
|
||||
else if( ( sprintTriggerTime > 0 ) && forwardReturnedToDeadzone ) // zero sprintForward here signifies that we have returned to the deadzone
|
||||
{
|
||||
sprintTriggerRegisteredReturn = true;
|
||||
}
|
||||
@@ -339,7 +352,7 @@ void LocalPlayer::aiStep()
|
||||
if (isSneaking()) sprintTriggerTime = 0;
|
||||
// 4J-PB - try not stopping sprint on collision
|
||||
//if (isSprinting() && (input->ya < runTreshold || horizontalCollision || !enoughFoodToSprint))
|
||||
if (isSprinting() && (input->ya < runTreshold || !enoughFoodToSprint))
|
||||
if (isSprinting() && (!forwardEnoughToContinueSprint || !enoughFoodToSprint || isSneaking() || isUsingItem()))
|
||||
{
|
||||
setSprinting(false);
|
||||
}
|
||||
@@ -1622,4 +1635,3 @@ void LocalPlayer::SetPlayerAdditionalModelParts(vector<ModelPart *>pAdditionalMo
|
||||
{
|
||||
m_pAdditionalModelParts=pAdditionalModelParts;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user