walk lerping also for Y

This commit is contained in:
milek7
2019-01-27 21:10:41 +01:00
parent 4f030959e3
commit 0bf7238b00

View File

@@ -47,6 +47,9 @@ TCamera::OnCommand( command_data const &Command ) {
auto const walkspeed { 1.0 };
auto const runspeed { 10.0 };
// threshold position on stick between walk lerp and walk/run lerp
auto const stickthreshold = 2.0 / 3.0;
bool iscameracommand { true };
switch( Command.command ) {
@@ -73,9 +76,6 @@ TCamera::OnCommand( command_data const &Command ) {
30.0 :
1.0 );
// threshold position on stick between walk lerp and walk/run lerp
auto const stickthreshold = 2.0 / 3.0;
// left-right
auto const movexparam { Command.param1 };
// 2/3rd of the stick range lerps walk speed, past that we lerp between max walk and run speed
@@ -117,8 +117,9 @@ TCamera::OnCommand( command_data const &Command ) {
1.0 );
// up-down
auto const moveyparam { Command.param1 };
// 2/3rd of the stick range enables walk speed, past that we lerp between walk and run speed
auto const movey { walkspeed + ( std::max( 0.0, std::abs( moveyparam ) - 0.65 ) / 0.35 ) * ( movespeed - walkspeed ) };
// 2/3rd of the stick range lerps walk speed, past that we lerp between max walk and run speed
auto const movey { walkspeed * std::min(std::abs(moveyparam) * (1.0 / stickthreshold), 1.0)
+ ( std::max( 0.0, std::abs( moveyparam ) - stickthreshold ) / (1.0 - stickthreshold) ) * std::max( 0.0, movespeed - walkspeed ) };
m_moverate.y = (
moveyparam > 0.0 ? movey * speedmultiplier :