Я хочу добавить полную поддержку сценариев Lua в свой игровой движок. Одна из самых больших целей, которую я ставлю перед собой, - сохранить полную модульность. Это означает, что я не хочу, чтобы остальная часть моего движка, за исключением части привязки Lua, использовала какие-либо специфичные для Lua функции.
До сих пор это было несложно. Чистая часть привязки функций C ++ к Lua - например, привязка объектов Vector, Color и Entity, а такие модули, как библиотека Draw или Physics, легко изолировать от остальной части движка.
Теперь моя проблема заключается в событиях . Мне нужно предоставить сценариям возможность реагировать на игровые события. Это включает вызов функций Lua из движка.
Примеры: вызов OnCreate
, OnUpdate
, OnCollide
для сущностей из C ++ в Lua.
Эти события происходят в моем базовом классе CEntity, и Модуль Lua не имеет возможности узнать, когда и как они происходят.
Возможные решения:
Плохо плохо плохо ! Это связующий материал Lua, смешанный прямо с базовым классом сущности!
Я, к сожалению, не слишком много знаю об этом. Я уверен, что это будет довольно сложно реализовать, а также вызовет некоторые незначительные логические проблемы и проблемы с производительностью.
- Как я могу запускать события (вызывать функцию перехвата) в Lua из моего движка C ++ без какого-либо кода привязки Lua за пределами модуль привязки Lua моей программы?