summaryrefslogtreecommitdiff
path: root/src/cat/LuaScriptInterface.cpp
diff options
context:
space:
mode:
authormniip <mniip@mniip.com>2013-06-12 17:12:07 (GMT)
committer mniip <mniip@mniip.com>2013-06-12 17:12:07 (GMT)
commit17de12dc8bf4a429bb80ecdfb6d960194dd7aaf2 (patch)
tree22cbe6881ad2dbe86271c13cca9939658763272b /src/cat/LuaScriptInterface.cpp
parent03f25909675c99469cefece3c7d372935f0db407 (diff)
downloadpowder-17de12dc8bf4a429bb80ecdfb6d960194dd7aaf2.zip
powder-17de12dc8bf4a429bb80ecdfb6d960194dd7aaf2.tar.gz
simulation.parts() iterator
Diffstat (limited to 'src/cat/LuaScriptInterface.cpp')
-rw-r--r--src/cat/LuaScriptInterface.cpp24
1 files changed, 23 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()