From 33b21953e349c1d5adfefce20c2c3ef25086f902 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 25 Jun 2024 19:01:00 +0300 Subject: [PATCH] fix: lua::tovec + add vecn.tostring --- src/logic/scripting/lua/libvecn.cpp | 22 ++++++++++++++++++++++ src/logic/scripting/lua/lua_util.hpp | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/logic/scripting/lua/libvecn.cpp b/src/logic/scripting/lua/libvecn.cpp index 61155148..06872e79 100644 --- a/src/logic/scripting/lua/libvecn.cpp +++ b/src/logic/scripting/lua/libvecn.cpp @@ -1,5 +1,6 @@ #include "api_lua.hpp" +#include #include template class Op> @@ -53,6 +54,24 @@ static int l_scalar_op(lua::State* L) { return lua::pushnumber(L, func(vec)); } +template +static int l_tostring(lua::State* L) { + auto vec = lua::tovec(L, 1); + if (lua::gettop(L) != 1) { + throw std::runtime_error("invalid arguments number (1 expected)"); + } + std::stringstream ss; + ss << "vec" << std::to_string(n) << "{"; + for (int i = 0; i < n; i++) { + if (i > 0) { + ss << ", "; + } + ss << vec[i]; + } + ss << "}"; + return lua::pushstring(L, ss.str()); +} + const luaL_Reg vec2lib [] = { {"add", lua::wrap>}, {"sub", lua::wrap>}, @@ -60,6 +79,7 @@ const luaL_Reg vec2lib [] = { {"div", lua::wrap>}, {"normalize", lua::wrap>}, {"length", lua::wrap>}, + {"tostring", lua::wrap>}, {NULL, NULL} }; @@ -70,6 +90,7 @@ const luaL_Reg vec3lib [] = { {"div", lua::wrap>}, {"normalize", lua::wrap>}, {"length", lua::wrap>}, + {"tostring", lua::wrap>}, {NULL, NULL} }; @@ -80,5 +101,6 @@ const luaL_Reg vec4lib [] = { {"div", lua::wrap>}, {"normalize", lua::wrap>}, {"length", lua::wrap>}, + {"tostring", lua::wrap>}, {NULL, NULL} }; diff --git a/src/logic/scripting/lua/lua_util.hpp b/src/logic/scripting/lua/lua_util.hpp index 82e71d24..02e817be 100644 --- a/src/logic/scripting/lua/lua_util.hpp +++ b/src/logic/scripting/lua/lua_util.hpp @@ -336,7 +336,7 @@ namespace lua { } glm::vec vec; for (int i = 0; i < n; i++) { - rawgeti(L, 1); + rawgeti(L, i+1); vec[i] = tonumber(L, -1); pop(L); }