#ifndef _GAMEOBJECT_H #define _GAMEOBJECT_H #include #include #include #include extern "C" { #include #include } #include #include // Pain #include // Pain struct GameObject { GameObject(std::string name) : name(name) {} std::string name; std::string type; GameObject* parent; std::vector children; std::map> handlers; std::vector& GetChildren() { return this->children; } GameObject& Get(std::string name) { // NOTE(hippoz): This is a mess. // I should be using find_if, not a loop for (int i = this->children.size()-1; i >= 0; i--) { if (this->children[i]->name == name) { return *this->children[i]; } } } void Add(GameObject* gameObject) { this->children.push_back(gameObject); } }; void registerGameObject(lua_State* L) { luabridge::getGlobalNamespace (L) .beginNamespace ("Core") .beginClass ("GameObject") .addProperty ("name", &GameObject::name) .addFunction ("GetChildren", &GameObject::GetChildren) .addFunction ("Add", &GameObject::Add) .addFunction ("Get", &GameObject::Get) .endClass () .endNamespace (); } #endif