mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-09-02 20:42:36 +02:00
simulation.parts() iterator
This commit is contained in:
@@ -479,9 +479,9 @@ void LuaScriptInterface::initSimulationAPI()
|
|||||||
{"gravityMode", simulation_gravityMode},
|
{"gravityMode", simulation_gravityMode},
|
||||||
{"airMode", simulation_airMode},
|
{"airMode", simulation_airMode},
|
||||||
{"waterEqualisation", simulation_waterEqualisation},
|
{"waterEqualisation", simulation_waterEqualisation},
|
||||||
{"waterEqualization", simulation_waterEqualisation},
|
|
||||||
{"ambientAirTemp", simulation_ambientAirTemp},
|
{"ambientAirTemp", simulation_ambientAirTemp},
|
||||||
{"elementCount", simulation_elementCount},
|
{"elementCount", simulation_elementCount},
|
||||||
|
{"parts", simulation_parts},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
luaL_register(l, "simulation", simulationAPIMethods);
|
luaL_register(l, "simulation", simulationAPIMethods);
|
||||||
@@ -1505,6 +1505,28 @@ int LuaScriptInterface::simulation_elementCount(lua_State * l)
|
|||||||
return 1;
|
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
|
//// Begin Renderer API
|
||||||
|
|
||||||
void LuaScriptInterface::initRendererAPI()
|
void LuaScriptInterface::initRendererAPI()
|
||||||
|
@@ -101,6 +101,7 @@ class LuaScriptInterface: public CommandInterface
|
|||||||
static int simulation_waterEqualisation(lua_State * l);
|
static int simulation_waterEqualisation(lua_State * l);
|
||||||
static int simulation_ambientAirTemp(lua_State * l);
|
static int simulation_ambientAirTemp(lua_State * l);
|
||||||
static int simulation_elementCount(lua_State * l);
|
static int simulation_elementCount(lua_State * l);
|
||||||
|
static int simulation_parts(lua_State * l);
|
||||||
|
|
||||||
//Renderer
|
//Renderer
|
||||||
void initRendererAPI();
|
void initRendererAPI();
|
||||||
|
Reference in New Issue
Block a user