From 766ffd4ad671fb1f78c063095c6b77d8af90c65a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20B=C3=A1lint=20Misius?= Date: Sun, 3 Jul 2022 15:40:35 +0200 Subject: [PATCH] Add sim.partExists and elem.exists --- src/lua/LuaScriptInterface.cpp | 15 +++++++++++++++ src/lua/LuaScriptInterface.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/lua/LuaScriptInterface.cpp b/src/lua/LuaScriptInterface.cpp index 2cd747bb5..aa80631a2 100644 --- a/src/lua/LuaScriptInterface.cpp +++ b/src/lua/LuaScriptInterface.cpp @@ -804,6 +804,7 @@ void LuaScriptInterface::initSimulationAPI() {"partPosition", simulation_partPosition}, {"partID", simulation_partID}, {"partKill", simulation_partKill}, + {"partExists", simulation_partExists}, {"pressure", simulation_pressure}, {"ambientHeat", simulation_ambientHeat}, {"velocityX", simulation_velocityX}, @@ -1167,6 +1168,13 @@ int LuaScriptInterface::simulation_partKill(lua_State * l) return 0; } +int LuaScriptInterface::simulation_partExists(lua_State * l) +{ + int i = luaL_checkinteger(l, 1); + lua_pushboolean(l, i >= 0 && i < NPART && luacon_sim->parts[i].type); + return 1; +} + int LuaScriptInterface::simulation_pressure(lua_State* l) { int argCount = lua_gettop(l); @@ -2643,6 +2651,7 @@ void LuaScriptInterface::initElementsAPI() {"element", elements_element}, {"property", elements_property}, {"free", elements_free}, + {"exists", elements_exists}, {"loadDefault", elements_loadDefault}, {NULL, NULL} }; @@ -3483,6 +3492,12 @@ int LuaScriptInterface::elements_free(lua_State * l) return 0; } +int LuaScriptInterface::elements_exists(lua_State * l) +{ + lua_pushboolean(l, luacon_sim->IsElement(luaL_checkinteger(l, 1))); + return 1; +} + void LuaScriptInterface::initGraphicsAPI() { //Methods diff --git a/src/lua/LuaScriptInterface.h b/src/lua/LuaScriptInterface.h index 757c9dbb5..a1839a3fe 100644 --- a/src/lua/LuaScriptInterface.h +++ b/src/lua/LuaScriptInterface.h @@ -63,6 +63,7 @@ class LuaScriptInterface: public CommandInterface static int simulation_partPosition(lua_State * l); static int simulation_partID(lua_State * l); static int simulation_partKill(lua_State * l); + static int simulation_partExists(lua_State * l); static int simulation_pressure(lua_State * l); static int simulation_velocityX(lua_State * l); static int simulation_velocityY(lua_State * l); @@ -140,6 +141,7 @@ class LuaScriptInterface: public CommandInterface static int elements_property(lua_State * l); static int elements_loadDefault(lua_State * l); static int elements_free(lua_State * l); + static int elements_exists(lua_State * l); //Interface void initInterfaceAPI();