From e55b3831ca5fff6dfc232b047ee70dca5d11a216 Mon Sep 17 00:00:00 2001
From: Kevin Lee <kevin@infinite-lee.com>
Date: Tue, 24 Apr 2018 18:51:38 -0700
Subject: [PATCH] Adding support for windows mixed reality controllers

---
 src/components/hand-controls2.js |  5 +++++
 src/input-mappings.js            | 25 +++++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/src/components/hand-controls2.js b/src/components/hand-controls2.js
index af86cd5da..f3ce63691 100644
--- a/src/components/hand-controls2.js
+++ b/src/components/hand-controls2.js
@@ -18,6 +18,11 @@ const CONTROLLER_OFFSETS = {
     new THREE.Quaternion().setFromEuler(new THREE.Euler(-40 * THREE.Math.DEG2RAD, 0, 0)),
     new THREE.Vector3(1, 1, 1)
   ),
+  "windows-motion-controls": new THREE.Matrix4().compose(
+    new THREE.Vector3(0, -0.017, 0.13),
+    new THREE.Quaternion().setFromEuler(new THREE.Euler(-40 * THREE.Math.DEG2RAD, 0, 0)),
+    new THREE.Vector3(1, 1, 1)
+  ),
   "daydream-controls": new THREE.Matrix4().makeTranslation(0, 0, -0.04),
   "gearvr-controls": new THREE.Matrix4()
 };
diff --git a/src/input-mappings.js b/src/input-mappings.js
index a5c399937..36a1fdb0e 100644
--- a/src/input-mappings.js
+++ b/src/input-mappings.js
@@ -26,6 +26,9 @@ const config = {
       "vive-controls": {
         trackpad: "trackpad_dpad4"
       },
+      "windows-motion-controls": {
+        joystick: "joystick_dpad4"
+      },
       "daydream-controls": {
         trackpad: "trackpad_dpad4"
       },
@@ -80,6 +83,28 @@ const config = {
         abuttondown: "action_primary_down",
         abuttonup: "action_primary_up"
       },
+      "windows-motion-controls": {
+        joystick_dpad4_west: {
+          right: "snap_rotate_left"
+        },
+        joystick_dpad4_east: {
+          right: "snap_rotate_right"
+        },
+        "trackpad.pressedmove": { left: "move" },
+        joystick_dpad4_pressed_west_down: { right: "snap_rotate_left" },
+        joystick_dpad4_pressed_east_down: { right: "snap_rotate_right" },
+        trackpaddown: {right: "action_primary_down"},
+        trackpadup: { right: "action_primary_up" },
+        menudown: "thumb_down",
+        menuup: "thumb_up",
+        gripdown: ["action_grab", "middle_ring_pinky_down"],
+        gripup: ["action_release", "middle_ring_pinky_up"],
+        trackpadtouchstart: "thumb_down",
+        trackpadtouchend: "thumb_up",
+        triggerdown: ["action_grab", "index_down"],
+        triggerup: ["action_release", "index_up"],
+        "axismove.reverseY": { left: "move" },
+      },
       "daydream-controls": {
         trackpad_dpad4_pressed_west_down: "snap_rotate_left",
         trackpad_dpad4_pressed_east_down: "snap_rotate_right",
-- 
GitLab