Я пытаюсь использовать Lua с моим прототипом игрового движка, но я застрял со странной ошибкой.
Моя цель - создавать объекты X в цикле с Lua и отображать их.
sprite = Sprite("icon.jpg", 300, 300, 0)
sprite2 = Sprite("icon.jpg", 100, 100, 0)
b1 = BoxObject(sprite)
b2 = BoxObject(sprite2)
sprite3 = Sprite("circle.png", 200, 100, 0)
sprite4 = Sprite("circle.png", 300, 100, 0)
b3 = CircleObject(sprite3)
b4 = CircleObject(sprite4)
n = Node()
n:AddChild(b1)
n:AddChild(b2)
n:AddChild(b3)
n:AddChild(b4)
for i = 0, 10, 1 do
x = math.random(700)
y = math.random(500)
n:AddChild(BoxObject(Sprite("icon.jpg", x, y, 0)))
end
for i = 0, 10, 1 do
x = math.random(700)
y = math.random(500)
local s = Sprite("circle.png", x, y, 0)
local o = CircleObject(s)
n:AddChild(BoxObject)
end
Если я сделаю так, код работает без ошибок, но игра вылетает в случайное время от мгновения до нескольких секунд. Если я использую этот код только с объектами, созданными в циклах, а не с созданными вручную, игра мгновенно вылетает.
Однако, если я пишу код Lua, эквивалентный C++, он работает без проблем.
for(int i = 0; i < 20; i++){
float x = rand() % 700;
float y = rand() % 500;
n->AddChild(new BoxObject(new Sprite("icon.jpg", x, y)));
}
for(int i = 0; i < 20; i++){
float x = rand() % 700;
float y = rand() % 500;
n->AddChild(new CircleObject(new Sprite("circle.png", x, y)));
}
Это моя привязка Lua
static void Lua(lua_State *lua){
luabind::module(lua)
[
luabind::class_<Node>("Node")
.def(luabind::constructor<>())
.def(luabind::constructor<float, float, float>())
.def("Render", &Node::Render)
.def("Move", &Node::Move)
.def("Rotate", &Node::Rotate)
.def("AddChild", &Node::AddChild)
.def("RotateAroundPoint", &Node::RotateAroundPoint)
];
}
Каждый метод принимает и возвращает void, кроме AddChild
virtual void AddChild(Node *child);
Объекты Sprite и Box и Circle наследуются от класса Node.
Кто-нибудь знает, что может вызвать эту странную ошибку? Буду рад любой помощи.