diff options
author | sfan5 <sfan5@live.de> | 2022-07-03 16:44:08 +0200 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2022-07-14 20:55:45 +0200 |
commit | 1d512ef7f4071fadf10078825ce83e77a3707f06 (patch) | |
tree | a839a9a84868b28b633b98b85bc158f0cb6ac4c9 /src/script/common/c_converter.cpp | |
parent | 8ff3fadba033dbc686c4f834811f0744099fedfb (diff) | |
download | minetest-1d512ef7f4071fadf10078825ce83e77a3707f06.tar.gz minetest-1d512ef7f4071fadf10078825ce83e77a3707f06.tar.bz2 minetest-1d512ef7f4071fadf10078825ce83e77a3707f06.zip |
Reduce code duplication between c_converter.cpp and helper.cpp
Diffstat (limited to 'src/script/common/c_converter.cpp')
-rw-r--r-- | src/script/common/c_converter.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/script/common/c_converter.cpp b/src/script/common/c_converter.cpp index 109fa1a14..69da35b73 100644 --- a/src/script/common/c_converter.cpp +++ b/src/script/common/c_converter.cpp @@ -61,6 +61,22 @@ static void set_vector_metatable(lua_State *L) lua_setmetatable(L, -2); } +// Retrieve an integer vector where all components are optional +template<class T> +static bool getv3intfield(lua_State *L, int index, + const char *fieldname, T &result) +{ + lua_getfield(L, index, fieldname); + bool got = false; + if (lua_istable(L, -1)) { + got |= getintfield(L, -1, "x", result.X); + got |= getintfield(L, -1, "y", result.Y); + got |= getintfield(L, -1, "z", result.Z); + } + lua_pop(L, 1); + return got; +} + void push_v3f(lua_State *L, v3f p) { lua_createtable(L, 0, 3); |