{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/comments/86923567","pull_request_review_id":7556472,"id":86923567,"diff_hunk":"@@ -1,6 +1,32 @@\n ## [Input]()\n Scripts that leverage the HoloLens input features namely Gaze, Gesture and Voice.\n \n+This contains a fully-featured **input module**, which allows you to handle various types of input and send them to any game object being currently gazed at, or any fallback object. It also includes a **cursor** similar to the HoloLens shell cursor that fully leverages the Unity's animation system.\n+\n+### [Input Module Design](InputModuleDesign)\n+The input module is designed to be extensible: it could support various input mechanisms and various types of gazers.\n+\n+Each input source (hands, gestures, others) implement a **IInputSource** interface. The interface defines various events that the input sources can trigger. The input sources register themselves with the InputManager, whose role it is to forward input to the appropriate game objects. Input sources can be dynamically enabled / disabled as necessary, and new input sources can be created to support different input devices.\n+\n+Game objects that want to consume input events can implement one or many **input interfaces**, such as:\n+\n+- **IFocusable** for focus enter and exit. The focus can be triggered by the user's gaze or any other gaze source.\n+- **IHoldHandle** for the Windows hold gesture.\n+- **IInputHandler** for source up, down and clicked. The source can be a hand that tapped, a clicker that was pressed, etc.\n+- **IManipulationHandler** for the Windows manipulation gesture.\n+- **INavigationnHandler** for the Windows navigation gesture.\n+- **ISourceStateHandler** for the source detected and source lost events.","path":"Assets/HoloToolkit/Input/README.md","position":18,"original_position":18,"commit_id":"1e20486af5622e8a89fd24d4e4e4842fdc5dec89","original_commit_id":"1e20486af5622e8a89fd24d4e4e4842fdc5dec89","user":{"login":"maxouellet","id":8505814,"avatar_url":"https://avatars.githubusercontent.com/u/8505814?v=3","gravatar_id":"","url":"https://api.github.com/users/maxouellet","html_url":"https://github.com/maxouellet","followers_url":"https://api.github.com/users/maxouellet/followers","following_url":"https://api.github.com/users/maxouellet/following{/other_user}","gists_url":"https://api.github.com/users/maxouellet/gists{/gist_id}","starred_url":"https://api.github.com/users/maxouellet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxouellet/subscriptions","organizations_url":"https://api.github.com/users/maxouellet/orgs","repos_url":"https://api.github.com/users/maxouellet/repos","events_url":"https://api.github.com/users/maxouellet/events{/privacy}","received_events_url":"https://api.github.com/users/maxouellet/received_events","type":"User","site_admin":false},"body":"You don't need a SourceMoved event, because at any point in time, you can query the IInputSource (that you receive as part of the event data for any of the events) for its position and/or orientation, if available. HandDraggable gives a good example of that. This allows the event system to stay relatively lightweight in terms of number of events sent.","created_at":"2016-11-08T04:54:42Z","updated_at":"2016-11-08T04:54:42Z","html_url":"https://github.com/Microsoft/HoloToolkit-Unity/pull/319#discussion_r86923567","pull_request_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/319","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/comments/86923567"},"html":{"href":"https://github.com/Microsoft/HoloToolkit-Unity/pull/319#discussion_r86923567"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/319"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/319","id":92264118,"html_url":"https://github.com/Microsoft/HoloToolkit-Unity/pull/319","diff_url":"https://github.com/Microsoft/HoloToolkit-Unity/pull/319.diff","patch_url":"https://github.com/Microsoft/HoloToolkit-Unity/pull/319.patch","issue_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/issues/319","number":319,"state":"open","locked":false,"title":"Extensible input module + new cursor","user":{"login":"maxouellet","id":8505814,"avatar_url":"https://avatars.githubusercontent.com/u/8505814?v=3","gravatar_id":"","url":"https://api.github.com/users/maxouellet","html_url":"https://github.com/maxouellet","followers_url":"https://api.github.com/users/maxouellet/followers","following_url":"https://api.github.com/users/maxouellet/following{/other_user}","gists_url":"https://api.github.com/users/maxouellet/gists{/gist_id}","starred_url":"https://api.github.com/users/maxouellet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxouellet/subscriptions","organizations_url":"https://api.github.com/users/maxouellet/orgs","repos_url":"https://api.github.com/users/maxouellet/repos","events_url":"https://api.github.com/users/maxouellet/events{/privacy}","received_events_url":"https://api.github.com/users/maxouellet/received_events","type":"User","site_admin":false},"body":"These changes add the new HoloToolkit Input Module and the new cursor implementation. Documentation for the new input scripts has been updated, and all existing test scenes and prefabs have been fixed so that their behavior remains the same. This pull request is targeting the ExtensibleInputModule branch, so that we can stabilize in there as necessary and give people some time to take a look at the changes before they go to master.\r\n\r\nThe main changes are the following:\r\n\r\n- New extensible input module, as discussed [here](https://github.com/Microsoft/HoloToolkit-Unity/issues/277). The old GesturesManager, HandsManager and GazeManager have been removed, since they are fully replaced by the new scripts. Existing scripts that dependend on those have been modified to use the new input module.\r\n\r\n- New extensible cursor implementation, as described by @paseb [here](https://github.com/Microsoft/HoloToolkit-Unity/issues/277). This adds a new Cursor prefab (DefaultCursor). The existing cursors prefabs have been modified so that they use the new cursor scripts, and the old cursor scripts have been removed.\r\n\r\n- Singleton has been modified to be more streamlined and predictable. Existing Singletons have been adjusted accordingly. The main breaking change here is that singleton classes that implement Awake or OnDestroy should override them, and make sure to call base.Awake() and base.OnDestroy().","created_at":"2016-11-04T00:12:17Z","updated_at":"2016-11-08T04:54:42Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a8f7f5fc2c9718a7cb6a2297bfee7c06a3aa5c1a","assignee":{"login":"NeerajW","id":13281538,"avatar_url":"https://avatars.githubusercontent.com/u/13281538?v=3","gravatar_id":"","url":"https://api.github.com/users/NeerajW","html_url":"https://github.com/NeerajW","followers_url":"https://api.github.com/users/NeerajW/followers","following_url":"https://api.github.com/users/NeerajW/following{/other_user}","gists_url":"https://api.github.com/users/NeerajW/gists{/gist_id}","starred_url":"https://api.github.com/users/NeerajW/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NeerajW/subscriptions","organizations_url":"https://api.github.com/users/NeerajW/orgs","repos_url":"https://api.github.com/users/NeerajW/repos","events_url":"https://api.github.com/users/NeerajW/events{/privacy}","received_events_url":"https://api.github.com/users/NeerajW/received_events","type":"User","site_admin":false},"assignees":[{"login":"NeerajW","id":13281538,"avatar_url":"https://avatars.githubusercontent.com/u/13281538?v=3","gravatar_id":"","url":"https://api.github.com/users/NeerajW","html_url":"https://github.com/NeerajW","followers_url":"https://api.github.com/users/NeerajW/followers","following_url":"https://api.github.com/users/NeerajW/following{/other_user}","gists_url":"https://api.github.com/users/NeerajW/gists{/gist_id}","starred_url":"https://api.github.com/users/NeerajW/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NeerajW/subscriptions","organizations_url":"https://api.github.com/users/NeerajW/orgs","repos_url":"https://api.github.com/users/NeerajW/repos","events_url":"https://api.github.com/users/NeerajW/events{/privacy}","received_events_url":"https://api.github.com/users/NeerajW/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/319/commits","review_comments_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/319/comments","review_comment_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/issues/319/comments","statuses_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/statuses/1e20486af5622e8a89fd24d4e4e4842fdc5dec89","head":{"label":"maxouellet:ExtensibleInputModule","ref":"ExtensibleInputModule","sha":"1e20486af5622e8a89fd24d4e4e4842fdc5dec89","user":{"login":"maxouellet","id":8505814,"avatar_url":"https://avatars.githubusercontent.com/u/8505814?v=3","gravatar_id":"","url":"https://api.github.com/users/maxouellet","html_url":"https://github.com/maxouellet","followers_url":"https://api.github.com/users/maxouellet/followers","following_url":"https://api.github.com/users/maxouellet/following{/other_user}","gists_url":"https://api.github.com/users/maxouellet/gists{/gist_id}","starred_url":"https://api.github.com/users/maxouellet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxouellet/subscriptions","organizations_url":"https://api.github.com/users/maxouellet/orgs","repos_url":"https://api.github.com/users/maxouellet/repos","events_url":"https://api.github.com/users/maxouellet/events{/privacy}","received_events_url":"https://api.github.com/users/maxouellet/received_events","type":"User","site_admin":false},"repo":{"id":56109109,"name":"HoloToolkit-Unity","full_name":"maxouellet/HoloToolkit-Unity","owner":{"login":"maxouellet","id":8505814,"avatar_url":"https://avatars.githubusercontent.com/u/8505814?v=3","gravatar_id":"","url":"https://api.github.com/users/maxouellet","html_url":"https://github.com/maxouellet","followers_url":"https://api.github.com/users/maxouellet/followers","following_url":"https://api.github.com/users/maxouellet/following{/other_user}","gists_url":"https://api.github.com/users/maxouellet/gists{/gist_id}","starred_url":"https://api.github.com/users/maxouellet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxouellet/subscriptions","organizations_url":"https://api.github.com/users/maxouellet/orgs","repos_url":"https://api.github.com/users/maxouellet/repos","events_url":"https://api.github.com/users/maxouellet/events{/privacy}","received_events_url":"https://api.github.com/users/maxouellet/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/maxouellet/HoloToolkit-Unity","description":"This is effectively part of the existing HoloToolkit, but is the repo that will contain all Unity specific components.","fork":true,"url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity","forks_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/forks","keys_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/keys{/key_id}","collaborators_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/teams","hooks_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/hooks","issue_events_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/issues/events{/number}","events_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/events","assignees_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/assignees{/user}","branches_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/branches{/branch}","tags_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/tags","blobs_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/git/refs{/sha}","trees_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/git/trees{/sha}","statuses_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/statuses/{sha}","languages_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/languages","stargazers_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/stargazers","contributors_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/contributors","subscribers_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/subscribers","subscription_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/subscription","commits_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/commits{/sha}","git_commits_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/git/commits{/sha}","comments_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/comments{/number}","issue_comment_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/issues/comments{/number}","contents_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/contents/{+path}","compare_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/compare/{base}...{head}","merges_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/merges","archive_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/downloads","issues_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/issues{/number}","pulls_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/pulls{/number}","milestones_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/milestones{/number}","notifications_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/labels{/name}","releases_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/releases{/id}","deployments_url":"https://api.github.com/repos/maxouellet/HoloToolkit-Unity/deployments","created_at":"2016-04-13T00:54:25Z","updated_at":"2016-04-13T00:54:27Z","pushed_at":"2016-11-04T19:52:21Z","git_url":"git://github.com/maxouellet/HoloToolkit-Unity.git","ssh_url":"git@github.com:maxouellet/HoloToolkit-Unity.git","clone_url":"https://github.com/maxouellet/HoloToolkit-Unity.git","svn_url":"https://github.com/maxouellet/HoloToolkit-Unity","homepage":"","size":48523,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Microsoft:ExtensibleInputModule","ref":"ExtensibleInputModule","sha":"260811457ebad82cf805ba510b42963d3ea412e4","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":50605426,"name":"HoloToolkit-Unity","full_name":"Microsoft/HoloToolkit-Unity","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/HoloToolkit-Unity","description":"This is effectively part of the existing HoloToolkit, but is the repo that will contain all Unity specific components.","fork":false,"url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity","forks_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/forks","keys_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/teams","hooks_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/events","assignees_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/tags","blobs_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/languages","stargazers_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/subscription","commits_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/merges","archive_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/downloads","issues_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/deployments","created_at":"2016-01-28T18:54:58Z","updated_at":"2016-11-07T15:54:00Z","pushed_at":"2016-11-08T02:14:11Z","git_url":"git://github.com/Microsoft/HoloToolkit-Unity.git","ssh_url":"git@github.com:Microsoft/HoloToolkit-Unity.git","clone_url":"https://github.com/Microsoft/HoloToolkit-Unity.git","svn_url":"https://github.com/Microsoft/HoloToolkit-Unity","homepage":"","size":50864,"stargazers_count":361,"watchers_count":361,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":205,"mirror_url":null,"open_issues_count":46,"forks":205,"open_issues":46,"watchers":361,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/319"},"html":{"href":"https://github.com/Microsoft/HoloToolkit-Unity/pull/319"},"issue":{"href":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/issues/319"},"comments":{"href":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/issues/319/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/319/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/pulls/319/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/HoloToolkit-Unity/statuses/1e20486af5622e8a89fd24d4e4e4842fdc5dec89"}}}}
{"actor":{"display_login":"maxouellet"}}