if( keycode == keyb.up OR keycode == keyb.w, copy(walkaround.forward, keypressed);
, keycode == keyb.down OR keycode == keyb.s, copy(walkaround.backward, keypressed);
, keycode == keyb.left OR keycode == keyb.a, copy(walkaround.left, keypressed);
, keycode == keyb.right OR keycode == keyb.d, copy(walkaround.right, keypressed);
, keycode == keyb.shift, copy(walkaround.faster, keypressed);
, keycode == keyb.ctrl, copy(walkaround.strafe, keypressed);
, keycode == keyb.q, copy(walkaround.up, keypressed);
, keycode == keyb.y OR keycode == keyb.z, copy(walkaround.down, keypressed);
);
0.3) dx = 0; // too fast changes are probably no swipes
if (Math.abs(dz) > 0.3) dz = 0;
if (controlmode == 0) // rotate
{
rx += touchpad_rotate_speed * dx;
}
else // move
{
vx += touchpad_move_speed * ( dx*lz2 + dz*lx2);
vz += touchpad_move_speed * (-dx*lx2 + dz*lz2);
}
}
}
else
{
// joystick - direct control
if (controlmode == 0) // rotate
{
if (Math.abs(axes[0]) > 0.2)
{
rx = joystick_rotate_speed * axes[0];
}
}
else // move
{
// ignore too small values, some vr-controllers, e.g. Windows MR ones, are constantly reporting small wrong values
if ( Math.abs(axes[0]) > 0.2 ) wx += joystick_move_speed * axes[0];
if ( Math.abs(axes[1]) > 0.2 ) wz -= joystick_move_speed * axes[1];
}
}
}
}
}
var wl = Math.sqrt(wx*wx + wz*wz);
if (wl > 0)
{
// normalize the moving speed
wl = speed / wl;
if (walkaround.faster > 0)
wl *= 3;
wx *= wl;
wz *= wl;
if (wx)
{
vx += wx*lz2;
vz -= wx*lx2;
}
if (wz)
{
if (krpano.depthmap_movemode == "flying")
{
vx += wz*lx3;
vz += wz*lz3;
vy += wz*ly3;
}
else
{
vx += wz*lx2;
vz += wz*lz2;
}
}
}
if (wy)
{
vy -= 0.5*speed*wy;
}
krpano.view.tx += vx;
krpano.view.ty += vy;
krpano.view.tz += vz;
if (rx != 0)
{
krpano.webvr.hlookatoffset += rx;
}
});
]]>
copy(mx,mouse.x);
copy(my,mouse.y);
tween(caller.alpha,0);
asyncloop(caller.pressed,
calc(walkaround.forward, (mouse.y - my) * -0.25);
calc(walkaround.left, (mouse.x - mx) * -0.25);
copy(mx, mouse.x);
copy(my, mouse.y);
,
set(walkaround.left, 0);
set(walkaround.forward, 0);
tween(caller.alpha,1);
);