diff options
| author | mniip <mniip@mniip.com> | 2013-06-12 17:12:07 (GMT) |
|---|---|---|
| committer | mniip <mniip@mniip.com> | 2013-06-12 17:12:07 (GMT) |
| commit | 17de12dc8bf4a429bb80ecdfb6d960194dd7aaf2 (patch) | |
| tree | 22cbe6881ad2dbe86271c13cca9939658763272b /src | |
| parent | 03f25909675c99469cefece3c7d372935f0db407 (diff) | |
| download | powder-17de12dc8bf4a429bb80ecdfb6d960194dd7aaf2.zip powder-17de12dc8bf4a429bb80ecdfb6d960194dd7aaf2.tar.gz | |
simulation.parts() iterator
Diffstat (limited to 'src')
| -rw-r--r-- | src/cat/LuaScriptInterface.cpp | 24 | ||||
| -rw-r--r-- | src/cat/LuaScriptInterface.h | 1 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/cat/LuaScriptInterface.cpp b/src/cat/LuaScriptInterface.cpp index 4cb5bd9..4d7f643 100644 --- a/src/cat/LuaScriptInterface.cpp +++ b/src/cat/LuaScriptInterface.cpp @@ -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() diff --git a/src/cat/LuaScriptInterface.h b/src/cat/LuaScriptInterface.h index 5a09be9..19204a0 100644 --- a/src/cat/LuaScriptInterface.h +++ b/src/cat/LuaScriptInterface.h @@ -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(); |
