std::shared_ptr<GroupLevelObj> GroupLevelObj::from_prefab(const std::string& name) { try { PrefabFile prefab = PrefabFile::from_resource(name); std::shared_ptr<GroupLevelObj> group = std::make_shared<GroupLevelObj>(); group->m_name = name; for(auto it = prefab.get_objects().begin(); it != prefab.get_objects().end(); ++it) { LevelObjPtr obj = LevelObjFactory::create(*it); if (obj) { group->add_child(obj); } } group->set_overrides(prefab.get_overrides()); return group; } catch(const std::exception& err) { log_error(err.what()); return std::shared_ptr<GroupLevelObj>(); } }