mirror of
https://github.com/minetest/minetest.git
synced 2025-07-04 08:50:22 +02:00
Expose analog joystick input to the Lua API (#14348)
This commit is contained in:
@ -962,6 +962,8 @@ enum ToServerCommand : u16
|
||||
[2+12+12+4+4+4] u8 fov*80
|
||||
[2+12+12+4+4+4+1] u8 ceil(wanted_range / MAP_BLOCKSIZE)
|
||||
[2+12+12+4+4+4+1+1] u8 camera_inverted (bool)
|
||||
[2+12+12+4+4+4+1+1+1] f32 movement_speed
|
||||
[2+12+12+4+4+4+1+1+1+4] f32 movement_direction
|
||||
|
||||
*/
|
||||
|
||||
|
@ -477,12 +477,24 @@ void Server::process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao,
|
||||
u8 bits = 0; // bits instead of bool so it is extensible later
|
||||
|
||||
*pkt >> keyPressed;
|
||||
player->control.unpackKeysPressed(keyPressed);
|
||||
|
||||
*pkt >> f32fov;
|
||||
fov = (f32)f32fov / 80.0f;
|
||||
*pkt >> wanted_range;
|
||||
|
||||
if (pkt->getRemainingBytes() >= 1)
|
||||
*pkt >> bits;
|
||||
|
||||
if (pkt->getRemainingBytes() >= 8) {
|
||||
*pkt >> player->control.movement_speed;
|
||||
*pkt >> player->control.movement_direction;
|
||||
} else {
|
||||
player->control.movement_speed = 0.0f;
|
||||
player->control.movement_direction = 0.0f;
|
||||
player->control.setMovementFromKeys();
|
||||
}
|
||||
|
||||
v3f position((f32)ps.X / 100.0f, (f32)ps.Y / 100.0f, (f32)ps.Z / 100.0f);
|
||||
v3f speed((f32)ss.X / 100.0f, (f32)ss.Y / 100.0f, (f32)ss.Z / 100.0f);
|
||||
|
||||
@ -501,8 +513,6 @@ void Server::process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao,
|
||||
playersao->setWantedRange(wanted_range);
|
||||
playersao->setCameraInverted(bits & 0x01);
|
||||
|
||||
player->control.unpackKeysPressed(keyPressed);
|
||||
|
||||
if (playersao->checkMovementCheat()) {
|
||||
// Call callbacks
|
||||
m_script->on_cheat(playersao, "moved_too_fast");
|
||||
|
Reference in New Issue
Block a user