diff --git a/stepmania/src/LuaReference.cpp b/stepmania/src/LuaReference.cpp index 6d33c2fdb2..5a95011404 100644 --- a/stepmania/src/LuaReference.cpp +++ b/stepmania/src/LuaReference.cpp @@ -163,6 +163,21 @@ RString LuaReference::Serialize() const return sRet; } +bool LuaHelpers::FromStack( lua_State *L, LuaReference &Object, int iOffset ) +{ + lua_pushvalue( L, iOffset ); + Object.SetFromStack( L ); + return true; +} + +bool LuaHelpers::FromStack( lua_State *L, apActorCommands &Object, int iOffset ) +{ + LuaReference *pRef = new LuaReference; + FromStack( L, *pRef, iOffset ); + Object = apActorCommands( pRef ); + return true; +} + LuaTable::LuaTable() { Lua *L = LUA->Get(); diff --git a/stepmania/src/LuaReference.h b/stepmania/src/LuaReference.h index 73ab83203e..8163445af0 100644 --- a/stepmania/src/LuaReference.h +++ b/stepmania/src/LuaReference.h @@ -3,6 +3,8 @@ #ifndef LUA_REFERENCE_H #define LUA_REFERENCE_H +#include "RageUtil_AutoPtr.h" + struct lua_State; typedef lua_State Lua; @@ -47,6 +49,14 @@ private: int m_iReference; }; +typedef AutoPtrCopyOnWrite apActorCommands; + +namespace LuaHelpers +{ + bool FromStack( lua_State *L, LuaReference &Object, int iOffset ); + bool FromStack( lua_State *L, apActorCommands &Object, int iOffset ); +} + class LuaTable: public LuaReference { public: