{"action":"created","comment":{"url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/comments/185295237","pull_request_review_id":116643472,"id":185295237,"diff_hunk":"@@ -0,0 +1,217 @@\n+﻿namespace VRTK.Core.Tracking.Follow\r\n+{\r\n+    using UnityEngine;\r\n+    using UnityEngine.Events;\r\n+    using System;\r\n+    using VRTK.Core.Data.Attribute;\r\n+    using VRTK.Core.Data.Enum;\r\n+    using VRTK.Core.Process;\r\n+    using VRTK.Core.Tracking.Follow.Modifier;\r\n+\r\n+    /// <summary>\r\n+    /// The ObjectFollow mirrors the transform properties of another object based on the given FollowModifier.\r\n+    /// </summary>\r\n+    public class ObjectFollow : SourceTargetProcessor\r\n+    {\r\n+        [Header(\"Object Follow Settings\")]\r\n+\r\n+        [UnityFlag]\r\n+        [Tooltip(\"The transform properties to follow.\")]\r\n+        public TransformProperties follow;\r\n+        [Tooltip(\"The follow modifier mechanic to apply.\")]\r\n+        public FollowModifier followModifier = null;\r\n+\r\n+        /// <summary>\r\n+        /// The ObjectFollowUnityEvent emits an event with a source Transform and a target Transform.\r\n+        /// </summary>\r\n+        [Serializable]\r\n+        public class ObjectFollowUnityEvent : UnityEvent<Transform, Transform> { };\r\n+\r\n+        [Header(\"Object Follow Events\")]\r\n+\r\n+        /// <summary>\r\n+        /// The BeforeProcessed event is emitted before any processing.\r\n+        /// </summary>\r\n+        public ObjectFollowUnityEvent BeforeProcessed;\r\n+        /// <summary>\r\n+        /// The AfterProcessed event is emitted after all processing is complete.\r\n+        /// </summary>\r\n+        public ObjectFollowUnityEvent AfterProcessed;\r\n+        /// <summary>\r\n+        /// The BeforeTransformUpdated event is emitted before the Transform is updated.\r\n+        /// </summary>\r\n+        public ObjectFollowUnityEvent BeforeTransformUpdated;\r\n+        /// <summary>\r\n+        /// The AfterTransformUpdated event is emitted after the Transform is updated.\r\n+        /// </summary>\r\n+        public ObjectFollowUnityEvent AfterTransformUpdated;\r\n+        /// <summary>\r\n+        /// The BeforePositionUpdated event is emitted before the Transform's position is updated.\r\n+        /// </summary>\r\n+        public ObjectFollowUnityEvent BeforePositionUpdated;\r\n+        /// <summary>\r\n+        /// The AfterPositionUpdated event is emitted after the Transform's position is updated.\r\n+        /// </summary>\r\n+        public ObjectFollowUnityEvent AfterPositionUpdated;\r\n+        /// <summary>\r\n+        /// The BeforeRotationUpdated event is emitted before the Transform's rotation is updated.\r\n+        /// </summary>\r\n+        public ObjectFollowUnityEvent BeforeRotationUpdated;\r\n+        /// <summary>\r\n+        /// The AfterRotationUpdated event is emitted after the Transform's rotation is updated.\r\n+        /// </summary>\r\n+        public ObjectFollowUnityEvent AfterRotationUpdated;\r\n+        /// <summary>\r\n+        /// The BeforeScaleUpdated event is emitted before the Transform's scale is updated.\r\n+        /// </summary>\r\n+        public ObjectFollowUnityEvent BeforeScaleUpdated;\r\n+        /// <summary>\r\n+        /// The AfterScaleUpdated event is emitted after the Transform's scale is updated.\r\n+        /// </summary>\r\n+        public ObjectFollowUnityEvent AfterScaleUpdated;\r\n+\r\n+        /// <summary>\r\n+        /// The Process method executes the relevant process on the given FollowModifier.\r\n+        /// </summary>\r\n+        public override void Process()\r\n+        {\r\n+            OnBeforeProcessed();\r\n+            if (followModifier.ProcessFirstAndActiveOnly())\r\n+            {\r\n+                ProcessFirstActiveComponent();\r\n+            }\r\n+            else\r\n+            {\r\n+                ProcessAllComponents();\r\n+            }\r\n+            OnAfterProcessed();\r\n+        }\r\n+\r\n+        protected virtual void OnBeforeProcessed()\r\n+        {\r\n+            BeforeProcessed?.Invoke(null, null);\r\n+        }\r\n+\r\n+        protected virtual void OnAfterProcessed()\r\n+        {\r\n+            AfterProcessed?.Invoke(null, null);\r\n+        }\r\n+\r\n+        protected virtual void OnBeforeTransformUpdated(Transform source, Transform target)\r\n+        {\r\n+            BeforeTransformUpdated?.Invoke(source, target);\r\n+        }\r\n+\r\n+        protected virtual void OnAfterTransformUpdated(Transform source, Transform target)\r\n+        {\r\n+            AfterTransformUpdated?.Invoke(source, target);\r\n+        }\r\n+\r\n+        protected virtual void OnBeforePositionUpdated(Transform source, Transform target)\r\n+        {\r\n+            BeforePositionUpdated?.Invoke(source, target);\r\n+        }\r\n+\r\n+        protected virtual void OnAfterPositionUpdated(Transform source, Transform target)\r\n+        {\r\n+            AfterPositionUpdated?.Invoke(source, target);\r\n+        }\r\n+\r\n+        protected virtual void OnBeforeRotationUpdated(Transform source, Transform target)\r\n+        {\r\n+            BeforeRotationUpdated?.Invoke(source, target);\r\n+        }\r\n+\r\n+        protected virtual void OnAfterRotationUpdated(Transform source, Transform target)\r\n+        {\r\n+            AfterRotationUpdated?.Invoke(source, target);\r\n+        }\r\n+\r\n+        protected virtual void OnBeforeScaleUpdated(Transform source, Transform target)\r\n+        {\r\n+            BeforeScaleUpdated?.Invoke(source, target);\r\n+        }\r\n+\r\n+        protected virtual void OnAfterScaleUpdated(Transform source, Transform target)\r\n+        {\r\n+            AfterScaleUpdated?.Invoke(source, target);\r\n+        }\r\n+\r\n+        /// <summary>\r\n+        /// The ProcessComponent method applies the transformations on the source Transform using the taget Transform.\r\n+        /// </summary>\r\n+        /// <param name=\"source\">The source Component that is a Transform.</param>\r\n+        /// <param name=\"target\">The target Component that is a Transform.</param>\r\n+        protected override void ProcessComponent(Component source, Component target)\r\n+        {\r\n+            Transform sourceTransform = GetTransformFromComponent(source);\r\n+            Transform targetTransform = GetTransformFromComponent(target);\r\n+\r\n+            if (followModifier != null)\r\n+            {\r\n+                OnBeforeTransformUpdated(sourceTransform, targetTransform);\r\n+\r\n+                UpdateScale(sourceTransform, targetTransform);\r\n+                UpdateRotation(sourceTransform, targetTransform);\r\n+                UpdatePosition(sourceTransform, targetTransform);\r\n+\r\n+                OnAfterTransformUpdated(sourceTransform, targetTransform);\r\n+            }\r\n+        }\r\n+\r\n+        /// <summary>\r\n+        /// The UpdatePosition method executes the specified FollowModifier's UpdatePosition method.\r\n+        /// </summary>\r\n+        /// <param name=\"sourceTransform\">The source Transform to apply the FollowModifier on.</param>\r\n+        /// <param name=\"targetTransform\">The target Transform to apply the FollowModifier with.</param>\r\n+        protected virtual void UpdatePosition(Transform sourceTransform, Transform targetTransform)\r\n+        {\r\n+            if (follow.HasFlag(TransformProperties.Position))\r\n+            {\r\n+                OnBeforePositionUpdated(sourceTransform, targetTransform);\r\n+                followModifier.UpdatePosition(sourceTransform, targetTransform);\r\n+                OnAfterPositionUpdated(sourceTransform, targetTransform);\r\n+            }\r\n+        }\r\n+\r\n+        /// <summary>\r\n+        /// The UpdateRotation method executes the specified FollowModifier's UpdateRotation method.\r\n+        /// </summary>\r\n+        /// <param name=\"sourceTransform\">The source Transform to apply the FollowModifier on.</param>\r\n+        /// <param name=\"targetTransform\">The target Transform to apply the FollowModifier with.</param>\r\n+        protected virtual void UpdateRotation(Transform sourceTransform, Transform targetTransform)\r\n+        {\r\n+            if (follow.HasFlag(TransformProperties.Rotation))\r\n+            {\r\n+                OnBeforeRotationUpdated(sourceTransform, targetTransform);\r\n+                followModifier.UpdateRotation(sourceTransform, targetTransform);\r\n+                OnAfterRotationUpdated(sourceTransform, targetTransform);\r\n+            }\r\n+        }\r\n+\r\n+        /// <summary>\r\n+        /// The UpdateScale method executes the specified FollowModifier's UpdateScale method.\r\n+        /// </summary>\r\n+        /// <param name=\"sourceTransform\">The source Transform to apply the FollowModifier on.</param>\r\n+        /// <param name=\"targetTransform\">The target Transform to apply the FollowModifier with.</param>\r\n+        protected virtual void UpdateScale(Transform sourceTransform, Transform targetTransform)\r\n+        {\r\n+            if (follow.HasFlag(TransformProperties.Scale))\r\n+            {\r\n+                OnBeforeScaleUpdated(sourceTransform, targetTransform);\r\n+                followModifier.UpdateScale(sourceTransform, targetTransform);\r\n+                OnAfterScaleUpdated(sourceTransform, targetTransform);\r\n+            }\r\n+        }\r\n+\r\n+        /// <summary>\r\n+        /// The GetTransformFromComponent method attempts to retrieve the Transform from a given Component.\r\n+        /// </summary>\r\n+        /// <param name=\"component\">The Component to retrieve the Transform from.</param>\r\n+        /// <returns>A Transform if one exists on the given Component.</returns>\r\n+        protected virtual Transform GetTransformFromComponent(Component component)\r","path":"Scripts/Tracking/Follow/ObjectFollow.cs","position":212,"original_position":212,"commit_id":"14c0cdc4b96768843ae9f95b733ef1f22bbfbaf3","original_commit_id":"14c0cdc4b96768843ae9f95b733ef1f22bbfbaf3","user":{"login":"bddckr","id":294347,"avatar_url":"https://avatars0.githubusercontent.com/u/294347?v=4","gravatar_id":"","url":"https://api.github.com/users/bddckr","html_url":"https://github.com/bddckr","followers_url":"https://api.github.com/users/bddckr/followers","following_url":"https://api.github.com/users/bddckr/following{/other_user}","gists_url":"https://api.github.com/users/bddckr/gists{/gist_id}","starred_url":"https://api.github.com/users/bddckr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bddckr/subscriptions","organizations_url":"https://api.github.com/users/bddckr/orgs","repos_url":"https://api.github.com/users/bddckr/repos","events_url":"https://api.github.com/users/bddckr/events{/privacy}","received_events_url":"https://api.github.com/users/bddckr/received_events","type":"User","site_admin":false},"body":"This is very generic and doesn't actually need anything from this particular class, nor can I see a need to be able to override this behavior in subclasses. Shall we move it to a `static` helper class instead?\r\n\r\nWe probably have this need often and sadly Unity's overriding of the `==` and `!=` operators mean we can't use C#'s `?` operator like `component?.transform` inline instead.","created_at":"2018-05-01T18:25:35Z","updated_at":"2018-05-01T18:34:01Z","html_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core/pull/69#discussion_r185295237","pull_request_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/69","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/comments/185295237"},"html":{"href":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core/pull/69#discussion_r185295237"},"pull_request":{"href":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/69"}}},"pull_request":{"url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/69","id":185229126,"html_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core/pull/69","diff_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core/pull/69.diff","patch_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core/pull/69.patch","issue_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/issues/69","number":69,"state":"open","locked":false,"title":"feat(Follow): ability to make a transform follow another transform - fixes #2","user":{"login":"thestonefox","id":1029673,"avatar_url":"https://avatars0.githubusercontent.com/u/1029673?v=4","gravatar_id":"","url":"https://api.github.com/users/thestonefox","html_url":"https://github.com/thestonefox","followers_url":"https://api.github.com/users/thestonefox/followers","following_url":"https://api.github.com/users/thestonefox/following{/other_user}","gists_url":"https://api.github.com/users/thestonefox/gists{/gist_id}","starred_url":"https://api.github.com/users/thestonefox/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thestonefox/subscriptions","organizations_url":"https://api.github.com/users/thestonefox/orgs","repos_url":"https://api.github.com/users/thestonefox/repos","events_url":"https://api.github.com/users/thestonefox/events{/privacy}","received_events_url":"https://api.github.com/users/thestonefox/received_events","type":"User","site_admin":false},"body":"The Object Follow script enables the ability to set a source\r\ncomponent to be affected by a collection of target components based\r\non the injected modifier. The modifier included in this commit is\r\nthe TransformSourceFollowActiveTarget which will make the source\r\nfollow the first active target found.\r\n\r\nThe following is done in a generic Moment Processor that removes\r\nthe need to pepper scripts with their own Unity game loop methods\r\nsuch as Update, FixedUpdate, etc.\r\n\r\nThe Moment Processor allows defined moments to be processed at a\r\nspecified point in the Unity game loop, ensuring a single loop\r\nis dealt with and additional controls can be applied such as only\r\nprocessing the moments if the Component is active in the scene.","created_at":"2018-05-01T17:30:06Z","updated_at":"2018-05-01T18:34:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"34703bce1fbe20db0b78e4bd2e8cd66952d26909","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":915239169,"url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/labels/w_inprogress","name":"w_inprogress","color":"ffffff","default":false}],"milestone":{"url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/milestones/1","html_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core/milestone/1","labels_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/milestones/1/labels","id":3302673,"number":1,"title":"Milestone 1","description":"CameraRig identification, SDK Switching, SDK Input, Pointers, Teleporting, Policy Lists, Velocity Tracking","creator":{"login":"extendreality","id":36199993,"avatar_url":"https://avatars2.githubusercontent.com/u/36199993?v=4","gravatar_id":"","url":"https://api.github.com/users/extendreality","html_url":"https://github.com/extendreality","followers_url":"https://api.github.com/users/extendreality/followers","following_url":"https://api.github.com/users/extendreality/following{/other_user}","gists_url":"https://api.github.com/users/extendreality/gists{/gist_id}","starred_url":"https://api.github.com/users/extendreality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/extendreality/subscriptions","organizations_url":"https://api.github.com/users/extendreality/orgs","repos_url":"https://api.github.com/users/extendreality/repos","events_url":"https://api.github.com/users/extendreality/events{/privacy}","received_events_url":"https://api.github.com/users/extendreality/received_events","type":"User","site_admin":false},"open_issues":13,"closed_issues":5,"state":"open","created_at":"2018-04-26T20:46:14Z","updated_at":"2018-05-01T17:49:52Z","due_on":"2018-05-21T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/69/commits","review_comments_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/69/comments","review_comment_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/issues/69/comments","statuses_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/statuses/14c0cdc4b96768843ae9f95b733ef1f22bbfbaf3","head":{"label":"ExtendRealityLtd:feat/object-following","ref":"feat/object-following","sha":"14c0cdc4b96768843ae9f95b733ef1f22bbfbaf3","user":{"login":"ExtendRealityLtd","id":36200022,"avatar_url":"https://avatars1.githubusercontent.com/u/36200022?v=4","gravatar_id":"","url":"https://api.github.com/users/ExtendRealityLtd","html_url":"https://github.com/ExtendRealityLtd","followers_url":"https://api.github.com/users/ExtendRealityLtd/followers","following_url":"https://api.github.com/users/ExtendRealityLtd/following{/other_user}","gists_url":"https://api.github.com/users/ExtendRealityLtd/gists{/gist_id}","starred_url":"https://api.github.com/users/ExtendRealityLtd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ExtendRealityLtd/subscriptions","organizations_url":"https://api.github.com/users/ExtendRealityLtd/orgs","repos_url":"https://api.github.com/users/ExtendRealityLtd/repos","events_url":"https://api.github.com/users/ExtendRealityLtd/events{/privacy}","received_events_url":"https://api.github.com/users/ExtendRealityLtd/received_events","type":"Organization","site_admin":false},"repo":{"id":131199300,"name":"VRTK.Unity.Core","full_name":"ExtendRealityLtd/VRTK.Unity.Core","owner":{"login":"ExtendRealityLtd","id":36200022,"avatar_url":"https://avatars1.githubusercontent.com/u/36200022?v=4","gravatar_id":"","url":"https://api.github.com/users/ExtendRealityLtd","html_url":"https://github.com/ExtendRealityLtd","followers_url":"https://api.github.com/users/ExtendRealityLtd/followers","following_url":"https://api.github.com/users/ExtendRealityLtd/following{/other_user}","gists_url":"https://api.github.com/users/ExtendRealityLtd/gists{/gist_id}","starred_url":"https://api.github.com/users/ExtendRealityLtd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ExtendRealityLtd/subscriptions","organizations_url":"https://api.github.com/users/ExtendRealityLtd/orgs","repos_url":"https://api.github.com/users/ExtendRealityLtd/repos","events_url":"https://api.github.com/users/ExtendRealityLtd/events{/privacy}","received_events_url":"https://api.github.com/users/ExtendRealityLtd/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core","description":"A set of design patterns for rapidly building VR solutions in Unity3d","fork":false,"url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core","forks_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/forks","keys_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/teams","hooks_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/hooks","issue_events_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/issues/events{/number}","events_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/events","assignees_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/assignees{/user}","branches_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/branches{/branch}","tags_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/tags","blobs_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/git/refs{/sha}","trees_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/statuses/{sha}","languages_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/languages","stargazers_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/stargazers","contributors_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/contributors","subscribers_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/subscribers","subscription_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/subscription","commits_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/commits{/sha}","git_commits_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/git/commits{/sha}","comments_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/comments{/number}","issue_comment_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/issues/comments{/number}","contents_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/contents/{+path}","compare_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/merges","archive_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/downloads","issues_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/issues{/number}","pulls_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls{/number}","milestones_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/milestones{/number}","notifications_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/labels{/name}","releases_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/releases{/id}","deployments_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/deployments","created_at":"2018-04-26T19:05:37Z","updated_at":"2018-05-01T18:15:54Z","pushed_at":"2018-05-01T17:30:07Z","git_url":"git://github.com/ExtendRealityLtd/VRTK.Unity.Core.git","ssh_url":"git@github.com:ExtendRealityLtd/VRTK.Unity.Core.git","clone_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core.git","svn_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core","homepage":null,"size":36,"stargazers_count":15,"watchers_count":15,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":64,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":0,"open_issues":64,"watchers":15,"default_branch":"master"}},"base":{"label":"ExtendRealityLtd:master","ref":"master","sha":"836934e56c750a46073d3aad00851b006d658ace","user":{"login":"ExtendRealityLtd","id":36200022,"avatar_url":"https://avatars1.githubusercontent.com/u/36200022?v=4","gravatar_id":"","url":"https://api.github.com/users/ExtendRealityLtd","html_url":"https://github.com/ExtendRealityLtd","followers_url":"https://api.github.com/users/ExtendRealityLtd/followers","following_url":"https://api.github.com/users/ExtendRealityLtd/following{/other_user}","gists_url":"https://api.github.com/users/ExtendRealityLtd/gists{/gist_id}","starred_url":"https://api.github.com/users/ExtendRealityLtd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ExtendRealityLtd/subscriptions","organizations_url":"https://api.github.com/users/ExtendRealityLtd/orgs","repos_url":"https://api.github.com/users/ExtendRealityLtd/repos","events_url":"https://api.github.com/users/ExtendRealityLtd/events{/privacy}","received_events_url":"https://api.github.com/users/ExtendRealityLtd/received_events","type":"Organization","site_admin":false},"repo":{"id":131199300,"name":"VRTK.Unity.Core","full_name":"ExtendRealityLtd/VRTK.Unity.Core","owner":{"login":"ExtendRealityLtd","id":36200022,"avatar_url":"https://avatars1.githubusercontent.com/u/36200022?v=4","gravatar_id":"","url":"https://api.github.com/users/ExtendRealityLtd","html_url":"https://github.com/ExtendRealityLtd","followers_url":"https://api.github.com/users/ExtendRealityLtd/followers","following_url":"https://api.github.com/users/ExtendRealityLtd/following{/other_user}","gists_url":"https://api.github.com/users/ExtendRealityLtd/gists{/gist_id}","starred_url":"https://api.github.com/users/ExtendRealityLtd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ExtendRealityLtd/subscriptions","organizations_url":"https://api.github.com/users/ExtendRealityLtd/orgs","repos_url":"https://api.github.com/users/ExtendRealityLtd/repos","events_url":"https://api.github.com/users/ExtendRealityLtd/events{/privacy}","received_events_url":"https://api.github.com/users/ExtendRealityLtd/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core","description":"A set of design patterns for rapidly building VR solutions in Unity3d","fork":false,"url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core","forks_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/forks","keys_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/teams","hooks_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/hooks","issue_events_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/issues/events{/number}","events_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/events","assignees_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/assignees{/user}","branches_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/branches{/branch}","tags_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/tags","blobs_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/git/refs{/sha}","trees_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/statuses/{sha}","languages_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/languages","stargazers_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/stargazers","contributors_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/contributors","subscribers_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/subscribers","subscription_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/subscription","commits_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/commits{/sha}","git_commits_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/git/commits{/sha}","comments_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/comments{/number}","issue_comment_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/issues/comments{/number}","contents_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/contents/{+path}","compare_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/merges","archive_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/downloads","issues_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/issues{/number}","pulls_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls{/number}","milestones_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/milestones{/number}","notifications_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/labels{/name}","releases_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/releases{/id}","deployments_url":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/deployments","created_at":"2018-04-26T19:05:37Z","updated_at":"2018-05-01T18:15:54Z","pushed_at":"2018-05-01T17:30:07Z","git_url":"git://github.com/ExtendRealityLtd/VRTK.Unity.Core.git","ssh_url":"git@github.com:ExtendRealityLtd/VRTK.Unity.Core.git","clone_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core.git","svn_url":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core","homepage":null,"size":36,"stargazers_count":15,"watchers_count":15,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":64,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":0,"open_issues":64,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/69"},"html":{"href":"https://github.com/ExtendRealityLtd/VRTK.Unity.Core/pull/69"},"issue":{"href":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/issues/69"},"comments":{"href":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/issues/69/comments"},"review_comments":{"href":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/69/comments"},"review_comment":{"href":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/pulls/69/commits"},"statuses":{"href":"https://api.github.com/repos/ExtendRealityLtd/VRTK.Unity.Core/statuses/14c0cdc4b96768843ae9f95b733ef1f22bbfbaf3"}},"author_association":"OWNER"}}
{"actor":{"display_login":"bddckr"}}