Skip to content
Snippets Groups Projects
Commit c9065e12 authored by johnshaughnessy's avatar johnshaughnessy
Browse files

Normalize characterAcceleration for keyboard

parent d8933b4b
No related branches found
No related tags found
No related merge requests found
......@@ -65,12 +65,12 @@ export const keyboardMouseUserBindings = {
second: arrows_vec2
},
dest: { value: keyboardCharacterAcceleration },
xform: xforms.add_vec2
xform: xforms.max_vec2
},
{
src: { value: keyboardCharacterAcceleration },
dest: { value: paths.actions.characterAcceleration },
xform: xforms.copy
xform: xforms.normalize_vec2
},
{
src: { value: paths.device.keyboard.key("shift") },
......
......@@ -47,6 +47,7 @@ const leftJoyY = `${name}left/joyY`;
const leftJoyYCursorMod = `${name}left/joyYCursorMod`;
const oculusTouchCharacterAcceleration = `${name}characterAcceleration`;
const keyboardCharacterAcceleration = "/var/keyboard/characterAcceleration";
const characterAcceleration = "/var/oculus-touch/nonNormalizedCharacterAcceleration";
const wasd_vec2 = "/var/keyboard/wasd_vec2";
const arrows_vec2 = "/var/keyboard/arrows_vec2";
const keyboardBoost = "/var/keyboard-oculus/boost";
......@@ -252,7 +253,7 @@ export const oculusTouchUserBindings = {
second: arrows_vec2
},
dest: { value: keyboardCharacterAcceleration },
xform: xforms.add_vec2
xform: xforms.max_vec2
},
{
src: {
......@@ -260,9 +261,14 @@ export const oculusTouchUserBindings = {
second: keyboardCharacterAcceleration
},
dest: {
value: paths.actions.characterAcceleration
value: characterAcceleration
},
xform: xforms.add_vec2
xform: xforms.max_vec2
},
{
src: { value: characterAcceleration },
dest: { value: paths.actions.characterAcceleration },
xform: xforms.normalize_vec2
},
{
src: { value: paths.device.keyboard.key("shift") },
......
......@@ -26,6 +26,7 @@ const lTriggerRisingGrab = v("right/trigger/rising/grab");
const lGripRisingGrab = v("right/grab/rising/grab");
const lTouchpadRising = v("left/touchpad/rising");
const lCharacterAcceleration = v("left/characterAcceleration");
const characterAcceleration = v("nonNormalizedCharacterAcceleration");
const lGripFalling = v("left/grip/falling");
const lGripRising = v("left/grip/rising");
const leftBoost = v("left/boost");
......@@ -342,7 +343,7 @@ export const viveUserBindings = {
second: arrows_vec2
},
dest: { value: keyboardCharacterAcceleration },
xform: xforms.add_vec2
xform: xforms.max_vec2
},
{
src: {
......@@ -350,9 +351,14 @@ export const viveUserBindings = {
second: keyboardCharacterAcceleration
},
dest: {
value: paths.actions.characterAcceleration
value: characterAcceleration
},
xform: xforms.add_vec2
xform: xforms.max_vec2
},
{
src: { value: characterAcceleration },
dest: { value: paths.actions.characterAcceleration },
xform: xforms.normalize_vec2
},
{
src: { value: paths.device.keyboard.key("shift") },
......
......@@ -104,6 +104,29 @@ export const xforms = {
frame[dest.value] = first;
}
},
max_vec2: function(frame, src, dest) {
const first = frame[src.first];
const second = frame[src.second];
if (first && second) {
frame[dest.value] =
first[0] * first[0] + first[1] * first[1] > second[0] * second[0] + second[1] * second[1] ? first : second;
} else if (second) {
frame[dest.value] = second;
} else if (first) {
frame[dest.value] = first;
}
},
normalize_vec2: function(frame, src, dest) {
const vec2 = frame[src.value];
if (vec2) {
if (vec2[0] === 0 && vec2[0] === 0) {
frame[dest.value] = vec2;
} else {
const l = Math.sqrt(vec2[0] * vec2[0] + vec2[1] * vec2[1]);
frame[dest.value] = [vec2[0] / l, vec2[1] / l];
}
}
},
any: function(frame, src, dest) {
for (const path in src) {
if (frame[src[path]]) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment