{"action":"created","comment":{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/comments/67733574","id":67733574,"diff_hunk":"@@ -0,0 +1,172 @@\n+'use strict';\n+var Cesium = require('cesium');\n+var AttributeCompression = Cesium.AttributeCompression;\n+var Cartesian2 = Cesium.Cartesian2;\n+var DeveloperError = Cesium.DeveloperError;\n+var ShaderSource = Cesium.ShaderSource;\n+var WebGLConstants = Cesium.WebGLConstants;\n+var defined = Cesium.defined;\n+\n+var byteLengthForComponentType = require('./byteLengthForComponentType');\n+var findAccessorMinMax = require('./findAccessorMinMax');\n+var getAccessorByteStride = require('./getAccessorByteStride');\n+var numberOfComponentsForType = require('./numberOfComponentsForType');\n+var readBufferComponentType = require('./readBufferComponentType');\n+var writeBufferComponentType = require('./writeBufferComponentType');\n+var uninterleaveAndPackBuffers = require('./uninterleaveAndPackBuffers');\n+\n+module.exports = compressTextureCoordinates;\n+\n+function compressTextureCoordinates(gltf) {\n+    var accessors = gltf.accessors;\n+    var bufferViews = gltf.bufferViews;\n+    var buffers = gltf.buffers;\n+    var materials = gltf.materials;\n+    var techniques = gltf.techniques;\n+    var texCoordAccessors = getTextureCoordinateAccessors(gltf);\n+    var patchedTechniques = {};\n+    var patchedPrograms = {};\n+    for (var texCoordAccessorId in texCoordAccessors) {\n+        if (texCoordAccessors.hasOwnProperty(texCoordAccessorId)) {\n+            var accessor = accessors[texCoordAccessorId];\n+            var primitive = texCoordAccessors[texCoordAccessorId];\n+            if (canCompress(accessor, primitive)) {\n+                // Compress texture coordinates to a single float\n+                var bufferViewId = accessor.bufferView;\n+                var bufferView = bufferViews[bufferViewId];\n+                var bufferId = bufferView.buffer;\n+                var buffer = buffers[bufferId];\n+                var source = buffer.extras._pipeline.source;\n+                var byteStride = getAccessorByteStride(accessor);\n+                var byteOffset = accessor.byteOffset + bufferView.byteOffset;\n+                var componentType = accessor.componentType;\n+                var newComponentType = WebGLConstants.FLOAT;\n+                var componentByteLength = byteLengthForComponentType(componentType);\n+                var numElements = accessor.count;\n+                var numComponents = numberOfComponentsForType(accessor.type);\n+                for (var j = 0; j < numElements; j++) {\n+                    var elementArray = [];\n+                    for (var k = 0; k < numComponents; k++) {\n+                        var element = readBufferComponentType(source, componentType, byteOffset + componentByteLength * k);\n+                        elementArray.push(element);\n+                    }\n+                    var texCoord = Cartesian2.fromArray(elementArray);\n+                    var compressed = AttributeCompression.compressTextureCoordinates(texCoord);\n+                    writeBufferComponentType(source, newComponentType, compressed, byteOffset);\n+                    byteOffset += byteStride;\n+                }\n+                accessor.byteStride = byteStride;\n+                accessor.componentType = newComponentType;\n+                accessor.type = 'SCALAR';\n+                var minMax = findAccessorMinMax(gltf, accessor);\n+                accessor.min = minMax.min;\n+                accessor.max = minMax.max;\n+                var materialId = primitive.material;\n+                var material = materials[materialId];\n+                var techniqueId = material.technique;\n+                var attributeVariableName = patchedTechniques[techniqueId];\n+                if (!defined(patchedTechniques[techniqueId])) {\n+                    attributeVariableName = patchTechnique(gltf, techniqueId);\n+                    patchedTechniques[techniqueId] = attributeVariableName;\n+                }\n+                var technique = techniques[techniqueId];\n+                var programId = technique.program;\n+                if (!defined(patchedPrograms[programId])) {\n+                    patchProgram(gltf, programId, attributeVariableName);\n+                    patchedPrograms[programId] = true;\n+                }\n+            }\n+        }\n+    }\n+    uninterleaveAndPackBuffers(gltf);\n+}\n+\n+function canCompress(accessor) {\n+    return accessor.type === 'VEC2';\n+}\n+\n+function getTextureCoordinateAccessors(gltf) {","path":"lib/compressTextureCoordinates.js","position":88,"original_position":88,"commit_id":"1c8bc1cd5a39a4bc4ba61663c77c2a9a5da22eaf","original_commit_id":"1c8bc1cd5a39a4bc4ba61663c77c2a9a5da22eaf","user":{"login":"pjcozzi","id":782098,"avatar_url":"https://avatars.githubusercontent.com/u/782098?v=3","gravatar_id":"","url":"https://api.github.com/users/pjcozzi","html_url":"https://github.com/pjcozzi","followers_url":"https://api.github.com/users/pjcozzi/followers","following_url":"https://api.github.com/users/pjcozzi/following{/other_user}","gists_url":"https://api.github.com/users/pjcozzi/gists{/gist_id}","starred_url":"https://api.github.com/users/pjcozzi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pjcozzi/subscriptions","organizations_url":"https://api.github.com/users/pjcozzi/orgs","repos_url":"https://api.github.com/users/pjcozzi/repos","events_url":"https://api.github.com/users/pjcozzi/events{/privacy}","received_events_url":"https://api.github.com/users/pjcozzi/received_events","type":"User","site_admin":false},"body":"Actually, it could be more elegant and faster (by avoiding the intermediate data structure) to have this new function take a function that is called per accessor when it is discovered.  In general, I think helpers like this that help walk the glTF data structures could simplify a lot of code in gltf-pipeline.","created_at":"2016-06-20T17:45:31Z","updated_at":"2016-06-20T17:45:31Z","html_url":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline/pull/97#discussion_r67733574","pull_request_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/97","_links":{"self":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/comments/67733574"},"html":{"href":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline/pull/97#discussion_r67733574"},"pull_request":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/97"}}},"pull_request":{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/97","id":74457947,"html_url":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline/pull/97","diff_url":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline/pull/97.diff","patch_url":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline/pull/97.patch","issue_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/issues/97","number":97,"state":"open","locked":false,"title":"Add support for attribute compression","user":{"login":"lasalvavida","id":2489570,"avatar_url":"https://avatars.githubusercontent.com/u/2489570?v=3","gravatar_id":"","url":"https://api.github.com/users/lasalvavida","html_url":"https://github.com/lasalvavida","followers_url":"https://api.github.com/users/lasalvavida/followers","following_url":"https://api.github.com/users/lasalvavida/following{/other_user}","gists_url":"https://api.github.com/users/lasalvavida/gists{/gist_id}","starred_url":"https://api.github.com/users/lasalvavida/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lasalvavida/subscriptions","organizations_url":"https://api.github.com/users/lasalvavida/orgs","repos_url":"https://api.github.com/users/lasalvavida/repos","events_url":"https://api.github.com/users/lasalvavida/events{/privacy}","received_events_url":"https://api.github.com/users/lasalvavida/received_events","type":"User","site_admin":false},"body":"Currently this relies on Cesium resolving the built-in shader functions, so it won't work in other glTF engines. \r\n\r\nChanging the `includeBuiltIns` flag to true will fully resolve the shader source in the pipeline, making it compatible with other engines, but then if you use the model in Cesium you will get shader errors since it tries to add the functions in and they already exist. \r\n@pjcozzi Is that a bug in Cesium?","created_at":"2016-06-20T15:00:39Z","updated_at":"2016-06-20T17:45:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8808c06cd66c1bc3cd24571b490de8e5ffc94288","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/97/commits","review_comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/97/comments","review_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/comments{/number}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/issues/97/comments","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/statuses/1c8bc1cd5a39a4bc4ba61663c77c2a9a5da22eaf","head":{"label":"AnalyticalGraphicsInc:oct-encoding","ref":"oct-encoding","sha":"1c8bc1cd5a39a4bc4ba61663c77c2a9a5da22eaf","user":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"repo":{"id":46226879,"name":"gltf-pipeline","full_name":"AnalyticalGraphicsInc/gltf-pipeline","owner":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline","description":"Content pipeline tools for optimizing glTF assets. :globe_with_meridians:","fork":false,"url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline","forks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/forks","keys_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/teams","hooks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/hooks","issue_events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/issues/events{/number}","events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/events","assignees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/assignees{/user}","branches_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/branches{/branch}","tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/tags","blobs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/git/refs{/sha}","trees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/statuses/{sha}","languages_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/languages","stargazers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/stargazers","contributors_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/contributors","subscribers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/subscribers","subscription_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/subscription","commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/commits{/sha}","git_commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/git/commits{/sha}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/comments{/number}","issue_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/issues/comments{/number}","contents_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/contents/{+path}","compare_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/merges","archive_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/downloads","issues_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/issues{/number}","pulls_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls{/number}","milestones_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/milestones{/number}","notifications_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/labels{/name}","releases_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/releases{/id}","deployments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/deployments","created_at":"2015-11-15T17:00:20Z","updated_at":"2016-06-17T12:15:35Z","pushed_at":"2016-06-20T17:42:33Z","git_url":"git://github.com/AnalyticalGraphicsInc/gltf-pipeline.git","ssh_url":"git@github.com:AnalyticalGraphicsInc/gltf-pipeline.git","clone_url":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline.git","svn_url":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline","homepage":"","size":7758,"stargazers_count":17,"watchers_count":17,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":15,"forks":4,"open_issues":15,"watchers":17,"default_branch":"master"}},"base":{"label":"AnalyticalGraphicsInc:master","ref":"master","sha":"509f37ff34118fc3b8e1898d61382fd0f00157bb","user":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"repo":{"id":46226879,"name":"gltf-pipeline","full_name":"AnalyticalGraphicsInc/gltf-pipeline","owner":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline","description":"Content pipeline tools for optimizing glTF assets. :globe_with_meridians:","fork":false,"url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline","forks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/forks","keys_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/teams","hooks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/hooks","issue_events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/issues/events{/number}","events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/events","assignees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/assignees{/user}","branches_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/branches{/branch}","tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/tags","blobs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/git/refs{/sha}","trees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/statuses/{sha}","languages_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/languages","stargazers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/stargazers","contributors_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/contributors","subscribers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/subscribers","subscription_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/subscription","commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/commits{/sha}","git_commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/git/commits{/sha}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/comments{/number}","issue_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/issues/comments{/number}","contents_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/contents/{+path}","compare_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/merges","archive_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/downloads","issues_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/issues{/number}","pulls_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls{/number}","milestones_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/milestones{/number}","notifications_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/labels{/name}","releases_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/releases{/id}","deployments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/deployments","created_at":"2015-11-15T17:00:20Z","updated_at":"2016-06-17T12:15:35Z","pushed_at":"2016-06-20T17:42:33Z","git_url":"git://github.com/AnalyticalGraphicsInc/gltf-pipeline.git","ssh_url":"git@github.com:AnalyticalGraphicsInc/gltf-pipeline.git","clone_url":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline.git","svn_url":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline","homepage":"","size":7758,"stargazers_count":17,"watchers_count":17,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":15,"forks":4,"open_issues":15,"watchers":17,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/97"},"html":{"href":"https://github.com/AnalyticalGraphicsInc/gltf-pipeline/pull/97"},"issue":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/issues/97"},"comments":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/issues/97/comments"},"review_comments":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/97/comments"},"review_comment":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/pulls/97/commits"},"statuses":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/gltf-pipeline/statuses/1c8bc1cd5a39a4bc4ba61663c77c2a9a5da22eaf"}}}}
{"actor":{"display_login":"pjcozzi"}}