[РЕШЕНО]
Я создаю игровой движок, который использует LuaBridge для чтения компонентов для сущностей. В моем движке файл сущности выглядит так, где Компоненты — это список компонентов, которые есть у моей сущности, а остальные параметры используются для установки значений для каждого отдельного компонента:
-- myEntity.lua
Components = {"MeshRenderer", "Transform", "Rigidbody"}
MeshRenderer = {
Type = "Sphere",
Position = {0,300,0}
}
Transform = {
Position = {0,150,0},
Scale = {1,1,1},
Rotation = {0,0,0}
}
Rigidbody = {
Type = "Sphere",
Mass = 1
}
В настоящее время я использую эту функцию (на С++), чтобы прочитать значение параметра (с учетом его имени) внутри LuaRef.
template<class T>
T readParameter(LuaRef& table, const std::string& parameterName)
{
try {
return table.rawget(parameterName).cast<T>();
}
catch (std::exception e) {
// std::cout ...
return NULL;
}
}
Например, при вызове readVariable‹std::string›(myRigidbodyTable, Type), где myRigidbodyTable является LuaRef со значениями Rigidbody, эта функция должна возвращать std::string со значением Sphere.
Моя проблема заключается в том, что когда я заканчиваю чтение и сохранение значений моего компонента Transform, когда я хочу прочитать значения для Ridigbody, а мой движок считывает значение Type, в Stack:: push(lua_State* L, const std::string& str, std::error_code&).
Я почти уверен, что это связано с тем фактом, что мой компонент Transform хранит список значений для таких параметров, как Position, потому что у меня не было проблем при чтении компонентов, у которых было только одно значение для каждого параметра. Как правильно это сделать, если я что-то делаю не так?
Я также хотел бы отметить, что я новичок в LuaBridge, поэтому это может быть проблема новичка с решением, которое я не смог найти. Любая помощь приветствуется :)