1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Expose analog joystick input to the Lua API (#14348)

This commit is contained in:
grorp 2024-10-01 17:21:42 +02:00 committed by GitHub
parent 6569fdd4d1
commit 22ef4c8be1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 127 additions and 83 deletions

View file

@ -260,12 +260,13 @@ int LuaLocalPlayer::l_get_control(lua_State *L)
set("zoom", c.zoom);
set("dig", c.dig);
set("place", c.place);
// Player movement in polar coordinates and non-binary speed
lua_pushnumber(L, c.movement_speed);
lua_setfield(L, -2, "movement_speed");
lua_pushnumber(L, c.movement_direction);
lua_setfield(L, -2, "movement_direction");
// Provide direction keys to ensure compatibility
v2f movement = c.getMovement();
lua_pushnumber(L, movement.X);
lua_setfield(L, -2, "movement_x");
lua_pushnumber(L, movement.Y);
lua_setfield(L, -2, "movement_y");
set("up", c.direction_keys & (1 << 0));
set("down", c.direction_keys & (1 << 1));
set("left", c.direction_keys & (1 << 2));

View file

@ -1622,6 +1622,13 @@ int ObjectRef::l_get_player_control(lua_State *L)
lua_setfield(L, -2, "dig");
lua_pushboolean(L, control.place);
lua_setfield(L, -2, "place");
v2f movement = control.getMovement();
lua_pushnumber(L, movement.X);
lua_setfield(L, -2, "movement_x");
lua_pushnumber(L, movement.Y);
lua_setfield(L, -2, "movement_y");
// Legacy fields to ensure mod compatibility
lua_pushboolean(L, control.dig);
lua_setfield(L, -2, "LMB");