diff --git a/stepmania/src/EnumHelper.cpp b/stepmania/src/EnumHelper.cpp index ae1094798e..01e991c53f 100644 --- a/stepmania/src/EnumHelper.cpp +++ b/stepmania/src/EnumHelper.cpp @@ -120,7 +120,8 @@ void Enum::SetMetatable( lua_State *L, LuaReference &EnumTable, LuaReference &En lua_setfield( L, -2, "__index" ); lua_pushliteral( L, "Enum" ); - lua_setfield( L, -2, "type" ); + LuaHelpers::PushValueFunc( L, 1 ); + lua_setfield( L, -2, "__type" ); // for luaL_pushtype } lua_setmetatable( L, -2 ); lua_pop( L, 1 ); diff --git a/stepmania/src/LuaBinding.cpp b/stepmania/src/LuaBinding.cpp index 2d3927d146..1a53d48c25 100644 --- a/stepmania/src/LuaBinding.cpp +++ b/stepmania/src/LuaBinding.cpp @@ -112,6 +112,10 @@ void LuaBinding::Register( lua_State *L ) lua_pushstring( L, GetClassName() ); lua_setfield( L, metatable, "type" ); + lua_pushstring( L, GetClassName() ); + LuaHelpers::PushValueFunc( L, 1 ); + lua_setfield( L, metatable, "__type" ); // for luaL_pushtype + { lua_newtable( L ); int iHeirarchyTable = lua_gettop( L ); diff --git a/stepmania/src/LuaManager.cpp b/stepmania/src/LuaManager.cpp index 4aa1cc796a..6c5ad4b937 100644 --- a/stepmania/src/LuaManager.cpp +++ b/stepmania/src/LuaManager.cpp @@ -314,7 +314,7 @@ XNode *LuaManager::GetLuaInformation() const // fall through case LUA_TUSERDATA: // table or userdata: class instance { - if( !luaL_getmetafield(L, -1, "type") ) + if( !luaL_callmeta(L, -1, "__type") ) break; RString sType; if( !LuaHelpers::Pop(L, sType) )