simulation.parts() iterator

This commit is contained in:
mniip 2013-06-12 21:12:07 +04:00
parent 03f2590967
commit 17de12dc8b
2 changed files with 24 additions and 1 deletions

View File

@ -479,9 +479,9 @@ void LuaScriptInterface::initSimulationAPI()
{"gravityMode", simulation_gravityMode},
{"airMode", simulation_airMode},
{"waterEqualisation", simulation_waterEqualisation},
{"waterEqualization", simulation_waterEqualisation},
{"ambientAirTemp", simulation_ambientAirTemp},
{"elementCount", simulation_elementCount},
{"parts", simulation_parts},
{NULL, NULL}
};
luaL_register(l, "simulation", simulationAPIMethods);
@ -1505,6 +1505,28 @@ int LuaScriptInterface::simulation_elementCount(lua_State * l)
return 1;
}
int PartsClosure(lua_State * l)
{
int i = lua_tointeger(l, lua_upvalueindex(1));
i++;
while(!luacon_sim->parts[i].type)
if(i>=NPART)
return 0;
else
i++;
lua_pushnumber(l, i);
lua_replace(l, lua_upvalueindex(1));
lua_pushnumber(l, i);
return 1;
}
int LuaScriptInterface::simulation_parts(lua_State *l)
{
lua_pushnumber(l, -1);
lua_pushcclosure(l, PartsClosure, 1);
return 1;
}
//// Begin Renderer API
void LuaScriptInterface::initRendererAPI()

View File

@ -101,6 +101,7 @@ class LuaScriptInterface: public CommandInterface
static int simulation_waterEqualisation(lua_State * l);
static int simulation_ambientAirTemp(lua_State * l);
static int simulation_elementCount(lua_State * l);
static int simulation_parts(lua_State * l);
//Renderer
void initRendererAPI();