Lua C API создать таблицу из таблицы - PullRequest
2 голосов
/ 20 октября 2011

В настоящее время у меня в lua есть что-то похожее на ООП с использованием таблиц.

TCharacterController = {}
TCharacterController.speed = 10.0
TCharacterController.axis = "x"

function TCharacterController:new(o)
    o = o or {}
    setmetatable(o, self)
    self.__index = self
    return o
end

function TCharacterController:update()
    --this is a function that is called by the C application
end

Идея состоит в том, что я создам дочерний объект

ScriptObj = TCharacterController:new()

для каждого экземпляра сценария, подключенногообъект в моем приложении (это для игры).Итак, у меня есть слой сущностей, и у всех сущностей будет возможность присоединить к ним ScriptObj.Моя идея состоит в том, что Script на самом деле является классом, и он создается для каждой сущности, к которой он присоединен.

Мой вопрос: как мне создать экземпляр TCharacterController с помощью API C?

1 Ответ

3 голосов
/ 20 октября 2011

Поскольку new использует синтетический сахар self reference, вам нужно передать self в качестве первого аргумента, остальное - просто вызов функции поиска в таблице:

lua_getglobal(L, "TCharacterController"); /* get the table */
lua_getfield(L, -1, "new");  /* get the function from the table */
lua_insert(L, -2); /* move new up a position so self is the first arg */
lua_pcall(L, 1, 1); /* call it, the returned table is left on the stack */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...