Нужно было написать функцию, которая бы передавала несколько переменных в Lua в виде таблицы. Немного погуглил и нашёл простой работающий способ. Покажу его на примере функции, возвращающей текущее положение спрайта на экране:
int l_SpriteGetActualPos(lua_State* L) { String = CharToWString(lua_tostring(L, 1)); // Получаю имя спрайта в массиве lua_pop(L,1); // удаляю имя спрайта из стека Lua lua_newtable(L); //создаётся новая таблица lua_pushstring(L,"X"); // добавляю в стек ключ "Х" lua_pushnumber(L,Sprites[String].TempPos.x); // добавляю в стек значение для ключа "Х" lua_rawset(L,-3); // записываю пару "значение-ключ" в таблицу lua_pushstring(L,"Y"); // добавляю в стек ключ "Н" lua_pushnumber(L,Sprites[String].TempPos.y); // добавляю в стек значение для ключа "Н" lua_rawset(L,-3); // записываю пару "значение-ключ" в таблицу return 1; }
Из Lua эта функция используется следующим образом:
local Pos = Sprite_GetActualPos("Sprite_Name") -- в Pos записывается указатель на таблицу -- доступ к таблице осуществляется так Pos.X = 10 Pos.Y = 20
Комментариев нет:
Отправить комментарий