/// <summary> /// Gets a value off the Lua stack as a Vector3. /// </summary> /// <param name="result">The value.</param> /// <param name="lua">The Lua state.</param> /// <param name="index">The stack index.</param> /// <returns>The Lua result code.</returns> private static int LuaToVector3(out BoxedVector3 result, lua_State lua, int index) { var obj = lua_touserdata(lua, index); if (obj == null || lua_getmetatable(lua, index) == 0) { result = null; return(0); } LuaGetRegistryValue(lua, Vector3RegistryKey); if (lua_rawequal(lua, -1, -2) == 0) { obj = null; } lua_settop(lua, -3); if (obj != null) { result = obj as BoxedVector3; return(1); } result = null; return(0); }
/// <summary> /// Get the value of a Vector3. /// </summary> /// <param name="result"> /// The result. /// </param> /// <param name="lua"> /// The Lua state. /// </param> /// <param name="index"> /// The Lua stack index. /// </param> /// <returns> /// The Lua return value.. /// </returns> private static int GetXyz(out BoxedVector3 result, lua_State lua, int index) { var arg = lua_touserdata(lua, index); if (arg == null || lua_getmetatable(lua, index) == 0) { luaL_typerror(lua, index, Vector3RegistryKey); result = null; return(0); } lua_getfield(lua, LUA_REGISTRYINDEX, Vector3RegistryKey); if (lua_rawequal(lua, -1, -2) == 0) { arg = null; } lua_pop(lua, 2); if (arg == null) { result = null; return(0); } result = arg as BoxedVector3; return(1); }