{"action":"created","comment":{"url":"https://api.github.com/repos/UPBGE/blender/pulls/comments/217376258","pull_request_review_id":155071866,"id":217376258,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNzM3NjI1OA==","diff_hunk":"@@ -374,270 +382,175 @@ KX_LibLoadStatus *BL_Converter::LinkBlendFile(BlendHandle *blendlib, const char\n \t}\n \n \tmain_newlib = BKE_main_new();\n+\tBLI_strncpy(main_newlib->name, path, sizeof(main_newlib->name));\n \tBKE_reports_init(&reports, RPT_STORE);\n \n-\tshort flag = 0; // don't need any special options\n-\t// created only for linking, then freed\n+\t// Don't need any special options.\n+\tconst short flag = 0;\n+\t// Created only for linking, then freed.\n \tMain *main_tmp = BLO_library_link_begin(main_newlib, &blendlib, (char *)path);\n \n \tload_datablocks(main_tmp, blendlib, path, idcode);\n \n-\tif (idcode == ID_SCE && options & LIB_LOAD_LOAD_SCRIPTS) {\n-\t\tload_datablocks(main_tmp, blendlib, path, ID_TXT);\n-\t}\n-\n-\t// now do another round of linking for Scenes so all actions are properly loaded\n-\tif (idcode == ID_SCE && options & LIB_LOAD_LOAD_ACTIONS) {\n-\t\tload_datablocks(main_tmp, blendlib, path, ID_AC);\n+\t// In case of scene, optionally link texts and actions.\n+\tif (idcode == ID_SCE) {\n+\t\tif (options & LIB_LOAD_LOAD_SCRIPTS) {\n+\t\t\tload_datablocks(main_tmp, blendlib, path, ID_TXT);\n+\t\t}\n+\t\tif (options & LIB_LOAD_LOAD_ACTIONS) {\n+\t\t\tload_datablocks(main_tmp, blendlib, path, ID_AC);\n+\t\t}\n \t}\n \n \tBLO_library_link_end(main_tmp, &blendlib, flag, nullptr, nullptr);\n-\n \tBLO_blendhandle_close(blendlib);\n-\n \tBKE_reports_clear(&reports);\n-\t// done linking\n \n-\t// needed for lookups\n-\tm_DynamicMaggie.push_back(main_newlib);\n-\tBLI_strncpy(main_newlib->name, path, sizeof(main_newlib->name));\n-\n-\n-\tstatus = new KX_LibLoadStatus(this, m_ketsjiEngine, scene_merge, path);\n-\n-\tif (idcode == ID_ME) {\n-\t\t// Convert all new meshes into BGE meshes\n-\t\tID *mesh;\n+\t// Linking done.\n \n-\t\tBL_SceneConverter sceneConverter(scene_merge);\n-\t\tfor (mesh = (ID *)main_newlib->mesh.first; mesh; mesh = (ID *)mesh->next) {\n-\t\t\tif (options & LIB_LOAD_VERBOSE) {\n-\t\t\t\tCM_Debug(\"mesh name: \" << mesh->name + 2);\n-\t\t\t}\n-\t\t\tKX_Mesh *meshobj = BL_ConvertMesh((Mesh *)mesh, nullptr, scene_merge, sceneConverter);\n-\t\t\tscene_merge->GetLogicManager()->RegisterMeshName(meshobj->GetName(), meshobj);\n-\t\t}\n-\n-\t\tMergeSceneData(scene_merge, sceneConverter);\n-\t\tFinalizeSceneData(sceneConverter);\n-\t}\n-\telse if (idcode == ID_AC) {\n-\t\t// Convert all actions\n-\t\tID *action;\n+\tKX_LibLoadStatus *status = new KX_LibLoadStatus(this, m_ketsjiEngine, scene_merge, path);\n \n-\t\tfor (action = (ID *)main_newlib->action.first; action; action = (ID *)action->next) {\n-\t\t\tif (options & LIB_LOAD_VERBOSE) {\n-\t\t\t\tCM_Debug(\"action name: \" << action->name + 2);\n+\tswitch (idcode) {\n+\t\tcase ID_ME:\n+\t\t{\n+\t\t\tBL_SceneConverter sceneConverter(scene_merge, (uintptr_t)main_newlib);","path":"source/gameengine/Converter/BL_Converter.cpp","position":336,"original_position":336,"commit_id":"d342ac2380081a246c2aac6f2af3ecf17eba6265","original_commit_id":"d342ac2380081a246c2aac6f2af3ecf17eba6265","user":{"login":"panzergame","id":8046004,"node_id":"MDQ6VXNlcjgwNDYwMDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/8046004?v=4","gravatar_id":"","url":"https://api.github.com/users/panzergame","html_url":"https://github.com/panzergame","followers_url":"https://api.github.com/users/panzergame/followers","following_url":"https://api.github.com/users/panzergame/following{/other_user}","gists_url":"https://api.github.com/users/panzergame/gists{/gist_id}","starred_url":"https://api.github.com/users/panzergame/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/panzergame/subscriptions","organizations_url":"https://api.github.com/users/panzergame/orgs","repos_url":"https://api.github.com/users/panzergame/repos","events_url":"https://api.github.com/users/panzergame/events{/privacy}","received_events_url":"https://api.github.com/users/panzergame/received_events","type":"User","site_admin":false},"body":"Note: create a `libraryId` instead repeating `(uintptr_t)main_newlib`.","created_at":"2018-09-13T13:09:08Z","updated_at":"2018-09-13T13:09:08Z","html_url":"https://github.com/UPBGE/blender/pull/824#discussion_r217376258","pull_request_url":"https://api.github.com/repos/UPBGE/blender/pulls/824","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/UPBGE/blender/pulls/comments/217376258"},"html":{"href":"https://github.com/UPBGE/blender/pull/824#discussion_r217376258"},"pull_request":{"href":"https://api.github.com/repos/UPBGE/blender/pulls/824"}}},"pull_request":{"url":"https://api.github.com/repos/UPBGE/blender/pulls/824","id":213690348,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEzNjkwMzQ4","html_url":"https://github.com/UPBGE/blender/pull/824","diff_url":"https://github.com/UPBGE/blender/pull/824.diff","patch_url":"https://github.com/UPBGE/blender/pull/824.patch","issue_url":"https://api.github.com/repos/UPBGE/blender/issues/824","number":824,"state":"open","locked":false,"title":"UPBGE: Fix issues on LibFree/LibLoad.","user":{"login":"panzergame","id":8046004,"node_id":"MDQ6VXNlcjgwNDYwMDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/8046004?v=4","gravatar_id":"","url":"https://api.github.com/users/panzergame","html_url":"https://github.com/panzergame","followers_url":"https://api.github.com/users/panzergame/followers","following_url":"https://api.github.com/users/panzergame/following{/other_user}","gists_url":"https://api.github.com/users/panzergame/gists{/gist_id}","starred_url":"https://api.github.com/users/panzergame/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/panzergame/subscriptions","organizations_url":"https://api.github.com/users/panzergame/orgs","repos_url":"https://api.github.com/users/panzergame/repos","events_url":"https://api.github.com/users/panzergame/events{/privacy}","received_events_url":"https://api.github.com/users/panzergame/received_events","type":"User","site_admin":false},"body":"The issue #805 reported a bug relative to LibLoad and LibFree. This bug is\r\nreproduced by using two scenes which both use meshes without material (so using\r\ndefmaterial) and the first scene LibLoad and merge the second. What is happening\r\nis that the new created scene will contain a RAS_MaterialBucket of defmaterial\r\nwhich is also used by the host scene, but defmaterial is not owned by any file\r\nas it's a global default material.\r\nThe technique used by LibFree was to tag all ID structs (data, e.g Mesh,\r\nMaterial, Object) of a Main (the file loaded) and remove them from scenes and\r\nusers. In the situation of defmaterial, this struct is never tagged and so never\r\nremoved during LibFree. This resulted in a material always existing but all the\r\nlight objects used were removed and the function GPU_material_update_lamps\r\ncalled in material preparation before rendering raise an illegal memory access\r\nas it was iterating on freed lamps.\r\n\r\nTo solve this issue we have to find a way to remove all game engine data that\r\nwere created during the scene conversion of a libloaded scene. And the minor\r\ntask is avoiding end up with only a part of scene materials using all the lights\r\npresent.\r\n\r\nThe first point is solved by the introduction of a ressource base class:\r\nBL_Ressource. The goal of this class is to store an identifier of the library\r\nsource of converted data. This identifier is an opaque intptr_t and the function\r\nBL_Ressource::Belong(intptr_t) return true when the passed library identifier\r\nmatch the one of the ressource.\r\nThe classes inheriting from BL_Ressource are:\r\n- BL_ConvertObjectInfo\r\n- KX_Mesh\r\n- KX_BlenderMaterial\r\n- BL_ActionData\r\n\r\nThis last class is used to wrap bAction and link the BL_ScalarInterpolator of\r\nthe action. All the actions are converted and registered during scene conversion\r\nas the cost is negligeable.\r\nAll these ressource types are registered in BL_SceneConverter where all\r\nregistering function set the library identifier from the one passed to\r\nBL_SceneConverter constructor. From LinkBlendFile, ConvertMeshSpecial and\r\nConvertScene(KX_Scene *scene) (the functions creating a scene converter)\r\nBL_SceneConverter is created using as library identifier the Main pointer of the\r\ncurrent file or the loaded file, this way we also ensure that all linked data of\r\na file will be owned by the same library. Other than that the loading changed by\r\nthe call of the function ReloadShaders to reload all shaders of a merged scene:\r\nthe new and old shaders, to benefit of all existing lights.\r\n\r\nConcerning LibFree, the first modification is to delay the free to the end of\r\nthe frame instead doing it instantly. To achieve it, FreeBlendFile(const\r\nstd::string& path) stores the library path to free in m_freeQueue if the library\r\nexists and the function ProcessScheduledLibraries process the merging of the\r\nlibloads and the free of libraries, this final function is called in\r\nKX_KetsjiEngine::NextFrame at the end of each logic frame.\r\nThe actual library free takes place in FreeBlendFileData. It iterates over all\r\nscenes and objects, if the object convert object info belongs to the free\r\nlibrary the object is removed else KX_GameObject::RemoveRessources is called.\r\nFinally the materials, meshes and actions of the library are removed from scene\r\ndata slots (m_sceneSlots). KX_GameObject::RemoveRessources is removing all the\r\nmeshes that belong to the library or using materials from the library, and do\r\nthe same for actions currently played.\r\nPreviously BL_ActionManager was also impacted by LibFree as it was using\r\nbAction, now the actuator is using a action name to remove this complexity when\r\nfreeing an action.\r\n\r\nShader are now recompiled when merging and freeing a library to ensure that the\r\nlights are properly used, the function BL_Covnerter::ReloadShaders is dedicated\r\nfor and call KX_BlenderMaterial::ReloadMaterial that can reload the shader or\r\ncreate a new one if it wasn't initialized.\r\n\r\nFix issue: #805","created_at":"2018-09-06T17:15:37Z","updated_at":"2018-09-13T13:09:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b9d1bf097bd5f1e4110d88a2a2274063fca5948a","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/UPBGE/blender/pulls/824/commits","review_comments_url":"https://api.github.com/repos/UPBGE/blender/pulls/824/comments","review_comment_url":"https://api.github.com/repos/UPBGE/blender/pulls/comments{/number}","comments_url":"https://api.github.com/repos/UPBGE/blender/issues/824/comments","statuses_url":"https://api.github.com/repos/UPBGE/blender/statuses/d342ac2380081a246c2aac6f2af3ecf17eba6265","head":{"label":"UPBGE:ge_bug_fix_805","ref":"ge_bug_fix_805","sha":"d342ac2380081a246c2aac6f2af3ecf17eba6265","user":{"login":"UPBGE","id":16006310,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2MDA2MzEw","avatar_url":"https://avatars3.githubusercontent.com/u/16006310?v=4","gravatar_id":"","url":"https://api.github.com/users/UPBGE","html_url":"https://github.com/UPBGE","followers_url":"https://api.github.com/users/UPBGE/followers","following_url":"https://api.github.com/users/UPBGE/following{/other_user}","gists_url":"https://api.github.com/users/UPBGE/gists{/gist_id}","starred_url":"https://api.github.com/users/UPBGE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/UPBGE/subscriptions","organizations_url":"https://api.github.com/users/UPBGE/orgs","repos_url":"https://api.github.com/users/UPBGE/repos","events_url":"https://api.github.com/users/UPBGE/events{/privacy}","received_events_url":"https://api.github.com/users/UPBGE/received_events","type":"Organization","site_admin":false},"repo":{"id":46817566,"node_id":"MDEwOlJlcG9zaXRvcnk0NjgxNzU2Ng==","name":"blender","full_name":"UPBGE/blender","owner":{"login":"UPBGE","id":16006310,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2MDA2MzEw","avatar_url":"https://avatars3.githubusercontent.com/u/16006310?v=4","gravatar_id":"","url":"https://api.github.com/users/UPBGE","html_url":"https://github.com/UPBGE","followers_url":"https://api.github.com/users/UPBGE/followers","following_url":"https://api.github.com/users/UPBGE/following{/other_user}","gists_url":"https://api.github.com/users/UPBGE/gists{/gist_id}","starred_url":"https://api.github.com/users/UPBGE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/UPBGE/subscriptions","organizations_url":"https://api.github.com/users/UPBGE/orgs","repos_url":"https://api.github.com/users/UPBGE/repos","events_url":"https://api.github.com/users/UPBGE/events{/privacy}","received_events_url":"https://api.github.com/users/UPBGE/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/UPBGE/blender","description":"Uchronia Project Blender Game Engine fork of Blender Game Engine","fork":false,"url":"https://api.github.com/repos/UPBGE/blender","forks_url":"https://api.github.com/repos/UPBGE/blender/forks","keys_url":"https://api.github.com/repos/UPBGE/blender/keys{/key_id}","collaborators_url":"https://api.github.com/repos/UPBGE/blender/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/UPBGE/blender/teams","hooks_url":"https://api.github.com/repos/UPBGE/blender/hooks","issue_events_url":"https://api.github.com/repos/UPBGE/blender/issues/events{/number}","events_url":"https://api.github.com/repos/UPBGE/blender/events","assignees_url":"https://api.github.com/repos/UPBGE/blender/assignees{/user}","branches_url":"https://api.github.com/repos/UPBGE/blender/branches{/branch}","tags_url":"https://api.github.com/repos/UPBGE/blender/tags","blobs_url":"https://api.github.com/repos/UPBGE/blender/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/UPBGE/blender/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/UPBGE/blender/git/refs{/sha}","trees_url":"https://api.github.com/repos/UPBGE/blender/git/trees{/sha}","statuses_url":"https://api.github.com/repos/UPBGE/blender/statuses/{sha}","languages_url":"https://api.github.com/repos/UPBGE/blender/languages","stargazers_url":"https://api.github.com/repos/UPBGE/blender/stargazers","contributors_url":"https://api.github.com/repos/UPBGE/blender/contributors","subscribers_url":"https://api.github.com/repos/UPBGE/blender/subscribers","subscription_url":"https://api.github.com/repos/UPBGE/blender/subscription","commits_url":"https://api.github.com/repos/UPBGE/blender/commits{/sha}","git_commits_url":"https://api.github.com/repos/UPBGE/blender/git/commits{/sha}","comments_url":"https://api.github.com/repos/UPBGE/blender/comments{/number}","issue_comment_url":"https://api.github.com/repos/UPBGE/blender/issues/comments{/number}","contents_url":"https://api.github.com/repos/UPBGE/blender/contents/{+path}","compare_url":"https://api.github.com/repos/UPBGE/blender/compare/{base}...{head}","merges_url":"https://api.github.com/repos/UPBGE/blender/merges","archive_url":"https://api.github.com/repos/UPBGE/blender/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/UPBGE/blender/downloads","issues_url":"https://api.github.com/repos/UPBGE/blender/issues{/number}","pulls_url":"https://api.github.com/repos/UPBGE/blender/pulls{/number}","milestones_url":"https://api.github.com/repos/UPBGE/blender/milestones{/number}","notifications_url":"https://api.github.com/repos/UPBGE/blender/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/UPBGE/blender/labels{/name}","releases_url":"https://api.github.com/repos/UPBGE/blender/releases{/id}","deployments_url":"https://api.github.com/repos/UPBGE/blender/deployments","created_at":"2015-11-24T20:45:21Z","updated_at":"2018-09-13T12:48:18Z","pushed_at":"2018-09-13T03:45:23Z","git_url":"git://github.com/UPBGE/blender.git","ssh_url":"git@github.com:UPBGE/blender.git","clone_url":"https://github.com/UPBGE/blender.git","svn_url":"https://github.com/UPBGE/blender","homepage":"https://upbge.org","size":353793,"stargazers_count":157,"watchers_count":157,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":44,"mirror_url":null,"archived":false,"open_issues_count":128,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":44,"open_issues":128,"watchers":157,"default_branch":"master"}},"base":{"label":"UPBGE:master","ref":"master","sha":"1959ed29d85f00e76bcf35592cdef455aafc4d0a","user":{"login":"UPBGE","id":16006310,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2MDA2MzEw","avatar_url":"https://avatars3.githubusercontent.com/u/16006310?v=4","gravatar_id":"","url":"https://api.github.com/users/UPBGE","html_url":"https://github.com/UPBGE","followers_url":"https://api.github.com/users/UPBGE/followers","following_url":"https://api.github.com/users/UPBGE/following{/other_user}","gists_url":"https://api.github.com/users/UPBGE/gists{/gist_id}","starred_url":"https://api.github.com/users/UPBGE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/UPBGE/subscriptions","organizations_url":"https://api.github.com/users/UPBGE/orgs","repos_url":"https://api.github.com/users/UPBGE/repos","events_url":"https://api.github.com/users/UPBGE/events{/privacy}","received_events_url":"https://api.github.com/users/UPBGE/received_events","type":"Organization","site_admin":false},"repo":{"id":46817566,"node_id":"MDEwOlJlcG9zaXRvcnk0NjgxNzU2Ng==","name":"blender","full_name":"UPBGE/blender","owner":{"login":"UPBGE","id":16006310,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2MDA2MzEw","avatar_url":"https://avatars3.githubusercontent.com/u/16006310?v=4","gravatar_id":"","url":"https://api.github.com/users/UPBGE","html_url":"https://github.com/UPBGE","followers_url":"https://api.github.com/users/UPBGE/followers","following_url":"https://api.github.com/users/UPBGE/following{/other_user}","gists_url":"https://api.github.com/users/UPBGE/gists{/gist_id}","starred_url":"https://api.github.com/users/UPBGE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/UPBGE/subscriptions","organizations_url":"https://api.github.com/users/UPBGE/orgs","repos_url":"https://api.github.com/users/UPBGE/repos","events_url":"https://api.github.com/users/UPBGE/events{/privacy}","received_events_url":"https://api.github.com/users/UPBGE/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/UPBGE/blender","description":"Uchronia Project Blender Game Engine fork of Blender Game Engine","fork":false,"url":"https://api.github.com/repos/UPBGE/blender","forks_url":"https://api.github.com/repos/UPBGE/blender/forks","keys_url":"https://api.github.com/repos/UPBGE/blender/keys{/key_id}","collaborators_url":"https://api.github.com/repos/UPBGE/blender/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/UPBGE/blender/teams","hooks_url":"https://api.github.com/repos/UPBGE/blender/hooks","issue_events_url":"https://api.github.com/repos/UPBGE/blender/issues/events{/number}","events_url":"https://api.github.com/repos/UPBGE/blender/events","assignees_url":"https://api.github.com/repos/UPBGE/blender/assignees{/user}","branches_url":"https://api.github.com/repos/UPBGE/blender/branches{/branch}","tags_url":"https://api.github.com/repos/UPBGE/blender/tags","blobs_url":"https://api.github.com/repos/UPBGE/blender/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/UPBGE/blender/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/UPBGE/blender/git/refs{/sha}","trees_url":"https://api.github.com/repos/UPBGE/blender/git/trees{/sha}","statuses_url":"https://api.github.com/repos/UPBGE/blender/statuses/{sha}","languages_url":"https://api.github.com/repos/UPBGE/blender/languages","stargazers_url":"https://api.github.com/repos/UPBGE/blender/stargazers","contributors_url":"https://api.github.com/repos/UPBGE/blender/contributors","subscribers_url":"https://api.github.com/repos/UPBGE/blender/subscribers","subscription_url":"https://api.github.com/repos/UPBGE/blender/subscription","commits_url":"https://api.github.com/repos/UPBGE/blender/commits{/sha}","git_commits_url":"https://api.github.com/repos/UPBGE/blender/git/commits{/sha}","comments_url":"https://api.github.com/repos/UPBGE/blender/comments{/number}","issue_comment_url":"https://api.github.com/repos/UPBGE/blender/issues/comments{/number}","contents_url":"https://api.github.com/repos/UPBGE/blender/contents/{+path}","compare_url":"https://api.github.com/repos/UPBGE/blender/compare/{base}...{head}","merges_url":"https://api.github.com/repos/UPBGE/blender/merges","archive_url":"https://api.github.com/repos/UPBGE/blender/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/UPBGE/blender/downloads","issues_url":"https://api.github.com/repos/UPBGE/blender/issues{/number}","pulls_url":"https://api.github.com/repos/UPBGE/blender/pulls{/number}","milestones_url":"https://api.github.com/repos/UPBGE/blender/milestones{/number}","notifications_url":"https://api.github.com/repos/UPBGE/blender/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/UPBGE/blender/labels{/name}","releases_url":"https://api.github.com/repos/UPBGE/blender/releases{/id}","deployments_url":"https://api.github.com/repos/UPBGE/blender/deployments","created_at":"2015-11-24T20:45:21Z","updated_at":"2018-09-13T12:48:18Z","pushed_at":"2018-09-13T03:45:23Z","git_url":"git://github.com/UPBGE/blender.git","ssh_url":"git@github.com:UPBGE/blender.git","clone_url":"https://github.com/UPBGE/blender.git","svn_url":"https://github.com/UPBGE/blender","homepage":"https://upbge.org","size":353793,"stargazers_count":157,"watchers_count":157,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":44,"mirror_url":null,"archived":false,"open_issues_count":128,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":44,"open_issues":128,"watchers":157,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/UPBGE/blender/pulls/824"},"html":{"href":"https://github.com/UPBGE/blender/pull/824"},"issue":{"href":"https://api.github.com/repos/UPBGE/blender/issues/824"},"comments":{"href":"https://api.github.com/repos/UPBGE/blender/issues/824/comments"},"review_comments":{"href":"https://api.github.com/repos/UPBGE/blender/pulls/824/comments"},"review_comment":{"href":"https://api.github.com/repos/UPBGE/blender/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/UPBGE/blender/pulls/824/commits"},"statuses":{"href":"https://api.github.com/repos/UPBGE/blender/statuses/d342ac2380081a246c2aac6f2af3ecf17eba6265"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"panzergame"}}