From 541aba0b1a586ba3d25fb2dbe04d1c0c34d9ddc2 Mon Sep 17 00:00:00 2001 From: InfiniteCoder Date: Mon, 26 Feb 2024 18:05:54 +0300 Subject: [PATCH] l_player_get_vel & l_player_set_vel --- src/logic/scripting/lua/libplayer.cpp | 44 ++++++++++++++++++++------- src/logic/scripting/lua/libplayer.h | 6 +++- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/logic/scripting/lua/libplayer.cpp b/src/logic/scripting/lua/libplayer.cpp index dfb8fc16..f51c3e06 100644 --- a/src/logic/scripting/lua/libplayer.cpp +++ b/src/logic/scripting/lua/libplayer.cpp @@ -20,6 +20,39 @@ int l_player_get_pos(lua_State* L) { return 3; } +int l_player_set_pos(lua_State* L) { + int playerid = lua_tointeger(L, 1); + if (playerid != 1) + return 0; + lua::luanumber x = lua_tonumber(L, 2); + lua::luanumber y = lua_tonumber(L, 3); + lua::luanumber z = lua_tonumber(L, 4); + scripting::level->player->hitbox->position = glm::vec3(x, y, z); + return 0; +} + +int l_player_get_vel(lua_State* L) { + int playerid = lua_tointeger(L, 1); + if (playerid != 1) + return 0; + glm::vec3 vel = scripting::level->player->hitbox->velocity; + lua_pushnumber(L, vel.x); + lua_pushnumber(L, vel.y); + lua_pushnumber(L, vel.z); + return 3; +} + +int l_player_set_vel(lua_State* L) { + int playerid = lua_tointeger(L, 1); + if (playerid != 1) + return 0; + lua::luanumber x = lua_tonumber(L, 2); + lua::luanumber y = lua_tonumber(L, 3); + lua::luanumber z = lua_tonumber(L, 4); + scripting::level->player->hitbox->velocity = glm::vec3(x, y, z); + return 0; +} + int l_player_get_rot(lua_State* L) { int playerid = lua_tointeger(L, 1); if (playerid != 1) @@ -42,17 +75,6 @@ int l_player_set_rot(lua_State* L) { return 0; } -int l_player_set_pos(lua_State* L) { - int playerid = lua_tointeger(L, 1); - if (playerid != 1) - return 0; - lua::luanumber x = lua_tonumber(L, 2); - lua::luanumber y = lua_tonumber(L, 3); - lua::luanumber z = lua_tonumber(L, 4); - scripting::level->player->hitbox->position = glm::vec3(x, y, z); - return 0; -} - int l_player_get_inv(lua_State* L) { int playerid = lua_tointeger(L, 1); if (playerid != 1) diff --git a/src/logic/scripting/lua/libplayer.h b/src/logic/scripting/lua/libplayer.h index e53b83b8..eb49f775 100644 --- a/src/logic/scripting/lua/libplayer.h +++ b/src/logic/scripting/lua/libplayer.h @@ -5,14 +5,18 @@ /* == player library ==*/ extern int l_player_get_pos(lua_State* L); +extern int l_player_set_pos(lua_State* L); +extern int l_player_get_vel(lua_State* L); +extern int l_player_set_vel(lua_State* L); extern int l_player_get_rot(lua_State* L); extern int l_player_set_rot(lua_State* L); -extern int l_player_set_pos(lua_State* L); extern int l_player_get_inv(lua_State* L); static const luaL_Reg playerlib [] = { {"get_pos", lua_wrap_errors}, {"set_pos", lua_wrap_errors}, + {"get_vel", lua_wrap_errors}, + {"set_vel", lua_wrap_errors}, {"get_rot", lua_wrap_errors}, {"set_rot", lua_wrap_errors}, {"get_inventory", lua_wrap_errors},