mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-16 18:29:55 +00:00
Merge branch 'configurable_turning_delay' into 'master'
Makes the delay of turning while run configurable (part of "smooth movement") See merge request OpenMW/openmw!349
This commit is contained in:
commit
f513ee1f1d
3 changed files with 16 additions and 1 deletions
|
@ -1966,6 +1966,7 @@ void CharacterController::update(float duration, bool animationOnly)
|
||||||
static const bool smoothMovement = Settings::Manager::getBool("smooth movement", "Game");
|
static const bool smoothMovement = Settings::Manager::getBool("smooth movement", "Game");
|
||||||
if (smoothMovement && !isFirstPersonPlayer)
|
if (smoothMovement && !isFirstPersonPlayer)
|
||||||
{
|
{
|
||||||
|
static const float playerTurningCoef = 1.0 / std::max(0.01f, Settings::Manager::getFloat("smooth movement player turning delay", "Game"));
|
||||||
float angle = mPtr.getRefData().getPosition().rot[2];
|
float angle = mPtr.getRefData().getPosition().rot[2];
|
||||||
osg::Vec2f targetSpeed = Misc::rotateVec2f(osg::Vec2f(vec.x(), vec.y()), -angle) * movementSettings.mSpeedFactor;
|
osg::Vec2f targetSpeed = Misc::rotateVec2f(osg::Vec2f(vec.x(), vec.y()), -angle) * movementSettings.mSpeedFactor;
|
||||||
osg::Vec2f delta = targetSpeed - mSmoothedSpeed;
|
osg::Vec2f delta = targetSpeed - mSmoothedSpeed;
|
||||||
|
@ -1975,7 +1976,7 @@ void CharacterController::update(float duration, bool animationOnly)
|
||||||
float maxDelta;
|
float maxDelta;
|
||||||
if (std::abs(speedDelta) < deltaLen / 2)
|
if (std::abs(speedDelta) < deltaLen / 2)
|
||||||
// Turning is smooth for player and less smooth for NPCs (otherwise NPC can miss a path point).
|
// Turning is smooth for player and less smooth for NPCs (otherwise NPC can miss a path point).
|
||||||
maxDelta = duration * (isPlayer ? 3.f : 6.f);
|
maxDelta = duration * (isPlayer ? playerTurningCoef : 6.f);
|
||||||
else if (isPlayer && speedDelta < -deltaLen / 2)
|
else if (isPlayer && speedDelta < -deltaLen / 2)
|
||||||
// As soon as controls are released, mwinput switches player from running to walking.
|
// As soon as controls are released, mwinput switches player from running to walking.
|
||||||
// So stopping should be instant for player, otherwise it causes a small twitch.
|
// So stopping should be instant for player, otherwise it causes a small twitch.
|
||||||
|
|
|
@ -344,6 +344,17 @@ Recommended to use with "turn to movement direction" enabled.
|
||||||
|
|
||||||
This setting can be controlled in Advanced tab of the launcher.
|
This setting can be controlled in Advanced tab of the launcher.
|
||||||
|
|
||||||
|
smooth movement player turning delay
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
:Type: floating point
|
||||||
|
:Range: >= 0.01
|
||||||
|
:Default: 0.333
|
||||||
|
|
||||||
|
Max delay of turning (in seconds) if player drastically changes direction on the run. Makes sense only if "smooth movement" is enabled.
|
||||||
|
|
||||||
|
This setting can only be configured by editing the settings configuration file.
|
||||||
|
|
||||||
NPCs avoid collisions
|
NPCs avoid collisions
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
|
|
@ -340,6 +340,9 @@ turn to movement direction = false
|
||||||
# Makes all movements of NPCs and player more smooth.
|
# Makes all movements of NPCs and player more smooth.
|
||||||
smooth movement = false
|
smooth movement = false
|
||||||
|
|
||||||
|
# Max delay of turning (in seconds) if player drastically changes direction on the run.
|
||||||
|
smooth movement player turning delay = 0.333
|
||||||
|
|
||||||
# All actors avoid collisions with other actors.
|
# All actors avoid collisions with other actors.
|
||||||
NPCs avoid collisions = false
|
NPCs avoid collisions = false
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue